如何在我的项目中设置.npmrc文件,我可以在其中定义自己的私有注册表?我不想在我的用户配置.npmrc中进行这种配置.每个其他开发人员都应该能够只git clone
运行项目并运行npm install
.
这是我到目前为止:
// .npmrc registry=https://npm.fury.io/AUTH_TOKEN/me/ // package.json: { "name": "webapp", "description": "", "version": "1.0.0", "private": true, "dependencies": { "jquery": "1.2.3", "myPrivateLibFromNpmFury": "0.0.4" } }
npm install myPrivateLibFromNpmFury
回报
npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/myPrivateLibFromNpmFury
正如@Paulpro和@Alexey B所指出的那样,它的大部分内容已经发挥作用,但我无法立即看到它,也许是因为我没有正确地重新加载我的bash环境.但之后我遇到了其他问题,npm outdated
这是由注册网址引起的.事实证明,npm只能有一个注册表网址(这非常疯狂),如果你想使用私有和公共npm模块,你必须通过私有注册表代理公共npm-module注册表.幸运的是fury.io支持,所以在我的情况下,而不是使用这个:
//.npmrc registry=https://npm.fury.io/AUTH_TOKEN/me/
我必须使用这个:
//.npmrc registry=https://npm-proxy.fury.io/AUTH_TOKEN/USER_NAME/
更新:可以解决问题(npm只与一个注册表绑定).首先,您必须为所有私有包添加范围.现在.npmrc
您可以链接范围的注册表,并且您根本不再需要任何代理.
//.npmrc @project_a:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/ @project_b:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/ @company_a:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/
注意到文档
每个项目的配置文件
在项目本地工作时,项目根目录中的.npmrc文件(即node_modules和package.json的兄弟)将设置特定于此项目的配置值.
请注意,这仅适用于您正在运行的项目的根目录.在发布模块时,它不起作用.例如,您无法发布强制自身全局安装或在其他位置安装的模块.
我试图创建你在问题中指定的文件(package.json和.npmrc),一切正常.也许你在某处弄错了?
frgt$ npm i myPrivateLibFromNpmFury --verbose npm info using npm@3.3.12 npm info using node@v5.1.1 npm verb request uri https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury npm verb request no auth needed npm info attempt registry request try #1 at 14:36:10 npm verb request id 23f09acc4e7021c7 npm http request GET https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury npm http 403 https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury