web-dev-qa-db-ja.com

LESSでインラインJavaScriptを有効にする

Lessファイルでインラインjsを使用したいのですが、次のメッセージが表示されます。

インラインJavaScriptは有効になっていません。オプションで設定されていますか?

どうすればそれを有効にできますか?

16
pharkasbence

私は同じ問題を抱えていました、より少ないローダーで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」を使用する必要があります。

36
Davide Carpini

@ 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"を使用した実装で機能します...マイレージは異なる場合があります

1
rwcorbett

セキュリティ上の理由から、インラインJavaScriptはデフォルトで無効になっています。何が起こっていたかというと、オンラインジェネレーターは、Less変数の構成を許可し、その変数を直接解釈することもありました。

これはコードインジェクションに対して脆弱でした。つまり、サーバー上で直接実行されるLessスタイルシートにJavaScriptをインジェクトでき​​ました。

このため、インラインJavaScriptは廃止され(3.xではデフォルトでfalseに設定されています)、その代わりに@plugin構文が使用され、適切なJSプラグインが使用されます。 参照:---(http://lesscss.org/features/#plugin-atrules-feature

はい、コンパイルオプションをjavascriptEnabled: trueに設定できますが、これはスタイルシートのベストプラクティスとは見なされません。一般に、スタイルシートにはJSを含めないでください。プラグインを使用することをお勧めします。

1
Matthew Dean

Lessの最新バージョンを使用すると、この問題が発生しました。その後、バージョン2.7に切り替えて修正しました。

1
Anderson Sousa