我一直在从事许多不同的node.js项目。它们所有人都有自己的package.json
文件和所需的软件包。每次我运行node <mainfile>.js
时, npm 都会将所有软件包安装到项目目录中。像这样:C:/Users/me/Projects/<project-name>/node_modules
。
这不是一个很大的问题,但是有没有办法使 npm 使用/安装到 global 软件包?像C:/Users/me/node_modules
中一样?
我可以看到的优势之一是占用的存储空间更少,尽管这并不是一个巨大的优势。
我认为,如果可能的话,它将要求您在package.json
文件中添加/修改某些内容。
在寻找这个问题的答案时,我看到有人说您应该避免在全球范围内安装软件包。您还能解释为什么这是一种不好的做法,以及为什么我应该避免这种做法吗?
答案 0 :(得分:1)
全局安装软件包
NPM将全局软件包安装到// local / lib / node_modules文件夹中。
在install命令中应用-g全局安装软件包。
npm install -g express
回答其他问题
显而易见的简短答案是您的项目取决于它们。如果你的 项目取决于软件包,应记录在package.json中 这样您可以保证有人输入npm时已安装 安装。否则,您需要在自述文件中添加其他步骤 告知其他克隆您的项目的人他们需要 同时安装每个全局依赖项
最后,即使有人安装了正确版本的Browserify 对于您的项目,他们可能正在从事其他项目, 需要使用同一工具的不同版本,这会导致 冲突。您自己的几个项目甚至可能使用不同的项目 版本的Browserify,因为您在启动新版本时已对其进行了更新 项目,并且没有回过头来确保以前的项目是 更新以使用新版本。这些冲突是可以避免的。
您只能在全局安装一个版本。如果您有依赖于不同版本的程序包的不同项目,则会导致问题。
答案 1 :(得分:1)
并不是您不应该在全球范围内安装软件包,而是更多地知道要在全球范围内安装哪些软件包。全局安装的软件包是您的项目/应用程序不依赖的软件包。
项目所依赖的软件包是没有<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="button-wrapper">
<button type="button" disabled="disabled" class="noofpax decreasepax">-</button>
<input id="txtnoofpax" type="text" value="5">
<button type="button" class="noofpax increasepax">+</button>
</div>
<div class="package-amount"><span>$</span><span class="amount">6,300</span></div>
<div class="fee-info--amount">
<div class="fee-info">
<div class="info">Every pax cost $<span class="per-person-cost">1,200</span></div>
</div>
<div class="fee-amount">
<div class="perperson-amount">
<span>$</span><span class="amount">0</span>
</div>
</div>
</div>
<div class="grand-total">
<p>Total Payable Amount</p>
<div class="fee-amount"><span>$</span><span class="amount">6,300</span></div>
</div>
或axios
之类的应用程序就无法运行的软件包(express
API不能在没有安装Express或Web的情况下运行发出带有express
的API请求的页面不能发出没有axios
的那些请求,但是运行该应用程序不需要axios
或http-server
之类的东西,因此可以全局安装。
这是重要的/良好的做法,因为如果您正在与一群开发人员一起工作或某人从Github获得工作,他们可以运行minify
并获取所有软件包,而不必查找他们自己的所有软件包。
从技术上讲,您可以在全球范围内安装每个软件包,但我建议不要安装。 Node和其他许多开发人员都知道这是他们为“节点杀手”创建的解决方案。
我建议您不要全局安装所有软件包,如果节点模块文件夹确实使您烦恼,请尝试表示它可以解决节点开发人员讨厌的许多问题。