在运行应用程序时安装NPM软件包

当执行require('package')而不是触发错误时,是否可以强制Node.JS安装npm -package?

对于每个软件包来说,运行npm i package会更方便。

你不能设置Node.js来做到这一点(因为Node实际上并不知道npm )。

我不会推荐做这样的事情; 如果您错误地input了软件包名称,则会下载错误的软件包,可能在您的计算机上运行恶意代码。

请记住,任何人都可以发布npm包,并且包可以在安装过程中运行任何命令(包括rm -rf )。


按照下面的风险自担风险:

您可以通过https://github.com/siddharthkp/auto-install获得您所描述的行为。

 npm install -g auto-install cd project-name/ auto-install 

我build议使用--secure选项进行auto-install 。 这将只安装stream行的模块(在上个月>> 10k下载)。 这将消除拼写错误的一些风险,但是,如果您使用的是不常见的软件包,则不会自动安装。

依赖包应该通过package.json文件进行pipe理。 这是因为您可以轻松pipe理应用程序所需的软件包版本。 我不认为在运行时安装依赖是一个好习惯。

参考: 使用package.json

在理论上,你可以修改require来启动一个cmd,并且如果没有find它们,将它们安装。 这将是艰难的,不规范的和可怕的。

你可以做的是使用package.json ,你可以用npm init自动创build。

它会询问包裹的名字和其他一些问题,然后当你知道你需要哪个包裹时,你可以

 npm install --save package 

它会自动将package添加到package.json

随着package.json设置,你可以简单地运行

 npm install 

它会自动安装在package.json声明的每个包。

它会有其他不错的专业版,比如允许你确定安装哪个版本的软件包(防止依赖关系发生变化),知道你的依赖关系是什么,而不需要导航你的代码,以及准备你的代码被推入npm