Windows系统下npm脚本中变量无法替换的问题求助
解决Windows下npm脚本变量无法替换的问题
这是因为Windows默认的命令提示符(cmd)和类Unix系统的Shell语法不一样,你用的$npm_package_name是bash等Shell的变量写法,在cmd里根本不识别,所以直接原样输出了。针对你的环境,有这几种解决办法:
方法一:改用cmd的变量语法
把脚本里的$换成%,修改后的package.json如下:
{ "name": "my-project", "scripts": { "start": "echo %npm_package_name%" } }
执行npm start后,就能正确输出my-project了。
方法二:切换到PowerShell执行脚本(可选)
如果你习惯用PowerShell,变量写法要改成$env:npm_package_name,同时需要配置npm默认用PowerShell:
- 先修改
package.json:
{ "name": "my-project", "scripts": { "start": "echo $env:npm_package_name" } }
- 执行命令配置npm的shell:
npm config set script-shell "powershell.exe"
之后执行npm start也能得到正确结果。
补充说明
npm脚本里的变量替换逻辑是依赖执行脚本的Shell环境的,Windows下默认用cmd,所以必须遵循cmd的变量规则;而类Unix系统用bash/zsh等,才用$开头的写法。你的npm和Node版本都是支持变量替换的,只是语法没对应上系统环境而已。
内容的提问来源于stack exchange,提问作者Asen Arizanov
相关产品推荐
相关产品推荐

