【问题标题】:Which shell npm is using when running npm scripts?运行 npm 脚本时使用哪个 shell npm?
【发布时间】:2017-04-26 17:20:49
【问题描述】:

我在 Windows 上通过 ConEmu 运行鱼壳。 Fish 默认不识别“&&”运算符然而有这个:

"scripts": {
  "test": "echo 'a' && echo 'b'"
}

并且正在运行“npm run test”。 所以我认为它必须使用默认的“cmd”,这就是npm config ls -l | grep shell 所说的,但是...... 当我将“测试”脚本更改为:

"scripts": {
  "test": "echo 'a' && ls"
}

这也有效,而“cmd”显然不支持ls

这到底是怎么回事? ????

【问题讨论】:

    标签: node.js bash shell npm fish


    【解决方案1】:

    Looks line npm run 将命令发送到 sh shell,它通常指向默认的 Bourne 兼容 shell。我没有使用您的模拟器的经验,但我敢打赌它在您的环境中使用 bash(因为 Fish 与 Bourne 不兼容)。

    【讨论】:

      【解决方案2】:

      我不知道在您的情况下使用什么 shell,也不知道检查 npm 使用哪个 shell 的首选方法是什么,但我有一些一般性提示,可能会有所帮助。

      你可以试试

      { 
        "scripts": {
          "test": "echo $0" 
        }
      }
      

      可以产生如下结果:

      $ npm run test
      
      > @ test /home/matmat/test
      > echo $0
      
      sh
      

      (对于 linux 上的 bash)

      C:\Users\qbolec\Documents\test>npm run test
      
      > @ test C:\Users\qbolec\Documents\test
      > echo $0
      
      $0
      

      在 Windows Node.js 命令提示符下。

      你也可以试试

        "test": "which ls"
      

      获取更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-09
        • 1970-01-01
        • 2016-04-28
        • 2016-08-28
        • 2017-01-13
        • 2018-06-06
        • 1970-01-01
        • 2019-09-06
        相关资源
        最近更新 更多