npm链接,不安装,package.json依赖项

时间:2015-02-22 21:08:54

标签: node.js npm

我希望本地链接我package.json中声明的所有显式依赖项。

如果我只是尝试npm link我得到的是所有软件包的本地安装,无论它们是否已经全局安装。

我没想到。我所期望的和我需要的是一种类似于我npm link package的行为。我希望npm link检查package.json中的依赖项以及每个依赖项,以创建链接,并在需要时进行全局安装。

2 个答案:

答案 0 :(得分:4)

npm link并非旨在以这种方式工作。有两种方法可以使用它,它们都依赖于您预先下载要链接的依赖项。

第一种方式(两步)

cd ../dependency npm link cd ../project npm link dependency

第二种方式(一步)

cd project npm link ../dependency

我认为您尝试做的是npm link,其中目标是全局安装的包(而不是全局安装的文件系统某个目录的链接)。 npm并不支持。

参考:https://docs.npmjs.com/cli/link

答案 1 :(得分:1)

经过几个月的等待,我已经推出了自己的实施方案,我将在此处发布以供记录。

我有两个小脚本

一个packageDependencies.js,用于从package.json中提取所有依赖项。通常,代码有:

fs.readFile(process.argv[2]||'package.json','utf8',(err,data)=>{
  if(err) return console.error(err);
  var o = JSON.parse(data);
  for (var p in o.dependencies) console.log(p);
  for (var p in o.devDependencies) console.log(p);
});

和另一个npmlink.sh迭代该列表和每个包,只有npm --global installnpm link。示意性地,

for d in "$(node packageDependencies.js)"; do 
  npm --global install $d
  npm link $d
done