我完成了我的包(1个js文件),并希望将其发布在工件上。
package.json:
{
"name": "@company/package_name",
"main": "dist/index.js",
"publishConfig": {
"registry": "http://artifactory_url"
},
"files": ["dist/index.js"],
"devDependencies": {
"tslint": "^5.15.0",
"webpack": "^4.29.6",
},
"dependencies": {
"axios": "^0.18.0"
}
}
我将其发布:
npm login --registry=https://artifacory_url --scope=@company
npm publish
我的npm软件包现在在工件上可用(1个js文件和package.json)
现在,如果我要安装它:
npm install @company/package_name --registry=https://artifacory_url
它抱怨npm注册表中没有依赖项:
Not Found - GET https:artifactory_url/axios - not_found
npm ERR! 404
npm ERR! 404 'axios@^0.18.0' is not in the npm registry
当然是对的,我没有在注册表中发布axios
,但是我希望它可以从npm注册表中获取。
我不确定要遵循的策略。
我使用webpack
,因此axios
已捆绑在我的dist/index.js
文件中。我应该像对待tslint
这样的devDependencies吗?看来这不是开发人员对我的依赖...
答案 0 :(得分:1)
npm开发人员不会立即促进/允许向多个注册表发布,因为这可能会导致以下问题:
为解决私有/公共注册管理机构之间的问题,大多数私有注册管理机构都使用代理功能(如果请求的软件包在私有存储库中提供,否则将请求委托给公共注册管理机构。)
许多注册表解决方案还提供复制功能。
使用这些功能,您应该只能在一个注册表上发布并从多个注册表提供服务。
您正在使用人工制品,他们可以rewriting对其进行外部依赖。
在npm virtual中选中Enable Dependency Rewrite复选框 存储库高级配置。