автор:LeanCloud weakish
Поделитесь некоторыми практическими советами по инструментам управления пакетами npm, надеясь немного улучшить качество жизни разработчиков интерфейсов и Node.js.
Большинство разработчиков интерфейса и Node.js неотделимы от npm в своей повседневной работе.Как вы относитесь к npm? Если вы считаете, что npm великолепен, то вы можете прочитать эту статью, возможно, есть несколько советов, которые вы не замечали раньше, которые могут сделать ваш npm более удобным. Если вы считаете, что npm — это плохо, вы также можете прочитать эту статью, возможно, вы обнаружите, что с некоторыми хитростями npm станет немного менее плохим.
npm ci
Не обманывайтесь его названием.npm ci
Не только для систем непрерывной интеграции, в повседневной разработке,npm ci
Очень практично. а такжеnpm install
разные,npm ci
согласно сpackage-lock.json
Установите зависимости, которые могут гарантировать, что вся команда разработчиков использует зависимости с одной и той же версией, и не тратить время на устранение различных странных проблем, вызванных несогласованными зависимостями. Не только это,npm ci
Существует также приятный побочный эффект ускорения установки модуля узла. потому чтоnpm ci
непосредственно на основеpackage-lock.json
При установке версии, указанной в , нет необходимости вычислять и решать проблему удовлетворения зависимостей, что в большинстве случаев может значительно ускорить процесс установки модуля узла. Если вы когда-либо подозревалиnpm install
Если это слишком медленно, и вы используете менее совместимый yarn и менее совместимый pnpm, вы можете попробоватьnpm ci
, возможно, вы обнаружите, что на самом деле npm также может быть менее медленным.
Кроме того, еслиpackage-lock.json
устаревшее (иpackage.json
конфликт), тоnpm ci
Очень важно сообщать об ошибках, чтобы предотвратить устаревание зависимостей проекта.
имеютnpm ci
, в основном я использую его только при введении новых зависимостейnpm install
.
Уведомление,npm ci
Существующие автоматически очищаются перед установкойnode_modules
,такnpm ci
Естественно, таких проблем, как несогласованность, которая может быть вызвана инкрементальной установкой, можно избежать. (Это также означает, что вы можете запомнить на одну команду меньшеnpm prune
. ), хотя, если у вас медленная сеть, это может быть не так уж здорово. Не паникуйте, вы можете использовать--prefer-offline
, чтобы максимально использовать глобальный кеш npm для ускорения процесса установки.
Конечно, с момента использованияnpm ci
, то не забудьте поставитьpackage-lock.json
Присоединяйтесь к репозиторию git.
npm outdated
npm ci
на основеpackage-lock.json
Заблокируйте версию зависимостей, чтобы обеспечить согласованность среды разработки проекта. Но это не означает, что версия зависимости заблокирована. Чтобы воспользоваться исправлениями ошибок, новыми функциями и улучшениями производительности, внесенными новой версией, необходимо регулярно обновлять зависимые версии. В этом случае рекомендуется использоватьnpm outdated
. В нем будут перечислены зависимости проекта, которые не были обновлены до текущей последней версии. Красный цвет означает, что он соответствует указанному семантическому диапазону версий и теоретически может быть обновлен без мозгов (npm update
обновит все красные зависимости сразу). Желтый цвет указывает на то, что он не соответствует указанному семантическому диапазону версий, например обновлениям основных версий, что может привести к проблемам совместимости.
Некоторые проекты находятся в фазе сопровождения и не планируют добавлять новые функции, и, может быть, даже менее серьезные проблемы исправлять не планируется, но серьезные проблемы, такие как уязвимости в системе безопасности, все еще нуждаются в управлении. В это время вы можете использоватьnpm audit
Команда для вывода списка версий зависимостей проекта с уязвимостями безопасности. Проекты, которые находятся в активной разработке, также должны быть обеспокоены уязвимостями безопасности, но посколькуnpm install
Автоматически запускать при появлении новых зависимостейnpm audit
, plus будет запускаться периодическиnpm outdated
, поэтому запустите вручнуюnpm audit
Возможностей не много.
npx
Как упоминалось ранее, он в основном используется только при введении новых зависимостей.npm install
, нет упоминания о глобальной установке. Глобальная установка, конечно, также должна использоватьnpm install
. Однако, чтобы обеспечить согласованность в среде разработки,npm install --global
Следует использовать с осторожностью. Лично рекомендуется использовать глобальную установку только при установке некоторых повседневных инструментов, а инструменты, необходимые для разработки проекта, устанавливаются как зависимости разработки, а затем использоватьnpx
передача.
Не рекомендуется:
npm install --global webpack
webpack ...
рекомендовать:
npm i -D webpack
npx webpack ...
здесьi -D
даinstall --save-dev
краткая форма .
Для некоторых разовых временных задач можно запускать соответствующие инструменты напрямую через npx, избавляя от хлопот ручной установки и загрязненияdevDependencies
.
Например, предыдущий проект был запакован с помощью webpack, а теперь я хочу временно попробовать эффект от перехода на накопительную упаковку:
npx rollup ...
npx достаточно умен, чтобы автоматически установить накопительный пакет, если он не найден в пути.
npx очень полезен для проверки совместимости разных версий. Ниже приведены некоторые примеры.
нужныйcowsay
Функция или исправление, которые были объединены в основную ветку GitHub, но еще не выпущены для npmjs, попробуйте:
npx github:piuccio/cowsay
Временный тест для внутреннего обслуживанияcowsay
ветка:
npx git+ssh://my.hosted.git:cowsay.git#semver:^1
В настоящее время, используя версию узла LTS (10), я хочу попытаться создать узел сценария под 12, который может работать:
npx -p node@12 npm run build
Из приведенного выше видно, что когда имя пакета и имя команды различаются (npm
командаnode
при условии), вы можете использовать-p
option указывает имя пакета.
npm run
существуетpackage.json
изscripts
Добавьте команды к свойствам (например:"foo": "echo foo"
) можно пройтиnpm run foo
Запустите соответствующую команду. Это очень удобный механизм запуска задач автоматизации, связанных с проектом, предоставляемый npm, который похож наmake
. Но запустить его напрямуюmake
(без каких-либо аргументов) запустит задачу по умолчанию, но напрямуюnpm run
(без каких-либо аргументов) перечислит всеscripts
команда объявлена в .
; npm run
Lifecycle scripts included in leancloud-realtime:
test
npm run lint && npm run build && npm run docs && npm run test:node && npm run test:browser
available via `npm run-script`:
precommit
pretty-quick --staged
commitmsg
commitlint -e $GIT_PARAMS
lint
eslint --ignore-path .gitignore src test plugins && tsc realtime.d.ts --strict
...
разное
Вот еще несколько советов, которые я лично не нахожу особенно полезными, но потребности и предпочтения у всех разные, и вы можете найти их полезными. Если у вас есть какие-либо советы, которыми вы хотите поделиться, пожалуйста, оставьте комментарий.
-
npm init -y
по умолчанию,npm init
позволит вам ответить на некоторые вопросы.npm init -y
Вы можете пропустить эти вопросы и начать разработку напрямую. Причина, по которой я не рекомендую это, заключается в том, что если вы собираетесь начать разработку приложения как можно скорее, вы будете использовать фреймворк в большинстве случаев, и почти все фреймворки имеют по крайней мере один на npmjscreate-xxx-app
Мешок. Так что в основном у вас нет возможности печататьnpm init
чтобы ответить на эти вопросы. И если вы собираетесь писать компонент или библиотеку, тоpackage.json
Метаинформация в компоненте или библиотеке важна для пользователя компонента или библиотеки (даже если это компонент или библиотека для вашего собственного использования, в будущем вы можете не вспомнить контекст, в котором был написан компонент или библиотека) , не рекомендуется пропускать эти вопросы. Конечно, нетерпение — одно из трех достоинств программиста, и вы можете подумать, что я могу исправить это после того, как закончу разработку. Но, вообще говоря, проекты часто начинаются тогда, когда вы больше всего заинтересованы (или чуть менее противны) в документировании этих контекстов. Если вам не терпится сделать это в начале проекта, после завершения разработки, скорее всего, это будет еще менее интересно. Точно так же README также должен быть написан до начала проекта. -
npm repo
Может открыть репозиторий исходного кода проекта (в большинстве случаев GitHub), у него также есть родственная команда,npm home
чтобы открыть домашнюю страницу проекта. Однако я лично считаю, что Intellisense IDE или редактора (тип просмотра, просмотр документа, определение просмотра и т. д.), как правило, более эффективны, чем эти две команды. -
.npmignore
Файлы могут содержать список файлов, которые вы не хотите упаковывать, и не публиковать некоторые нерелевантные файлы в npmjs. Однако унифицированное использование.gitignore
Он может удовлетворить потребности большинства сценариев. Более того, есть только.gitignore
на случай, если,npm publish
будет уважать.gitignore
заявление, в то время как.npmignore
а также.gitignore
В присутствии обоих,npm publish
будет игнорировать.gitignore
, а не принимать союз двух. Другими словами,.gitignore
игнорировать, но.npmignore
Файлы, которые не игнорируются, будут упакованы и опубликованы. Итак, используйте.npmginore
Это означает одновременное ведение двух списков, которые в основном дублируются. В то же время, как только кто-либо из членов команды по случайной небрежности или незнакомому.npmignore
а также.gitignore
Если детали отношения неверны, можно опубликовать конфиденциальную информацию в npmjs, что приведет к инциденту безопасности. - Сокращенные версии различных команд npm, например, использованные выше.
npm i -D
. Эти люди считают, что им не нужно специально запоминать их. часто вводимые команды, вы можетеnpm help
Посмотрите, есть ли короткая версия. Неважно, если вы не проверите.npm t
а такжеnpm test
и дажеnpm run test
Разница ни в коем случае не является узким местом эффективности разработки. Во многих случаях это просто вопрос личных предпочтений, например, людям, которые хотят как можно меньше печатать, понравитсяnpm t
, понравится людям, стремящимся запомнить как можно меньшеnpm run test
(Никогда по ошибкеnpm build
выражатьnpm run build
при возникновении проблем), другим может понравитьсяnpm test
Такой умеренный вариант. -
npm xmas
Угадайте, что вы получите, когда наберете эту команду? Вы можете попробовать сами. Подсказка: эта команда совершенно бесполезна. ;-)