node.js - NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用

标签 node.js windows npm git-bash package.json

案例 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 | Node 4.2.2 | git-bash 2.6.0

最佳答案

有点晚了,但在 Windows 上你需要使用 %npm_package_config_url%

有一个潜在的软件包可以为您“解决”这个问题(即给您一个变通办法)(https://www.npmjs.com/package/cross-env),在其中一篇 npm 问题帖子中被引用。

关于node.js - NPM 脚本 - 配置变量和命令替换在 package.json 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027400/

相关文章:

node.js - 如何在单独执行 "npm install <package>"后运行安装后脚本

windows - 在批处理文件中实现定时输入。 (倒计时一分钟)

node.js - npm start 不打开浏览器选项卡

node.js - 使用 DirectLine 和网络聊天 (Node.js) 在 bot-framework v4 中发送打字指示符

node.js - Node 使用的是 package.json 文件吗?

node.js - ES6 * typescript : Cannot find namespace

node.js - 使用 yargs 设置命令行补全

c++ - 这是管理 COM 初始化的好方法吗?

c# - Windows 如何决定显示屏幕保护程序

node.js - 使用 NPM、Bower 等管理非包?