npm:如何在Windows(10)中设置NODE_ENV?

Jür*_*yer 5 npm

我正在尝试在package.json中添加一个npm脚本,该脚本NODE_ENV在进行其他操作(如运行webpack)之前进行设置。但是,尽管语法似乎是正确的,NODE_ENV在Windows 10下运行时未设置。

测试脚本

"scripts": {
   "test": "SET NODE_ENV=debug && echo %NODE_ENV%" }
Run Code Online (Sandbox Code Playgroud)

结果来自npm run test“生产”(NODE_ENV运行脚本之前已设置为“生产”)。应该是“调试”。

有什么事吗 我什没有尝试过交叉环境

编辑

为了澄清我的问题:我无法在Windows 10下设置任何环境变量。我需要调用SET,因为我正在Windows(10)下运行脚本。似乎是一些权限问题(不允许脚本设置环境变量?)。

另一个(或实际的)问题是:如何创建一个脚本(使用Webpack)以创建JavaScript文件的缩小版本(用于生产),以及如何创建非缩小版本的脚本(用于开发)。到目前为止,我使用以下方法(有关重要​​部分,请参见注释):

编辑2

我现在并没有意识到这可能会有所作为,但万一确实如此:我使用的是使用create-react-app创建的React应用。我找到了问题的答案,请参见下文。

package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {

    // Scipts for build for development and for production
    "build-dev": "SET NODE_ENV=debug webpack",
    "build-release": "SET NODE_ENV=production webpack"

  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.24.1",
    "babel-loader": "^7.0.0",
    "babel-preset-env": "^1.4.0",
    "babel-preset-react": "^6.24.1",
    "debug": "^2.6.4",
    "webpack": "^2.4.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

webpack.config.js:

const path = require('path');
var webpack = require('webpack');

// Check if in debug environment
var debug = process.env.NODE_ENV !== "production";

module.exports = {
  context: path.join(__dirname, 'src'),
  entry: ['./index.js'],
  output: {
    path: path.join(__dirname, 'www/js'),
    filename: 'index.js',
  },
  devtool: 'source-map',
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: ['babel-loader'],
      }],
  },

  // Add the UglifyJs plugin only in debug mode
  plugins: debug ? []  : [new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false })],

  resolve: {
    modules: [
      path.join(__dirname, 'node_modules')
    ]
  }
};
Run Code Online (Sandbox Code Playgroud)

这失败,因为设置NODE_ENV出于某种原因无法正常工作。直接在脚本中使用命令提示符:

SET NODE_ENV = debug
webpack
Run Code Online (Sandbox Code Playgroud)

顺便说一句。这证明该配置是可以的,但是仅npm脚本无法设置NODE_ENV。

小智 5

万一您仍然在Windows 10中设置NODE_ENV时遇到问题-这将为您提供帮助。在您的package.json文件中添加以下内容:

"test": "SET \"NODE_ENV=test\""
Run Code Online (Sandbox Code Playgroud)

如果计划将其推送到Heroku-您将不得不“导出”变量,并且您的字符串将如下所示(您在Windows-NEEDED引号旁使用斜杠进行转义):

"test": "export NODE_ENV=test || SET \"NODE_ENV=test\""
Run Code Online (Sandbox Code Playgroud)

最后,如果您需要以下命令(如mocha),则该行应如下所示:

"test": "export NODE_ENV=test || SET \"NODE_ENV=test\" && mocha server/**/*.name_of_files_plus_test.js"
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助:)-迈克


Jyo*_*aja -1

你试过了吗?

set DEBUG=* & npm run test
Run Code Online (Sandbox Code Playgroud)

确保debug已经安装

npm install debug --save
Run Code Online (Sandbox Code Playgroud)

更新: 在 Windows 使用中设置环境变量

set NODE_ENV=dev //for development environment
Run Code Online (Sandbox Code Playgroud)

在你的情况下

"scripts": {
   "test": "NODE_ENV=dev && echo %NODE_ENV%" }
Run Code Online (Sandbox Code Playgroud)