Dim*_*man 5 sass webpack libsass webpack-style-loader sass-loader
我正在尝试将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")
}]
}
Run Code Online (Sandbox Code Playgroud)
我尝试将数据参数传递给加载程序,但没有任何效果。将不胜感激!
这是直接来自sass-loader repo的代码。
webpack.config.js
...
sassLoader: {
data: "$env: " + process.env.NODE_ENV + ";"
}
...
查看了sass-loader
源代码,它似乎不支持任何允许您插入变量的选项——所以这种方式是不可能的。
我不认为你能够像这样将 env/build-time 变量“插入”到你的 Sass 中,但是你可以通过创建多个 Sass 文件并要求你想要的文件(来自你的 js 源)来获得相同的行为)基于条件。请注意,webpack 解析代码中逻辑的能力有限,但是,如果您想要require
条件语句中的某些内容,则条件语句必须检查布尔值才能正常工作。因此,如果您这样做,if (NODE_ENV === 'production') {...} else {...}
webpack 将处理所有这些条件下的所有需求。如果你做了类似的事情if (IS_PROD_ENV) {...} else {...}
,其中条件值为布尔值,webpack 将遵循条件逻辑并仅处理正确的require
. 该UglifyJS
插件将为您删除不需要的条件分支。
归档时间: |
|
查看次数: |
1881 次 |
最近记录: |