我用npm registry
创建了私人verdaccio
。
我希望能够运行npm install --registry="http://localhost:4873"
并从私有registry
获取所有依赖项。
我需要从项目node_modules
目录中发布所有软件包。
我必须在npm publish
目录的每个软件包中运行node_module
。(我找不到更好的方法。)
更多成功发布,但是在某些情况下,我遇到了错误。例如在zone.js
包中:
npm ERR! code ELIFECYCLE npm ERR! errno 2 npm ERR! zone.js@0.8.29
prepublish: `tsc && gulp build` npm ERR! Exit status 2 npm ERR! npm
ERR! Failed at the zone.js@0.8.29 prepublish script. npm ERR! This is
probably not a problem with npm. There is likely additional logging
output above. npm WARN Local package.json exists, but node_modules
missing, did you mean to install?
或位于acorn
包中:
acorn@5.7.3 build:main C:\Users\Admin\Desktop\test ng\ng-prj\node_modules\acorn
rollup -c rollup/config.main.js
'rollup' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! acorn@5.7.3 build:main: `rollup -c rollup/config.main.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the acorn@5.7.3 build:main script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
是否有一种简单的方法?
答案 0 :(得分:1)
这里是Verdaccio维护者。
我希望能够运行npm install --registry =“ http:// localhost:4873”并从私有注册表中获取所有依赖项。
您想要的是拥有一个包含所有依赖项的脱机注册表。发布所有node_modules
是不切实际的,几乎是不可能的。
更多成功发布,但是在某些情况下,我遇到了错误。例如在zone.js
这就是重点,您将需要构建每个依赖项,但这没有任何意义。常规项目可以轻松地具有数千个依赖项和子依赖项。更不用说您会失去未来依赖更新的来临。
因此,您需要正确地缓存存储文件夹中的所有依赖项。
$> verdaccio
npm install --registry="http://localhost:4873
proxy
packages:
'@*/*':
access: $all
publish: $authenticated
# proxy: npmjs
'**':
access: $all
publish: $authenticated
# proxy: npmjs
如果您注释掉
proxy
,Verdaccio不会要求对遥控器进行任何更新,默认情况下为npmjs
,因此将不执行与外部网络的连接。
因此,这里介绍了这种方法的优点。
lodash: ^1.5.6
)node_modules
并清洁npm cache
。node_modules
中发布每个软件包,因此请参见第2点。希望这对您有所帮助。此外,还有其他一些与离线模式有关的做法,但仅与yarn有关。
答案 1 :(得分:0)
我们使用了上述 Juan Picado 的建议。这是我们所做的:
此时运行 npm install 命令只会指向您的 verdaccio 实例,而不会转到 registry.npmjs.com,并且 /home/verdaccio/storage 中的包将是您的离线可用包。