Я должен поддерживать проект, который использует 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
, затем делает то же самое в 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
не помогло.Использование shrinkwrap
тоже не помогло.
Кто-нибудь знает, что идет не так?