1

在 OSX/*nix 上,该~/.npm目录包含 npm 缓存,其结构似乎如下:

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 不只是使用 .npm 缓存来引用依赖项(为什么要在项目目录中本地重写它们?),但也许有人可以解决这个问题。

我的最终目标是找到一种方法,在磁盘上的一个位置获得像 Babel、Istanbul 这样的巨大依赖项,并在任何地方引用该位置(至少对于同一用户而言)。使用 NVM 之类的工具,全局模块位置 (npm root -g) 会发生变化,因此最好使用 $HOME 目录中的内容,并且由于 .npm 缓存已经存在,它提供了一种可能性。

除了操纵 NODE_PATH 以使用 ~/.npm 目录(我刚刚尝试过, ~/.npm 的目录结构似乎排除了这一点),另一种解决方案可能是以编程方式使用 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);
  });
});
4

1 回答 1

1

我一直在问自己同样的问题。如果我有package.json我需要的所有依赖项和我需要的所有开发依赖项,那么我为什么要再次这样做并让自己感到困惑并获得“配置疲劳”?有一种方法,我敢肯定,但每次我尝试使用package.jsonwebpack.config.js从任何地方访问,但在我构建它时,它部分或根本不起作用。

此外,樱桃挑选node_modules文件夹的内容可能会导致奇怪的问题,所以我不会亲自处理它。

只需使用:

npm install [依赖,开发工具,以及任何你需要的]

你应该很可爱。

无需传递您的最佳配置 - 只需保留您的 npm install 命令即可随意复制和粘贴。

于 2016-12-04T16:29:23.580 回答