8

私は NODE_ENV を sass ファイルに挿入しようとしているので、dev/prod env に対して異なる出力を持つことができ、その中にそのような条件を持つ sass 関数を持つことができます: @if (NODE_ENV == 'prod') {}

私のwebpack.configは次のようになります:

module: {
    loaders: [{
        test: /\.scss$/,
        loader: "style-loader!raw-loader!sass-loader?includePaths[]=" + path.resolve(__dirname, "./node_modules/compass-mixins/lib")
    }]
}

ローダーにデータ パラメータを渡そうとしましたが、うまくいきませんでした。どんな助けにも感謝します!

4

3 に答える 3

7

これは、sass-loader リポジトリから直接取得したコードです。

webpack.config.js

... sassLoader: { data: "$env: " + process.env.NODE_ENV + ";" } ...

于 2016-04-21T21:50:19.123 に答える
0

ソースを調べたところsass-loader、変数を挿入できるオプションがサポートされていないようです。したがって、この方法では不可能です。

このように env/build-time 変数を Sass に「挿入」することはできないと思いますが、複数の Sass ファイルを作成し、必要なファイルを要求することで同じ動作を得ることができます (js ソースから) 条件に基づいています。ただし、webpack はコード内のロジックを解析する機能が限られていることに注意してください。require条件内で何かを実行したい場合、条件が動作するにはブール値をチェックする必要があります。したがって、if (NODE_ENV === 'production') {...} else {...}webpack を実行すると、これらすべての条件ですべての要件が処理されます。条件値がブール値であるようなことをした場合if (IS_PROD_ENV) {...} else {...}、webpack は条件付きロジックに従い、正しい のみを処理しますrequire。プラグインはUglifyJS、不要な条件分岐を削除します。

于 2016-03-02T16:26:17.810 に答える