在我的package.json中,我在Linux机器和Windows机器之间遇到了这个问题:
"postinstall": "node.exe node_modules/bower/bin/bower install" (for Windows)
"postinstall": "./node_modules/bower/bin/bower install" (for Linux)
我必须根据我的环境不断交换这些行 - 我怎么能做这个跨操作系统,以便它可以在两个地方工作?
我想做类似的事情:
"postinstall": isOSWindows ? "node.exe node_modules/bower/bin/bower install" : "./node_modules/bower/bin/bower install"
答案 0 :(得分:2)
首先,我认为您不需要切换操作系统来从本地依赖项运行bower。
以devDepedency
安装bower后,您可以在package.json
"scripts":{
"postinstall": "bower install"
}
然后运行npm install
,应该可以。
这是可能的,因为在node_modules
文件夹中安装bower作为本地依赖项后,在.bin文件夹中生成了可执行版本的bower脚本
或者如果你想在OS之间切换,你可以使用这种技术。
为了不需要长脚本命令我将它放入外部脚本并使用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",