2017-09-14 64 views
2

我的工作流程是npm脚本,在node_modules中运行命令以及简单的shell命令。如何在Windows的npm脚本中使用反引号

不幸的是,由于我在某些命令中使用了反引号,这使得windows用户很难(请参阅下面的示例)。我有一个拉动请求,志愿将我的构建转换为shellJS/shx,所以我的回购将构建跨平台,但我们无法找到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

不是Windows用户,但你不能逃脱引号:' “mkdirs”: “MKDIR -p \” 斌/ pkgkey.js mkdirs \ “”,' – Dominik

+0

@Dominik的OP提到的反引号:' \ '',但是。 – ifconfig

+0

是的,他说他们没有这么努力去引用那些在所有炮弹中工作的引号......不是吗? – Dominik

回答

0

检查跨ENV,不知道它是否会为你的使用情况工作,但我用它来作NPM脚本平台独立

npm i --save-dev cross-env 

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

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