生成脚本在Windows上失败,但不在Linux或OSX上

我在我的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和cygwintesting)
  • NodeJS版本 :5.0.0
  • npm版本 :3.3.6

-e '...'内部的代码移动到文件中,因为内嵌引用会导致内联有问题。 如果代码是在一个文件中,你可以将自己从这些问题中解脱出来,脚本将更加便于阅读和阅读。