Zsa*_*sar 5 script node.js npm
我有点羞愧,我自己找不到一个好的解决方案,但可惜。
使用 npm,我们通常有一个带有段package.json的文件scripts,用于存储我们希望工具链定期执行的任务,例如:
"scripts": {
"build": "webpack --env production",
"start": "webpack-dev-server"
}
Run Code Online (Sandbox Code Playgroud)
现在我们可能已经更新了工具链的一部分 - 在这个示例中是 webpack - 突然我们收到一条如下消息:
(node:10868) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET] DeprecationWarning: Compilation.modules was changed from Array to Set (using Array method 'reduce' is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)
Run Code Online (Sandbox Code Playgroud)
按原样,它对于诊断和解决问题完全没有用。某些构建脚本中的某些地方是错误的。... 耶!
至少在 webpack 及其插件的情况下,我们可以获得在 CLI 上调用的非常有用的跟踪输出:
node --trace-deprecation node_modules/webpack/bin/webpack.js --env production
Run Code Online (Sandbox Code Playgroud)
相当麻烦的一行,不是吗?我们确实想避免这种情况的原因有很多。排名不分先后:
package.jsonCLI 复制到(例如,不同的环境激活不同的插件 - 这不是一般用例,因此很容易被忽视,即使程序员已经有了处理弃用的想法)
.js我们也不能复制整个脚本主体所以...
--trace-deprecation该scripts部分package.json?...我想,我总是可以将节点调用放入单独的批处理文件中,但我更愿意使用一个位置来管理所有构建脚本。
预期用例:
我希望在本地构建时以及可能在选定的 CI 分支上始终启用此选项,以便我可以将完整跟踪直接输出到日志中并将该步骤标记为不稳定。拥有一个专用的 npm 脚本“build:trace”或类似的脚本似乎是一个简单的解决方案 -如果可以的话。
是的,确实\xe2\x80\x94,您可以将许多节点 CLI 标志作为环境变量传递,这些变量可以内联在命令中scripts。例如:
"build": "NODE_OPTIONS=\'--trace-deprecation\' webpack",\nRun Code Online (Sandbox Code Playgroud)\n有关支持标志的文档,请参阅:https ://nodejs.org/api/cli.html#node_optionsoptions
\n另外,仅仅在 Windows 上添加环境变量是行不通的。如果您希望在您的领域中使用跨平台环境变量scripts,我所知道的最佳解决方案是cross-env。
| 归档时间: |
|
| 查看次数: |
5248 次 |
| 最近记录: |