情况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' ' ')
被解释为文件夹名称.
ENV:windows 10 | npm 3.5.1 | 节点4.2.2 | git-bash 2.6.0
有点晚了,但在Windows上你需要使用 %npm_package_config_url%
有一个潜在的软件包会为你"解决"这个问题(即给你一个解决方法)(https://www.npmjs.com/package/cross-env),这个软件在npm问题帖子中被引用.