NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用
Posted
技术标签:
【中文标题】NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用【英文标题】:NPM scripts - config variables and command substitution not working in package.json 【发布时间】:2016-03-05 18:55:48 【问题描述】:案例1:使用变量名代替值
package.json:
"name": "example",
"config":
"url": "localhost/dev"
,
"scripts":
"watch": "browser-sync start --files \"./**/*, !.node_modules/, !src\" --proxy $npm_package_config_url"
$npm run watch
在浏览器中打开http://localhost:3000/$npm_package_config_url
,而不是http://localhost:3000/dev
所以,$npm_package_config_url
被用作字符串,而不是变量。
案例 2: 命令替换不起作用
... ,
"scripts":
"rm:all": "npm rm $(ls -1 node_modules | tr '/\\n' ' ')"
子命令列出 node_modules 中的文件夹。
同样,npm run rm:all
什么也不做,因为 $(ls -1 node_modules | tr '/\\n' ' ')
被解释为文件夹名称。
环境:Windows 10 | npm 3.5.1 |节点 4.2.2 | git-bash 2.6.0
【问题讨论】:
【参考方案1】:有点晚了,但在 Windows 上你需要使用%npm_package_config_url%
有一个潜在的软件包可以为您“解决”这个问题(即给您一个解决方法)(https://www.npmjs.com/package/cross-env),在其中一篇 npm 问题帖子中被引用。
【讨论】:
cross-env 将帮助设置环境变量跨平台,如果你想在你的脚本中以跨平台的方式使用环境变量,使用cross-var 你用这个答案为我节省了很多时间:) 在 windows 10 上不工作,经过 cmd 和 powershell 测试 @silvos ,这是它工作的 Windows 10。也许从那以后发生了一些变化——如果你制定出新的解决方案,你能添加一个更新的答案吗? @Robbie 发现 NPM 中存在一个错误,已在 7.7.0 版中修复 github.com/npm/cli/issues/2731 现在它正在工作 - thx以上是关于NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sed 或 awk 命令用变量(变量保存 Unix 脚本)查找和替换文本
npm : 无法将“npm”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查
json 配合Vue.js配置Webpack -27。通过npm脚本简化的webpack和webpack-dev-server命令
json 配合Vue.js配置Webpack - 26.通过npm脚本来执行webpack和webpack-dev-server命令