是否可以使用Webpack&;将NODE_ENV param注入sass文件;sass装载机?
我正在尝试将NODE_ENV注入到一个sass文件中,这样我就可以为dev/prod ENV提供不同的输出,并且有一个sass函数,其中有一个条件:是否可以使用Webpack&;将NODE_ENV param注入sass文件;sass装载机?,sass,webpack,libsass,webpack-style-loader,sass-loader,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.r
@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")
}]
}
我尝试将一个数据参数传递给加载程序,但没有任何效果。
非常感谢您的帮助 查看了
sass加载程序
源代码,它似乎不支持任何允许您插入变量的选项,因此不可能采用这种方式
我不认为您能够像这样在Sass中“插入”一个env/build-time变量,但是您可以通过创建多个Sass文件并根据条件要求一个您想要的(来自js源代码)来获得相同的行为。请注意,webpack解析代码中逻辑的能力有限,但是--如果您想
要求条件中的某些内容,则条件必须检查布尔值才能工作。因此,如果您执行if(NODE_ENV==='production'){…}否则{…}
webpack将在所有这些条件下处理所有要求。如果您执行了类似于If(IS_PROD_ENV){…}else{…}
的操作,其中条件值是布尔值,则webpack将遵循条件逻辑,只处理正确的要求
。UglifyJS
插件将为您删除不必要的条件分支。这是直接从sass加载程序repo中获得的代码
webpack.config.js
。。。
萨斯洛德:{
数据:“$env:+process.env.NODE_env+”;”
}
...
您可以尝试sass加载程序的prependData
选项
prependData
还接受一个函数
,该函数接收loaderContext
,您可以使用该函数使其更具动态性。一旦你实现了这一点;你可以:
@if ($env == 'prod') {}
更多信息请点击此处:
祝你好运…我能在没有弹出我的应用程序的情况下完成此操作吗?嗨@FabianoLothor,你能回答你的问题吗?使用create react应用程序我无法手动配置webpack,它是预配置的。只有当我决定退出应用程序时,我才能设置网页包。@FabianoLothor,你可以试试。参考博客:。祝你好运…我可以在不弹出应用程序的情况下完成此操作吗?
@if ($env == 'prod') {}