我必须维护一个使用npm
的项目,但是我对此并不了解。
更具体地说,我们有2个共享的JS库和一堆特定于页面的代码(依赖于这些库),我们使用npm
和rollup
来生成特定于页面的代码束这是服务。这些库有一个package.json
文件用于其依赖关系(D3.js,jQuery等)。这些页面还具有一个package.json
文件,以包含库(带有file:path/to/file
)和其他依赖项。
依赖关系的组织方式如下:
lib1/
lib2/
requires "file:../lib1"
plugins/
page1/
requires "file:../../lib2"
page2/
requires "file:../../lib2"
在第一次尝试中,我们约定了package-lock.json
并编写了一个脚本,该脚本基本上在lib1
中跳转来运行npm install
和rollup
,然后在{ {1}}(取决于lib2
),然后对每个页面执行相同操作。
尽管有时这种方法可行,但我们会遇到随机故障,例如:
lib1
目录npm ERR! path /path/to/lib2/node_modules/.staging/@types/estree-39f5a558
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/path/to/lib2/node_modules/.staging/@types/estree-39f5a558' -> '/path/to/lib1/node_modules/@types/estree'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
存在。
有时在/path/to/lib1/node_modules/@types/estree
中失败,有时在页面中失败。
删除lib2
并没有帮助。使用package-lock.json
也无济于事。
有人知道出了什么问题吗?