从npmcaching中需要NPM模块

在OSX / * nix上, ~/.npm目录包含npmcaching,这似乎是这样构造的:

 foo/ 0.1.2/ 1.0.01/ 1.3.34/ 2.0.1/ bar/ 0.3.8/ 2.1.1/ baz/ 3.2.1/ 4.1.7/ 

我想知道如果我们可以从这个目录需要模块目录。 我相信这完全违背了NPM哲学,但只是想知道最简单的方法是什么去做。

我想将NODE_PATH改为使用〜/ .npm目录是可能的,但〜/ .npm目录似乎有不同的结构,所以不知道require()可以使用。

我们看到像Yarn这样的新包装经理正在努力改善NPM 。 在我看来,到目前为止,我仍然困惑于NPM为什么不使用.npmcaching来引用依赖(为什么要在项目目录中本地重写它们?),但也许有人可以解决这个问题。

我的最终目标是find一种方法,像Babel,伊斯坦布尔那样在磁盘上的一个位置获得巨大的依赖关系,并在任何地方引用这个位置(至less对于同一个用户)。 使用像NVM这样的工具,全局模块位置(npm root -g)会发生变化,所以最好使用$ HOME目录中的某些内容,由于.npmcaching已经存在,因此提供了一种可能性。

除了操作NODE_PATH来处理〜/ .npm目录(我刚刚尝试过,〜/ .npm的目录结构似乎排除这种情况),另一种解决scheme可能是以编程方式使用npm。

像这样的东西:

 const npm = require('npm'); npm.load({ loaded: false }, function (err) { // catch errors npm.commands.install(['babel','istanbul'], function (er, data) { // log the error or data }); npm.on('log', function (message) { // log the progress of the installation console.log(message); }); }); 

我一直在问自己同样的问题。 如果我有一个包含我需要的所有依赖关系的package.json ,以及我需要的所有依赖关系,那么为什么我又不得不再次执行它,使自己感到困惑,并导致“configuration疲劳”? 有一种方法,我敢肯定,但是每当我试图使用package.json或者webpack.config.js在我构build它的时候从目标位置访问的任何地方,它都不能工作。所有。

另外,樱桃挑选你的node_modules文件夹的内容可能会导致奇怪的问题,所以我不惹它个人。

只要使用:

npm install [依赖关系,开发工具和任何你需要的]

你应该很甜蜜

没有必要让你的最佳configuration被传递 – 只要保持你的npm install命令随意复制和粘贴即可。