Можно ли игнорировать отсутствующие NPM (одноранговые) зависимости? - PullRequest
1 голос
/ 11 апреля 2020

Попытка поиграться с reactjs, и у меня очень ограниченное знакомство с npm.

Я пробежал:

npx create-react-app my-app

Installing template dependencies using npm...
npm WARN react-scripts@3.4.1 requires a peer of typescript@^3.2.1 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of node-sass@^4.0.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of sass@^1.3.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN sass-loader@8.0.2 requires a peer of fibers@>= 3.1.0 but none is installed. 
You must install peer dependencies yourself.
npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta but none is installed. 
You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\webpack-dev-server\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\watchpack\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.12 (node_modules\jest-haste-map\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.12: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

> added 1606 packages from 750 contributors and audited 931160 packages
> in 165.13s

reactjs - чрезвычайно популярный фреймворк. Нормально ли пропустить dependencies из коробки при установке fre sh?

Я видел где-то, что можно вручную добавить то, чего не хватает с npm install --save-dev xxxxx.

Вот что возвращается, когда я запустил следующее:

npm ls

    npm ERR! peer dep missing: typescript@^3.2.1, required by react-scripts@3.4.1
    npm ERR! peer dep missing: node-sass@^4.0.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: sass@^1.3.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: fibers@>= 3.1.0, required by sass-loader@8.0.2
    npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev |
    | >= 3.7.0-beta, required by tsutils@3.17.1
    npm ERR! peer dep missing: typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev |
    | >= 3.7.0-beta, required by tsutils@3.17.1
    npm ERR! missing: mkdirp@0.5.3, required by node-pre-gyp@0.14.0
    npm ERR! missing: minimist@1.2.5, required by mkdirp@0.5.3
    npm ERR! missing: npm-normalize-package-bin@1.0.1, required by npm-packlist@1.4.8
    npm ERR! missing: npm-normalize-package-bin@1.0.1, required by npm-bundled@1.1.1
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: minimist@1.2.5, required by rc@1.2.8
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: minipass@2.9.0, required by tar@4.4.13
    npm ERR! missing: mkdirp@0.5.3, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: minipass@2.9.0, required by fs-minipass@1.2.7
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0
    npm ERR! missing: minipass@2.9.0, required by minizlib@1.3.3
    npm ERR! missing: mkdirp@0.5.3, required by node-pre-gyp@0.14.0
    npm ERR! missing: minimist@1.2.5, required by mkdirp@0.5.3
    npm ERR! missing: console-control-strings@1.1.0, required by npmlog@4.1.2
    npm ERR! missing: inherits@2.0.4, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: console-control-strings@1.1.0, required by gauge@2.7.4
    npm ERR! missing: string-width@1.0.2, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: code-point-at@1.1.0, required by string-width@1.0.2
    npm ERR! missing: is-fullwidth-code-point@1.0.0, required by string-width@1.0.2
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: number-is-nan@1.0.1, required by is-fullwidth-code-point@1.0.0
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: string-width@1.0.2, required by wide-align@1.1.3
    npm ERR! missing: minimist@1.2.5, required by rc@1.2.8
    npm ERR! missing: inherits@2.0.4, required by glob@7.1.6
    npm ERR! missing: once@1.4.0, required by glob@7.1.6
    npm ERR! missing: once@1.4.0, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: minipass@2.9.0, required by tar@4.4.13
    npm ERR! missing: mkdirp@0.5.3, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: minipass@2.9.0, required by fs-minipass@1.2.7
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0
    npm ERR! missing: minipass@2.9.0, required by minizlib@1.3.3
    npm ERR! missing: safe-buffer@5.1.2, required by readable-stream@2.3.7
    npm ERR! missing: safe-buffer@5.1.2, required by string_decoder@1.1.1
    npm ERR! missing: strip-ansi@3.0.1, required by gauge@2.7.4
    npm ERR! missing: strip-ansi@3.0.1, required by string-width@1.0.2
    npm ERR! missing: ansi-regex@2.1.1, required by strip-ansi@3.0.1
    npm ERR! missing: wrappy@1.0.2, required by inflight@1.0.6
    npm ERR! missing: wrappy@1.0.2, required by once@1.4.0
    npm ERR! missing: safe-buffer@5.1.2, required by tar@4.4.13
    npm ERR! missing: yallist@3.1.1, required by tar@4.4.13
    npm ERR! missing: safe-buffer@5.1.2, required by minipass@2.9.0
    npm ERR! missing: yallist@3.1.1, required by minipass@2.9.0

Итак, я пропускаю примерно 5 или около того, которые были показаны в конце установки / установки реакции, или я пропускаю ~ 30 -50 или около того, что npm ls указывает?

Если я npm start проекта, он, кажется, работает нормально. Нужно ли вообще все эти недостающие dependencies? Как в мире вы можете отслеживать, что нужно -vs- нет?
И как вы узнаете, когда сталкиваетесь с проблемой из-за отсутствия чего-то?

Я пытался установить некоторые из dependencies, но они просто зависят от того, чего не хватает dependencies. Это похоже на бесконечную игру в погоне за хвостом.

Как я могу верить, что все в порядке? Если я просто скажу привинтить его и продолжать пытаться установить более 50 модулей (и все их зависимости), это просто сработает? Я чувствую себя очень подавленным, и я еще даже не написал ни одного куска кода.

спасибо!

Редактировать / обновить:

Обновлен из v10.15.3 -> v12.16.2 (установил старую версию лет go для игры с реагировать на родную). Удалил папку моего предыдущего проекта и пересоздал реагирующий проект. Все отсутствующие зависимости исчезли, за исключением:

npm WARN tsutils@3.17.1 requires a peer of typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta |
| >= 3.7.0-dev || >= 3.7.0-beta but none is installed. You must install peer dependencies yourself.

при выполнении «npm ls» также отображается только машинопись как единственное, что отсутствует. Итак, я рад видеть, что это соответствует тому, о чем сообщил процесс установки при установке.

, который оставляет меня со следующими вопросами.

1) Node / NPM поставляется с "default" пакеты установлены? Я не понимаю, как наличие старой версии Node, когда я сам не устанавливал ничего лишнего, вдруг сделало бы доступными все модули, которые ранее отсутствовали? Особенно, когда они все сторонние, и в этом весь смысл npm (возможность управлять сторонними пакетами / модулями). как я могу предотвратить это снова (всегда ли мне нужно обновлять узел сразу, когда появляются новые версии?)

