奇怪的是,node.js不太可能在项目目录中安装软件所需的软件包。
有没有办法引入一个中央存储库,它也缓存不同版本的组件,并允许像我们从其他生态系统中知道的那样,在构建时将它们拉出来?
发布于 2017-07-19 23:39:47
奇怪的是,node.js不太可能在项目目录中安装软件所需的软件包。
我不认为node.js和Maven上的npm有根本的区别。在这两种情况下,依赖关系最终都会出现在项目目录中(npm:/node_modules,Maven:/target)。否则,您无法继续构建该软件。(当您运行构建系统来创建最终工件时,它需要依赖项。)
此外,两者都有一个全局缓存,以避免下载已经获取的依赖关系:在Maven中,默认的缓存目录是~/.m2 (在Linux和MacOS上)。对于npm来说,它是~/.npm。
有没有办法引入一个中央存储库,它也缓存不同版本的组件,并允许像我们从其他生态系统中知道的那样,在构建时将它们拉出来?
如果系统缓存不够,并且不希望完全依赖公共存储库(npm: registry.npmjs.org,Maven: Maven Central),则可以运行自己的镜像。例如,如果您希望能够重建软件,即使公共存储库已经关闭。
在我以前的工作中,我们使用尼克斯作为缓存代理和本地注册表(用于托管仅在组织中可访问的代码)。它既支持npm (参见文档),也支持Maven (参见文档)。(还有其他工具,但重点是这两个生态系统都可以由一个工具来处理。)
当然,Maven和npm之间也有区别。例如,Maven也是一个完整的构建系统,而npm的范围主要是依赖管理。Maven还定义了构造Java项目(“Maven之路”)的约定。但是,当只考虑依赖方面时,Node.js的包管理器(如npm )在概念上与Maven并没有太大的不同。
发布于 2022-11-14 09:58:16
在2022年,pnpm:https://pnpm.io/与现在的maven非常相似。Pnpm不会将文件复制到node_modules,而是创建硬链接。
https://devops.stackexchange.com/questions/1432
复制相似问题