你能阻止 node.js 在本地安装软件包吗? (使用全局包)
Can you prevent node.js from installing packages locally? (Use global packages)
我一直在从事许多不同的 node.js 项目。他们都有自己的 package.json
文件和他们自己需要的包。每次我 运行 node <mainfile>.js
, npm 都会将所有包安装到项目目录中。像这样:C:/Users/me/Projects/<project-name>/node_modules
.
这不是什么大问题,但是有没有办法让 npm use/install 成为 global包裹?就像 C:/Users/me/node_modules
一样?
我认为这样做的优势之一是占用的存储空间更少,尽管这并不是一个巨大的优势。
我假设如果可能的话,它会要求您 add/modify package.json
文件中的某些内容。
在寻找这个问题的答案时,我看到有人说你应该避免全局安装包。您能否也解释一下为什么这是一种不好的做法以及为什么我应该避免它?
全局安装包
NPM 将全局包安装到 //local/lib/node_modules 文件夹中。
在安装命令中应用 -g 以全局安装包。
npm install -g express
回答你的其他问题
The obvious short answer is that your project depends on them. If your
project depends on a package, it should be documented in package.json
so that you can guarantee that it is installed when someone types npm
install. Otherwise, you’ll need to add extra steps in your README file
to inform anyone else who clones your project that they need to
install each of your global dependencies as well
Finally, even if someone installs the correct version of Browserify
for your project, they may be working on a different project that
requires a different version of that same tool, which would cause
conflicts. Several of your own projects might even use different
versions of Browserify because you updated it when you started a new
project and didn’t go back to make sure that earlier projects were
updated to work with the new version. These conflicts can be avoided.
全局只能安装一个版本。如果您有依赖不同版本包的不同项目,这会导致问题。
为什么不全局安装所有包
并不是说你不应该全局安装一个包,而是更了解要全局安装哪些包。要全局安装的软件包是您的 project/application 不依赖的软件包。
如何识别我的项目所依赖的包
您的项目所依赖的包是您的应用程序无法 运行 的包,例如 axios
或 express
(express
API 不能 运行 没有快速安装或者一个网页发出 API 请求 axios
不能在没有 axios
的情况下发出这些请求)但是像 http-server
或 minify
不需要 运行 应用程序,因此可以全局安装。
为什么在本地安装软件包很重要
这是 important/good 实践,因为如果您与一组开发人员一起工作,或者有人从 Github 那里获得您的工作,他们可以 运行 npm install
并获得所有包而不必自己找到所有包。
如何删除节点模块文件夹
从技术上讲,您可以在全球范围内安装每个软件包,但我建议您不要这样做。 Node 和许多其他开发人员都知道这是一个问题,他们在 deno 中为“节点杀手”创建了解决方案。
我建议不要全局安装所有包,如果节点模块文件夹真的很烦你试试 deno,它修复了很多节点开发人员讨厌的东西。
我一直在从事许多不同的 node.js 项目。他们都有自己的 package.json
文件和他们自己需要的包。每次我 运行 node <mainfile>.js
, npm 都会将所有包安装到项目目录中。像这样:C:/Users/me/Projects/<project-name>/node_modules
.
这不是什么大问题,但是有没有办法让 npm use/install 成为 global包裹?就像 C:/Users/me/node_modules
一样?
我认为这样做的优势之一是占用的存储空间更少,尽管这并不是一个巨大的优势。
我假设如果可能的话,它会要求您 add/modify package.json
文件中的某些内容。
在寻找这个问题的答案时,我看到有人说你应该避免全局安装包。您能否也解释一下为什么这是一种不好的做法以及为什么我应该避免它?
全局安装包
NPM 将全局包安装到 //local/lib/node_modules 文件夹中。
在安装命令中应用 -g 以全局安装包。
npm install -g express
回答你的其他问题
The obvious short answer is that your project depends on them. If your project depends on a package, it should be documented in package.json so that you can guarantee that it is installed when someone types npm install. Otherwise, you’ll need to add extra steps in your README file to inform anyone else who clones your project that they need to install each of your global dependencies as well
Finally, even if someone installs the correct version of Browserify for your project, they may be working on a different project that requires a different version of that same tool, which would cause conflicts. Several of your own projects might even use different versions of Browserify because you updated it when you started a new project and didn’t go back to make sure that earlier projects were updated to work with the new version. These conflicts can be avoided.
全局只能安装一个版本。如果您有依赖不同版本包的不同项目,这会导致问题。
为什么不全局安装所有包
并不是说你不应该全局安装一个包,而是更了解要全局安装哪些包。要全局安装的软件包是您的 project/application 不依赖的软件包。
如何识别我的项目所依赖的包
您的项目所依赖的包是您的应用程序无法 运行 的包,例如 axios
或 express
(express
API 不能 运行 没有快速安装或者一个网页发出 API 请求 axios
不能在没有 axios
的情况下发出这些请求)但是像 http-server
或 minify
不需要 运行 应用程序,因此可以全局安装。
为什么在本地安装软件包很重要
这是 important/good 实践,因为如果您与一组开发人员一起工作,或者有人从 Github 那里获得您的工作,他们可以 运行 npm install
并获得所有包而不必自己找到所有包。
如何删除节点模块文件夹
从技术上讲,您可以在全球范围内安装每个软件包,但我建议您不要这样做。 Node 和许多其他开发人员都知道这是一个问题,他们在 deno 中为“节点杀手”创建了解决方案。
我建议不要全局安装所有包,如果节点模块文件夹真的很烦你试试 deno,它修复了很多节点开发人员讨厌的东西。