javascript – 如何安装npm安装

我为每个我的网络应用程序使用Node.js(通过browserify),所有这些应用程序都具有一些常见的依赖关系,另外还有其他一些特定于它们的应用程序。每个这些应用程序都有一个package.json文件,它指定需要哪些模块的版本。

现在,我在应用程序的父文件夹中有一个/ node_modules目录,它们都需要引用,然后我将特定于应用程序的模块放在该应用程序目录中的一个node_modules文件夹中。这在短期内工作正常,因为我的require()语句能够在文件结构中向上看,直到找到具有正确应用程序的node_modules目录。

当我想要回到一个旧的项目并运行npm安装以确保它仍然可以找到所需的所有依赖项时,这是棘手的。 (谁知道从那以后在父目录级别发生了什么有趣的事情)。我的印象是,npm安装是这样做的:

>对于package.json中列出的每个模块,首先检查它是否存在,按照相同的方式移动目录。如果不是,请将其安装到本地的node_modules目录中(如有必要,创建该目录)。

但是,当我将npm安装在一个应用程序文件夹中时,它似乎在本地安装所有内容,无论其在哪里可能存在上游。那是正确的行为吗? (这可能是另一个原因,比如我的package.json中的坏版本语言)。如果这是正确的行为,有没有办法让我有npm安装的行为像上面那样?

在每个应用程序中广泛复制模块并不是件大事,但感觉很混乱,阻止我对常用模块进行小的改进,而不必更新每个旧的package.json文件。当然这可能是一件好事…

When I run npm install inside an app folder, however, it appears to install everything locally regardless of where else it may exist upstream. Is that the correct behavior? (It’s possible there’s another reason, like bad version language in my package.json). If this IS the correct behavior, is there a way for me to have npm install behave like the above?

是的,这是npm安装的。在node.js代码中,require算法具有特定的位置顺序,包括走向文件系统。但是,npm安装不会这样做。它只是安装到位。它使用的算法都仅限于当前目录下的一个node_modules目录,它不会触及任何以上的(-g)除外。

It’s not a big deal to widely replicate the modules inside every app, but it feels messy and prevents me from make small improvements to the common modules and not having to update every old package.json file. Of course, this could be a good thing…

是的,基本上你做错了常规工作流程很好地扩展到互联网。对于您的用例,它会创建一些额外乏味的工作,但您也可以根据需要使用语义版本控制,并在您的应用程序的package.json中指定“mylib”:“^ 1.0.0”,并且可以自动获取较新的版本时间你安装npm

http://stackoverflow.com/questions/25897908/how-npm-install-works

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如何安装npm安装