意外的NodeJS和NPM行为

npm install是否只安装在你运行的目录下的软件包? 因为这是我目前的经验。 起初,我在C:/ Users / ME的命令提示符下运行npm install xml 。 运行require("xml"); 在从C:/ Users / ME运行的节点实例中,运行npm ls列出了xml包…

但是,如果我移动到任何其他目录,他们都没有。

这是预期的行为(听起来不对),Windows的东西,还是我缺less某种安装选项?

是的,这是正常的行为。

npm install (在软件包目录中,没有参数):

在本地node_modules文件夹中安装依赖关系。

在全局模式(即将-g或–global附加到命令中)中,它将当前包上下文(即当前工作目录)作为全局包安装。

默认情况下,npm install会安装列为依赖关系的所有模块。 使用–production标志(或者当NODE_ENV环境variables设置为生产时),npm将不会安装在devDependencies中列出的模块。

NPM安装文档

npm在当前目录下(在node_modules子目录下)安装模块,或者在运行时使用-g标志,将模块安装在通过操作系统和configuration确定的global位置,然后node.js将能够find模块,无论它从哪里加载。

所以,这将在全局安装一个模块:

 npm install -g xml 

当使用require() ,如果你需要查看当前目录加载一个模块,那么你必须像require("./module");一样来执行require("./module"); ,否则将不会查找当前目录中的模块安装。

您需要执行npm install -g xml 。 这将在全球安装软件包。

'-g'代表全球。 然后当你检查其他目录时,你可以列出相同的包

注意你安装节点的方式也很重要!
你可以使用

  1. 巧克力( https://chocolatey.org/packages?q=nodejs
  2. nodeJS网站( https://nodejs.org/

*知道在哪里设置你的用户variables是必不可less的Windows开发人员! 我提到这个的原因是巧克力和节点USER:PATHvariables的列表在nodejs的一个点上变得非常大,并且npm将停止工作。 你需要在你的环境中工作。 在一种情况下发生的variables。 (通常可以安装多个版本的SQL Server)

如果你想在节点和npm上有一个很好的免费,离线可用的资源,我build议devdocs( http://www.devdocs.io )以及GentlNode的作弊表( https://gentlenode.com/journal/cheatsheet)* GentleNode无济于事。 离线FYI。

还有一些你还没有收到的关键信息。 见下文:

  1. npm install xml – 在运行命令时,将“xml”包和所需的模块安装到本地文件夹中。 在这个文件夹中只有文件存在(因此命令只能在这个文件夹中运行),而不能在cmd / terminal文件夹外调用“xml”(不用“-g”参数重新运行)不写入package.json文件。 如果没有将node_modules添加到.gitignore文件,那么当项目上传到github时,将全部上传。
  2. npm install -g xml – 将“xml”安装到您的全局npm文件夹,该文件夹被引用到您的“用户环境variables”(允许您从命令行中调用特定函数,方法和可执行文件)。您的项目文件夹,不logging在“package.json”文件中。 不会上传任何东西给github。
  3. npm install –save xml – 使用“–save”可以让你“安装”到这个文件夹中,而且可以把你包含的包写入到你的项目的“package.json”文件中。 在这里,你的目标是分发你的软件,你想尽可能less的文件github /源代码控制npm知道如何安装像jQuery,XML,身体分析器等。

您通常会使用常规的“npm install XML”命令来创build一个轻量级的快速发行小型工具,以支持您只希望保留在本地计算机上的关键function或stream程改进。 另外,你可以将npm安装“包”到一个文件夹,并将其用作映射到你的环境variables的备份“节点文件夹”。

您通常会使用全局的“npm install -g XML”命令来安装中间件,Express,安装了VIA npm的节点更新程序以及您希望从“任意位置”访问cmd /terminal的其他进程。 一旦你在核心开发包中build立了这个节点,你通常只使用正在进行的命令,阅读详细说明。

最后,您将使用“npm install –save”将“安装到您的项目中”所需的模块写入“package.json”文件。 这将是那些在node中大量工作,并已经使用“npm install -g”来全局安装最常用的核心节点JS的人。 这将把package.json写入当前软件中的软件包和版本,以便最终用户可以下载轻量级版本,并使用npm软件包pipe理来安装所有的模块依赖项,这样应用程序就可以在其他人的计算机上正常工作。 *注意,这会导致最后一个命令“npm install”,您可以在给定的文件夹中直接从github下载文件。

希望对使用npm的安装方面有更多的帮助!