npm link,未安装,package.json 依赖项

npm link, not install, package.json dependencies

我想本地 link 我 package.json 中声明的所有显式依赖项。

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

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

npm link 不是为那样工作而设计的。有两种使用方式,都取决于你预先下载你想要的依赖link。

第一种方式(两步)

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

第二种方式(一步)

cd project npm link ../dependency

我想你想做的是 npm link 目标是全局安装的包(而不是全局安装 link 到文件系统上的某个目录)。 npm 不支持。

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

经过几个月的等待,我已经完成了自己的实现,我将其张贴在这里以供记录。

我有两个小脚本

一个 packageDependencies.jspackage.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