在我的 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"
最佳答案
首先,我认为您不需要切换操作系统来从本地依赖项运行 Bower。
将 Bower 安装为 devDepedency
后,您可以在 package.json
中设置示例脚本
"scripts":{
"postinstall": "bower install"
}
然后运行npm install
,应该可以工作。
这是可能的,因为在 node_modules
文件夹中将 Bower 安装为本地依赖项后,.bin 文件夹中会生成 Bower 脚本的可执行版本
或者,如果您想在操作系统之间切换,可以使用此技术。
为了不必使用很长的脚本命令,我将其放入外部脚本中并使用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”,
关于node.js - package.json 中的条件安装后取决于您的操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956778/