Node.js 如何将process.env.NODE_env从Gulp传递到Webpack?

Node.js 如何将process.env.NODE_env从Gulp传递到Webpack?,node.js,gulp,webpack,environment-variables,Node.js,Gulp,Webpack,Environment Variables,我有一个gulpfile,在这里我创建了一个webpackDevServer来实时更新我的js代码。我在gulpfile中设置了一个process.env.NODE\u env变量,但出于某种原因,webpack没有看到它-它未定义 下面是我的gulpfile.js的相关部分: gulp.task("watch", ["_set-env:dev"], function() { // modify default webpack configuration for Development

我有一个gulpfile,在这里我创建了一个webpackDevServer来实时更新我的js代码。我在gulpfile中设置了一个
process.env.NODE\u env
变量,但出于某种原因,webpack没有看到它-它未定义

下面是我的
gulpfile.js
的相关部分:

gulp.task("watch", ["_set-env:dev"], function() {
    // modify default webpack configuration for Development Server
    var webpackDevConfig = Object.create(webpackConfig);
    webpackDevConfig.devtool = "eval";
    webpackDevConfig.debug = "true";

    new webpackDevServer(webpack(webpackDevConfig), {
        proxy: {
            "/api/*": {target: "http://localhost:8000", secure: false},
            "/static/*": {target: "http://localhost:8000", secure: false},
            "/media/*": {target: "http://localhost:8000", secure: false}
        }
    }).listen(8001, "localhost", function (err) {
        if (err) throw new gutil.PluginError("webpack-dev-server", err);
        gutil.log("[webpack-dev-server]", "http://localhost:8001" + webpackDevConfig.output.publicPath);
    });
});

gulp.task("_set-env:dev", function() {
    gutil.log("set-env", "ENV => development");
    genv({
        vars: {
            NODE_ENV: "development"
        }
    });
});
然后在webpack中检查其值,但未定义:

const webpack = require("webpack");
const path = require("path");

const HtmlWebpackPlugin = require("html-webpack-plugin");
const ExtractTextPlugin = require("extract-text-webpack-plugin");
...
const environmentsFile = path.join(__dirname, "/environments.json");
const nodeModulesPath = path.join(__dirname, "/node_modules");
const bowerComponentsPath = path.join(__dirname, "/bower_components");

console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
console.log(process.env.NODE_ENV);

const webpackConfig = {
    entry: {
        app: ["app.js"]
    },
在控制台上,我看到:

$ gulp watch
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
undefined
[22:28:34] Using gulpfile ~/Documents/frontend/gulpfile.js
[22:28:34] Starting '_set-env:dev'...
[22:28:34] set-env ENV => development
[22:28:34] Finished '_set-env:dev' after 7.63 ms
[22:28:34] Starting 'watch'...

你可能有类似这样的东西靠近你的gulpfile顶部:

var webpackConfig = require('./webpack.config.js');
这意味着您的Web包配置在
\u set-env:dev
任务运行之前会进行评估。记住:gulpfile只定义任务。任务本身只有在整个gulpfile被评估之后才会运行

您需要在
\u set-env:dev
任务运行后,通过删除gulpfile顶部的行,并将
require()
直接放入
监视任务中,将网页配置推迟到

gulp.task("watch", ["_set-env:dev"], function() {
    // modify default webpack configuration for Development Server
    var webpackDevConfig = Object.create(require('./webpack.config.js'));

你可能有类似这样的东西靠近你的gulpfile顶部:

var webpackConfig = require('./webpack.config.js');
这意味着您的Web包配置在
\u set-env:dev
任务运行之前会进行评估。记住:gulpfile只定义任务。任务本身只有在整个gulpfile被评估之后才会运行

您需要在
\u set-env:dev
任务运行后,通过删除gulpfile顶部的行,并将
require()
直接放入
监视任务中,将网页配置推迟到

gulp.task("watch", ["_set-env:dev"], function() {
    // modify default webpack configuration for Development Server
    var webpackDevConfig = Object.create(require('./webpack.config.js'));

非常感谢你,斯文!我觉得这是关于如何从gulp导入webpack配置的问题,但不知道具体是什么。非常感谢你,Sven!我觉得这是关于如何从gulp导入webpack配置的问题,但不知道具体是什么。