2016-03-04 51 views
2

我在我的package.json以下腳本:構建腳本在Windows上失敗,但不能在Linux或OSX

"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上,出現以下錯誤消息完全失敗:

> [email protected] 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的系統上?

其他信息:

  • OS:視窗8.1和10(與GIT-bash的測試,多方bash和Cygwin的)
  • 版本的NodeJS:5.0.0
  • NPM版本號:3.3.6
+0

看起來應該是由shell處理的報價'''最終被'node'執行。歡迎轉義字符地獄 - 在Windows上! –

+0

順便說一句,如果調用'mkdir'調用Windows內置mkdir命令,則'-p'無效。 (該命令在一個標準的Windows shell中運行,將創建兩個文件夾,其中一個名爲'-p'。) –

回答

0

將代碼移到-e '...'放入文件中,因爲內嵌引用由於嵌入引號而存在問題。如果代碼位於文件中,您可以將自己從這些問題中解放出來,並且該腳本將更加便於攜帶並且更易於閱讀。

相關問題