构建脚本在Windows上失败,但在Linux或OSX上失败

时间:2016-03-04 22:22:24

标签: node.js windows bash shell cmd

我的package.json中有以下脚本:

"scripts": {
    "pretest": "mkdir -p build && node -e 'process.stdout.write(\"export var version = \\\"\" + require(\"./package.json\").version + \"\\\";\\n\");' > build/version.js && rollup -f umd -n d3_random -o build/d3-random.js -- index.js"
}

仅在Windows上失败并出现以下错误消息:

> d3-random@0.2.1 pretest C:\Users\Pepe\Dropbox\workspace\d3-random
> mkdir -p build && node -e 'process.stdout.write("export var version = \"" + require("./package.json").version + "\";\n");' > build/version.js && rollup -f umd -n d3_random -o build/d3-random.js -- index.js

[eval]:1
'process.stdout.write(export var version = "
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SyntaxError: Unexpected token ILLEGAL
at Object.exports.runInThisContext (vm.js:53:16)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:425:26)
at node.js:587:27
at doNTCallback0 (node.js:428:9)
at process._tickCallback (node.js:357:13)
npm ERR! Test failed.  See above for more details.

任何人都知道为什么这只会在Windows上而不是在基于Unix的系统上失败?

其他信息:

  • 操作系统:Windows 8.1和10(使用git-bash,win-bash和cygwin测试)
  • NodeJS版本:5.0.0
  • npm版本:3.3.6

1 个答案:

答案 0 :(得分:0)

-e '...'内的代码移动到文件中,因为嵌入式引号导致内联存在问题。如果代码在文件中,您可以摆脱这些问题,脚本将更易于阅读。