在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);
});
});
答案 0 :(得分:1)
我一直在问自己同样的问题。如果我有一个package.json
包含我需要的所有依赖项以及我需要的所有开发依赖项,那么为什么我要再次这样做并且让自己感到困惑并且得到配置疲劳'?
有一种方式,我确定,但每当我尝试使用package.json
或webpack.config.js
从我建造的任何地方而不是预定的位置访问时,它无论是部分还是根本不起作用。
此外,樱桃挑选你的node_modules
文件夹的内容可能会导致奇怪的问题,所以我不会把它弄得一团糟。
只需使用:
npm install [依赖项,开发工具,以及你需要的任何东西]
你应该很甜蜜。
无需传递最佳配置 - 只需随身携带npm安装命令即可随意复制和粘贴。