如何在Windows上的npm脚本中使用反引号

时间:2017-09-14 00:16:11

标签: node.js windows shell npm

我的工作流程是npm脚本,在我的node_modules中运行命令以及简单的shell命令。

不幸的是,由于我在某些命令中使用反引号,这使得Windows用户很难(参见下面的示例)。我有一个拉取请求志愿转换为shellJS/shx我的构建因此我的repo将构建跨平台但我们无法找到npm脚本中的反引号解决方案。

问题:

  • npm使用什么外壳?在Windows上,它似乎不支持反引号。
  • 有解决方法吗?管道没有帮助,唉,rm,mkdir等不使用stdin。

在package.json中使用示例反引号:

  "mkdirs": [
    "dist/AS",
    "libs",
    "models/scripts"
  ],
  "scripts": {
    "mkdirs": "mkdir -p `bin/pkgkey.js mkdirs`",
    ....

.. bin/pkgkey.js mkdirs脚本只返回mkdirs数组。这可能看起来很奇怪,但它对于组织npm风格的工作流程非常有用。

pkgkey脚本(简化):

#!/usr/bin/env node

const fs = require('fs')
const json = JSON.parse(fs.readFileSync('package.json'))
const key = process.argv[2]
let val = json[key]
if (Array.isArray(val)) val = val.join(' ')

process.stdout.write(val)

1 个答案:

答案 0 :(得分:0)

检查交叉环境,不知道它是否适用于您的用例但我用它来使npm脚本独立于平台

npm i --save-dev cross-env

"mkdirs": "cross-env mkdir -p ..."

https://www.npmjs.com/package/cross-env