2) я пытался установить машинопись как:

npm install -g typescript --save-dev
npm install typescript --save-dev

, но ни один не получил предупреждение на go прочь

Я должен был сделать:

npm install typescript

, который наконец получил предупреждения на go прочь. но это добавило машинопись к моим зависимостям прямо в моем пакете. json. Означает ли это, что библиотека машинописного текста будет включена в мой окончательный проект, который экспортируется для загрузки на мой веб-сайт? Очевидно, я не хочу, чтобы там были дополнительные файлы (только машинописный текст похож на 50 МБ).

Спасибо!

1 Ответ

1 голос
/ 11 апреля 2020

Reactjs - чрезвычайно популярный фреймворк.

Нормально ли пропустить dependencies из коробки при установке fre sh?

Да, это абсолютно нормально. И это даже не должно сдерживать ваш прогресс в изучении react. На самом деле этот сценарий зависимости является скорее проблемой npm, поскольку начиная с npm v3.0, одноранговые зависимости не устанавливаются автоматически при npm install .

Я могу вручную добавить то, чего не хватает, с помощью npm install --save-dev xxxxx.

Да, но это будет продолжающаяся битва. Существует целый ряд пакетов, полностью разработанных для install peer dependencies, лучше изучите использование пакета, если вам необходимо установить эти peer dependencies.

Если я запустил npm start, проект будет работать нормально. Нужно ли вообще все эти недостающие dependencies? Как в мире вы можете отслеживать, что нужно, а не? И как вы узнаете, когда вы столкнетесь с проблемой из-за того, что чего-то не хватает?

Нет, они вам совершенно не нужны, и поэтому проект работает нормально.

На самом деле, позвольте мне дать вам некоторое представление о сценарии reactjs. Чтобы избавить вас от npm боли зависимости , поэтому команда React внедрила инновации create-react-app, который делает запуск react довольно простым и быстрым.

Поэтому, когда вы запускаете npx create-react-app my-app, чтобы запустить react проект, в фоновом режиме это зависит от основного пакета, называемого response-scripts . На самом деле, обратите внимание, что когда вы запускаете npm start, он вызывает react-scripts start.

Многие из этих peer dependencies требуются dependencies из react-scripts. Вы увидите это, если осмотрите ./node_modules/react-scripts/package.json

Я попытался установить некоторые из зависимостей, но они просто зависят от большего количества зависимостей, которые отсутствуют. Это похоже на бесконечную игру в погоне за хвостом. Как я могу верить, что все в порядке? Если я просто скажу привинтить его и продолжать пытаться установить более 50 модулей (и все их зависимости), это просто сработает?

Не go там! Вот почему реагирует рекомендует create-react-app, он установит обязательные зависимости. Как только ваш проект сочтет определенный пакет обязательным, npm start не удастся. В этот момент вы можете запустить npm i --save @package или npm --save-dev @package

Примечание: Замените @package пакетом, необходимым для вашего проекта. И обратите внимание на «я», которое работает как сокращение от «установить»

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