我正在尝试在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)
| 归档时间: |
|
| 查看次数: |
10204 次 |
| 最近记录: |