2017-07-06 97 views
1

在這裏,在我的package.json我運行到這個問題,我的Linux計算機和Windows計算機之間正在進行時:根據您的操作系統,package.json中的條件安裝後?

"postinstall": "node.exe node_modules/bower/bin/bower install" (for Windows) 
"postinstall": "./node_modules/bower/bin/bower install" (for Linux) 

我必須繼續交換取決於我的環境中,這些線 - 我怎麼能做到這一點交叉-OS所以它會在兩個地方工作?

我想要做的事,如:

"postinstall": isOSWindows ? "node.exe node_modules/bower/bin/bower install" : "./node_modules/bower/bin/bower install" 

回答

2

的第一件事是,我認爲你不需要切換OS從本地依賴性亭子運行。

在安裝亭子爲devDepedency您可以在package.json

"scripts":{ 
    "postinstall": "bower install" 
} 

例如腳本設置和運行npm install,應該工作。

因爲node_modules文件夾中安裝涼亭爲本地依賴性後的.bin文件夾中生成亭子腳本的可執行版本,這是可能

enter image description here

或者,如果你想操作系統之間進行切換,你可以使用這個技術。

爲了不用長腳本命令我把這個到外部腳本和使用process.platform,類似的東西script.js

const {exec} = require('child_process'); 

if (process.platform !== 'win32') { 
    // run scripts for Windows 
    return; 
} 

const commands = [ 
    'set NODE_ENV=e2e_tests', 
    'npm run start-local-test-environment', 
    'grunt build', 
    'nightwatch ./test/e2e/tests --skipgroup common,helpers --env chrome' 
]; 

const executedCommands = exec(commands.join('&&'), (error) => { 
    if (error) { 
    throw error; 
} 
}); 

,然後在腳本的package.json,你可以有:

"postinstall": "node ./scripts/script.js",

+0

工作 - 謝謝! –

相關問題