我是npm的新手,所以请帮忙。
假设我有一些模块,我正在为每个模块使用一个git存储库,我还安装了sinopia以拥有一个私有注册中心。问题是我们是两支球队。一支队伍在一个城市,另一个队在世界末日。在我的团队中,我已经安装了本地网络中可用的专用注册表。这里的问题是,当我们推动git时,其他团队没有自己的私有注册中心,即使有,他们也需要在其私有注册中心中发布每个模块的每个版本。另外一个问题是我们不能(也不想)通过IP公开sinopia服务器。
现在的问题是:我们如何配置package.json / npm来管理来自私有注册中心(如果注册中心响应)和git存储库的依赖关系(如果私有注册中心没有响应--也就是它不存在)。
我知道我们可以设置每个依赖项来引用git标记/分支/提交,但如果可能的话,我们也希望使用注册表。
更新
基本上,我需要一个package.json,它知道如果这个部分失败了:
"dependencies": {
"app.core": "0.1.1"
}由于未安装或不可用的私有注册表,它仍然可以从以下内容加载依赖关系:
"dependencies": {
"app.core": "git+ssh://git@repo.mydomain.com:group/app-core.git#v0.1.1"
},还请注意,我更喜欢可以在git存储库中推送的东西,这样任何一个团队都不应该在本地更改package.json。
希望有人能帮忙。
发布于 2014-05-07 17:21:05
我发现目前唯一可行的方法是拥有这样一个package.json:
"scripts": {
"postinstall" : "node fallbackDependencies.js"
}
"dependencies": {
"app.core": "git+ssh://git@repo.mydomain.com:group/app-core.git#v0.1.1"
},
"optionalDependencies": {
"app.core": "0.1.1"
}并在fallbackDependencies.js文件中运行一个脚本,该脚本接受来自package.json的所有依赖项,这些依赖项也在optionalDependencies中,并为每个依赖项检查node_modules文件夹中是否有一个具有该名称的文件夹。如果没有文件夹,那么运行npm install <json.dependencies[x]>。
这是我唯一能想到的临时解决方案。
如果有人对此有更好的解决办法,请随时回答。
https://stackoverflow.com/questions/23513486
复制相似问题