我有一个gulpfile,我可以从中启动webpack捆绑。 webpack配置定义了使用process.env.NODE_ENV
的别名,如下所示
.
.
resolve: {
modulesDirectories: ["node_modules", "js", "jsx"],
extensions: ["", ".js", ".jsx"],
alias: {
config: path.join(__dirname, ('config.' + process.env.NODE_ENV + '.js'))
}
}..
在gulpfile中,我有两个按顺序执行的任务
set-env
使用gulp-env
设置环境变量,如下所示
gulpEnv({
vars: {
NODE_ENV: 'dev'
}
});
webpack
任务取决于上一个任务,仅在第一个任务完成时执行
这里变量似乎没有得到正确的注入。文件名将解析为config.undefined.js
。我正在做的事情有什么问题吗?
答案 0 :(得分:1)
我改变了我的做法
<强>的WebPack 强>
var NODE_ENV = process.env.NODE_ENV;
var config = {
.
.
resolve: {
modulesDirectories: ["node_modules", "js", "jsx"],
extensions: ["", ".js", ".jsx"],
alias: {
//<envt> will be injected by gulp
config: config: path.join(__dirname, ('config.<envt>.js'))
}
}
.
.
.
}
//If webpack is directly invoked with NODE_ENV, replacement will happen here
if (NODE_ENV) {
config['resolve']['alias']['config'] = config['resolve']['alias']['config'].replace(/<envt>/, NODE_ENV);
}
module.exports = config;
<强>咕嘟咕嘟强>
set-env
内,而不是使用gulp-env
进行设置,我只需设置一个全局变量NODE_ENV='dev'
webpack
内部,我正在webpackConfig['resolve']['alias']['config'] = webpackConfig['resolve']['alias']['config'].replace(/<envt>/, NODE_ENV);
这对我有用