当我运行npm link
命令时,它会全局安装该项目,并似乎将其中的devDependencies也安装了。
是否有一种方式可以在运行npm link
时不包含devDependencies,比如使用--only=production
标志?
在npm@4.x
或更低版本中
当您在other_module
中运行npm link
时,将同时创建依赖项和devDependencies符号链接。
--production
标志不会改变任何内容,仍然会创建指向整个目录的符号链接
在npm@5.1.0
他们解决了这个问题!
如果您删除node_modules
,然后执行npm link --only=production
,它会在符号链接之前运行安装,因此确实排除了devDependencies文件夹。
npm link --only=production
,但是当我查看全局位置(/Users/me/.nvm/versions/node/v12.18.3/lib/node_modules/my-package
)时,我发现那里有一个node_modules
文件夹,里面包含我的开发依赖,比如react
。 - Saadnpm link
无法实现此操作。问题在于,如果您仅安装该依赖项中的生产环境依赖项,则可以将其链接,但是您将无法再对该依赖项进行开发(因为缺少 devDependencies)。反之亦然:如果您安装了 devDependencies,则无法再进行链接。
解决方案:一个名为 npm-local-development 的包位于 https://github.com/marcj/npm-local-development
它基本上做的与 npm link
相同,但通过建立文件观察器并自动在后台同步文件更改来解决 devDependency 限制,同时排除所有 devDependencies/peerDependencies。
.links.json
的文件。将每个包名称及其本地相对文件夹的路径写入其中,如下所示:
{ "@shared/core": "../../my-library-repo/packages/core" }
npm-local-development
。让它在后台运行。免责声明:我是这个免费开源项目的作者。
npm pack
,然后在示例中指向打包文件。