#javascript #npm
#javascript #npm
Вопрос:
Я должен поддерживать проект, который использует 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
тоже не помогло.
Кто-нибудь знает, что происходит не так?
Комментарии:
1. Я хотел бы увидеть инструкцию о зависимости пакета «estree» в package.json
2.
estree
этого нет ни в одном из моихpackage.json
. Он устанавливается некоторыми зависимостями (esdoc
я предполагаю). Обратите внимание, что я отредактировал сообщение, поскольку оно содержало некоторый локальный путь. Что меня озадачивает, так это то, чтоnpm
пытается установить пакеты изlib1
вlib2
. Путь вlib1
существует, кстати.3. Согласно этой ссылке , это выглядит как ошибка в
npm
и исправлено в версии 6.9.0. Попробуйте обновить свойnpm
, чтобы посмотреть, исчезнет ли pb.4. Спасибо за ссылку (я думаю, что я зашел на некоторые из этих страниц, но я не понял решения).
npm
версии 6.9.0 еще нет в Fedora (нашем дистрибутиве), и ее еще нет вnodejs
. Вы знаете ,sudo npm install npm -g
безопасно ли это ?5. Lol, что касается безопасности, теоретически в сообществе js ничего не гарантировано : facepalm:. Но шутки в сторону, да, вы можете практически считать
npm
безопасным. Нужно иметь некоторую веру в менеджер пакетов de facto для одного из крупнейших сообществ.