Lessファイルでインラインjsを使用したいのですが、次のメッセージが表示されます。
インラインJavaScriptは有効になっていません。オプションで設定されていますか?
どうすればそれを有効にできますか?
私は同じ問題を抱えていました、より少ないローダーでwebpackを使用しました、より少ないローダー設定でjavascriptオプションを追加する必要がありました:
{
test: /\.less$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "less-loader",
options: {
javascriptEnabled: true
}
}]
}
私は以下のコンパイラのソースコードで見つけました: https://github.com/less/less.js/blob/3.x/bin/lessc
この方法でjs lessオプションを解析すること:
case 'js':
options.javascriptEnabled = true;
break;
case 'no-js':
console.error('The "--no-js" argument is deprecated, as inline JavaScript ' +
'is disabled by default. Use "--js" to enable inline JavaScript (not recommended).');
break;
したがって、おそらくJavaScriptを有効にするには、静的コンパイル(コマンドライン)で「--js」を、動的コンパイル(webpack loaderなど)で「javascriptEnabled:true」を使用する必要があります。
@ matthew-deanと@ davide-carpiniが言ったことはすべてそうです...しかし、Grunt-LESSコードスニペットを探している人はここに行きます:
less: {
dev: {
options: {
paths: ['Content/less'],
plugins: [
new(require('less-plugin-autoprefix'))({
browsers: ['last 2 versions']
}),
new(require('less-plugin-clean-css'))({
sourceMap: true,
advanced: true
})
],
relativeUrls: true,
javascriptEnabled: true
},
files: {
'Content/less/site.css': 'Content/less/site.less'
}
}
},
これは"grunt-contrib-less": "^2.0.0"
を使用した実装で機能します...マイレージは異なる場合があります
セキュリティ上の理由から、インラインJavaScriptはデフォルトで無効になっています。何が起こっていたかというと、オンラインジェネレーターは、Less変数の構成を許可し、その変数を直接解釈することもありました。
これはコードインジェクションに対して脆弱でした。つまり、サーバー上で直接実行されるLessスタイルシートにJavaScriptをインジェクトできました。
このため、インラインJavaScriptは廃止され(3.xではデフォルトでfalseに設定されています)、その代わりに@plugin
構文が使用され、適切なJSプラグインが使用されます。 参照:---(http://lesscss.org/features/#plugin-atrules-feature )
はい、コンパイルオプションをjavascriptEnabled: true
に設定できますが、これはスタイルシートのベストプラクティスとは見なされません。一般に、スタイルシートにはJSを含めないでください。プラグインを使用することをお勧めします。
Lessの最新バージョンを使用すると、この問題が発生しました。その後、バージョン2.7に切り替えて修正しました。