足够奇怪的node.js不太可能使maven将软件所需的软件包安装在项目目录中。就像我们从其他生态系统中了解到的一样?

评论

像Maven一样,Facebook上npm的替身纱确实具有全局的每用户缓存。 node_modules文件夹不是高速缓存,软件将其用作依赖项存储。

只是出于好奇,您为什么不把它作为答案? (我会接受)。而且,npm -g是否也像Maven一样允许全局包管理?

npm -g会在全局名称空间中“安装”软件包,这与缓存不同。缓存具有每个特定软件包的所有不同版本,并且当您需要安装该特定版本时-它将使用缓存而不是通过Internet下载源。实际上,在全球范围内安装软件包没有此属性。

并未将其添加为答案,因为这个问题对我来说还很不清楚。我不完全了解作者想知道什么,您想问什么。

#1 楼


奇怪的是node.js不太可能使maven在项目目录中安装该软件所需的软件包。在这两种情况下,依赖关系最终都位于项目目录(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 Way”)。但是,仅从依赖方面来看,像npm这样的Node.js软件包管理器在概念上与Maven并没有太大区别。

评论


只是一个小小的修正:Maven不会将依赖项复制到目标文件夹。它从本地Maven存储库中的缓存工件构建类路径。

–ererriicc
19年2月15日在15:45