Ошибки списка NPM для отсутствующих зависимостей удаления необязательных зависимостей - PullRequest
0 голосов
/ 06 марта 2019

У меня есть проект npm, который должен быть собран на серверах сборки Mac и Windows.(Это для мобильного приложения Ionic, но я не думаю, что это имеет отношение к моей проблеме.) Одна из наших зависимостей имеет зависимость от fsevents, которая пропускается npm install на компьютерах с Windows.Однако, если я запускаю npm list --depth=0, он возвращает ошибки об отсутствующих зависимостях необязательных зависимостей.

Минимальный package.json для воспроизведения:

{
  "dependencies": {
    "@ionic/app-scripts": "^3.2.0"
  }
}

Затем я запускаю npm install:

C:\temp\nodetest>npm install
...
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

Обратите внимание, что он пропускает fsevents, поскольку он не поддерживает ОС Windows.

Теперь я запускаю список npm:

C:\temp\nodetest>npm list --depth=0
C:\temp\nodetest
`-- @ionic/app-scripts@3.2.3

npm ERR! missing: mkdirp@0.5.1, required by node-pre-gyp@0.10.3
npm ERR! missing: minimist@0.0.8, required by mkdirp@0.5.1
npm ERR! missing: minimatch@3.0.4, required by ignore-walk@3.0.1
... (many other errors like this)

Все ошибки связаны сзависимости удаленной необязательной зависимости.Есть ли способ подавить эти ошибки?Я ничего не вижу в документации npm .

Моя конечная цель - проверить, установлены ли все зависимости, и в противном случае выполнить сборку.В настоящее время я использую npm list, чтобы сделать это.Есть лучший способ сделать это?Мы не хотим запускать npm install или npm update для каждой сборки, потому что в прошлом у нас было много неожиданных ошибок.

Я также пробовал npm list --depth=0 --no-optional (основываясь на этот вопрос ), но не похоже, что --no-optional команда относится к npm list.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...