如何正确设置本地npm软件包依赖项

时间:2019-07-17 11:46:42

标签: npm webpack

我有一个带有两个与webpack捆绑在一起的Web应用程序的monorepo,以及一个供两者使用的本地react组件库。

构建过程开始时,我先构建组件,然后构建应用程序(在Docker容器内)。

组件需要做出反应,因此显然是对等依赖项。

为了在应用程序中使用那些组件,我尝试使用file:方案安装组件包。它建立了一个符号链接,所以现在我在应用程序中有两个react实例(一个来自组件库,因为它在符号链接后面有自己的node_modules),显然NPM 6无法在不链接整个目录的情况下安装本地包,所以我尝试了另一种解决方案。

我构建了组件并将组件(npm pack)打包到tarball中,然后安装了本地tarball而不是目录。

现在,它可以工作,但只能在一台机器上工作,因为npm将tarball校验和保存到packabe-lock.json中,所以当我在另一台机器上进行构建时,我得到了不同的校验和,而npm拒绝安装它。 另外,每次我更改一行代码时,重新安装软件包都不是很方便。

我设法找到了一些解决方法:

1)我可以在resolve.alias中使用webpack来确保仅使用一个实例react,但它闻起来。

2)我可以建立本地NPM存储库并将软件包推送到那里,但它实际上忽略了monorepo的目的,我需要第三方服务才能从单个git repo构建代码。

3)我可以从存储库中删除package-lock.json,但是我不想这样做,因为我有很多不同的依赖关系,并且需要对远程版本进行版本锁定和完整性检查。

我不认为我是第一个遇到此问题的人,所以谁能告诉我我到底在做什么错?如何以正确的方式设置这些依赖项,或者至少忽略特定程序包的校验和?

0 个答案:

没有答案
相关问题