npm link,不链接 devDependencies

13

当我运行npm link命令时,它会全局安装该项目,并似乎将其中的devDependencies也安装了。

是否有一种方式可以在运行npm link时不包含devDependencies,比如使用--only=production标志?


看起来这可能是一个错误 - https://github.com/npm/npm/issues/5188 - chrismarx
3个回答

21

npm@4.x或更低版本中

当您在other_module中运行npm link时,将同时创建依赖项和devDependencies符号链接。

--production标志不会改变任何内容,仍然会创建指向整个目录的符号链接

npm@5.1.0

他们解决了这个问题!

如果您删除node_modules,然后执行npm link --only=production,它会在符号链接之前运行安装,因此确实排除了devDependencies文件夹。


8
有可用的文档吗?npm link docu似乎不够详尽... - Beat
4
这个在6.0+版本还能用吗?我尝试在我的包中运行npm link --only=production,但是当我查看全局位置(/Users/me/.nvm/versions/node/v12.18.3/lib/node_modules/my-package)时,我发现那里有一个node_modules文件夹,里面包含我的开发依赖,比如react - Saad

5
目前使用 npm link 无法实现此操作。问题在于,如果您仅安装该依赖项中的生产环境依赖项,则可以将其链接,但是您将无法再对该依赖项进行开发(因为缺少 devDependencies)。反之亦然:如果您安装了 devDependencies,则无法再进行链接。

解决方案:一个名为 npm-local-development 的包位于 https://github.com/marcj/npm-local-development

它基本上做的与 npm link 相同,但通过建立文件观察器并自动在后台同步文件更改来解决 devDependency 限制,同时排除所有 devDependencies/peerDependencies。

  1. 安装 npm-local-development: npm i -g npm-local-development
  2. 在根目录下创建名为 .links.json 的文件。
  3. 将每个包名称及其本地相对文件夹的路径写入其中,如下所示:

    { "@shared/core": "../../my-library-repo/packages/core" }

  4. 打开控制台并在该根包中运行 npm-local-development。让它在后台运行。

免责声明:我是这个免费开源项目的作者。


是的,这个软件包做了类似的事情,并且更加成熟:https://github.com/ORESoftware/npm-link-up - Alexander Mills

2
我使用的一个解决方法是使用npm pack,然后在示例中指向打包文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接