Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js模块的动态安装和加载_Javascript_Node.js_Performance_Module_Npm - Fatal编程技术网

Javascript Node.js模块的动态安装和加载

Javascript Node.js模块的动态安装和加载,javascript,node.js,performance,module,npm,Javascript,Node.js,Performance,Module,Npm,我正在使用NPM中的另一个Node.js模块B开发Node.js模块a。NPM上发布了模块B的新版本。我希望我的模块A动态更新到模块B的最新版本(模块A始终取决于模块B的最新版本)。此外,导入模块的所有引用也应动态更新 我考虑过,如果某个模块已经过时,可以通过编程方式使用NPM来安装该模块的最新可用版本。是否有更好的解决方案动态执行此操作 另外,如何强制更新通过require导入的模块引用 谢谢 至少对于问题的第一部分(模块A始终使用模块B的最新版本),您可以始终在package.json中使用

我正在使用NPM中的另一个Node.js模块B开发Node.js模块a。NPM上发布了模块B的新版本。我希望我的模块A动态更新到模块B的最新版本(模块A始终取决于模块B的最新版本)。此外,导入模块的所有引用也应动态更新

我考虑过,如果某个模块已经过时,可以通过编程方式使用NPM来安装该模块的最新可用版本。是否有更好的解决方案动态执行此操作

另外,如何强制更新通过require导入的模块引用


谢谢

至少对于问题的第一部分(模块A始终使用模块B的最新版本),您可以始终在
package.json
中使用以下命令指定依赖项:

这将允许您始终
npm更新到最新版本。(然而,这可能会导致在npm使用时引入破坏模块向后兼容性的更改。)

至于自动运行
npm update
,我不得不问-为什么这是必要的?对模块用户有什么好处?您至少应该“策划”对依赖项的更新,以确保不会引入破坏性的更改。如果您为更新依赖项设置了全自动管道(例如,从
npm update
ing dependencies到
git tag
ing new versions到
npm version
ing这些新版本到
npm publish
ing这些新版本),如果这些步骤中的任何一个破坏了与模块用户代码的兼容性,那么您就有点让模块用户束手无策了

(另外,如果这种自动依赖项更新不会破坏您的模块,那么您的模块添加了什么?它是否对依赖项做了任何非平凡的事情?)


这可能看起来很麻烦,但是用一些技巧和意图来更新依赖项是一种更好的做法

谢谢@wisew的指点!“npm更新”需要自动进行的原因是1。模块B也将由me 2发布。模块B的更新将是关键的错误修复。其想法是将生态系统中频繁更新(带有修复)的部分抽象为一个单独的模块,所有其他模块都将对其具有“依赖性”。模块B将在发布给NPM之前进行策划。我希望模块A的消费者能够在没有他们干预的情况下获得模块B的策划版本,以及关键的修复。
{
  "dependencies": {
    "moduleB": "*"
  }
}