npm 模块仅在全局不可用时才在本地安装
npm module install locally only if not available globally
我们有一个 Web 项目,其中包含多个 git submodules
。对于功能测试,我们同时使用 PhantomJS
和 Selenium
(一个用于本地开发,另一个用于 CI 部署和视觉回归测试)。
因为每个子模块都有自己的package.json
,PhantomJS
和selenium-standalone
在bootstrap过程中被多次安装。
我的问题是:我能否在全局安装这些巨大的 npm
模块,并以某种方式让我的应用程序选择全局安装,并且仅当它不可用时,才尝试从缓存或远程存储库中提取?
类似于:
if(global_install){
continue
}
else{
npm install
}
也许 RedSpar0w 在这里提出了解决方案:https://github.com/npm/npm/issues/2949#issuecomment-238703924
{
"name": "Meh",
"description": "Some Description",
"scripts": {
"preinstall": "(npm list someDependency -g && npm install otherDependency -g) || (npm list someDependency || npm install someDependency) && npm install otherDependency -g"
}
}
检查 someDependency
是否全局安装,如果是则全局安装 otherDependency
否则检查 someDependency
是否在本地安装,如果没有则在本地安装 someDependency 但无论哪种方式都在全局安装 otherDependency 因为 someDependency 没有在本地安装
大家可以根据自己的需要来玩。
我们有一个 Web 项目,其中包含多个 git submodules
。对于功能测试,我们同时使用 PhantomJS
和 Selenium
(一个用于本地开发,另一个用于 CI 部署和视觉回归测试)。
因为每个子模块都有自己的package.json
,PhantomJS
和selenium-standalone
在bootstrap过程中被多次安装。
我的问题是:我能否在全局安装这些巨大的 npm
模块,并以某种方式让我的应用程序选择全局安装,并且仅当它不可用时,才尝试从缓存或远程存储库中提取?
类似于:
if(global_install){
continue
}
else{
npm install
}
也许 RedSpar0w 在这里提出了解决方案:https://github.com/npm/npm/issues/2949#issuecomment-238703924
{
"name": "Meh",
"description": "Some Description",
"scripts": {
"preinstall": "(npm list someDependency -g && npm install otherDependency -g) || (npm list someDependency || npm install someDependency) && npm install otherDependency -g"
}
}
检查 someDependency
是否全局安装,如果是则全局安装 otherDependency
否则检查 someDependency
是否在本地安装,如果没有则在本地安装 someDependency 但无论哪种方式都在全局安装 otherDependency 因为 someDependency 没有在本地安装
大家可以根据自己的需要来玩。