Струкчинский Всеволод @floatdrop · lifecycle hooks 34 publish: prepublish,...
TRANSCRIPT
Струкчинский Всеволод
@floatdrop
– найдётся
подходящий модуль
http://www.modulecounts.com 3
🎉 300 000
5
https://nodejs.org/ 6
7
Команды NPM
https://github.com/npm/npm/issues/5082#issuecomment-226919433 13
npm install npm -g
⚠ Обновитесь до 2.15.8 или 3.10.1
Что такое npm пакет?
14
1. Архив с файлами 2. В нем есть package.json
15
npm init --yes1. Создает package.json 2. И все 3. npmjs.com/generator-nm
16
17
npm install webpack
npm install --save
npm install -S
npm install --save-dev
npm install -D
http://npm.anvaka.com/#/view/2d/webpack 18
19
SemVer
https://bocoup.com/weblog/npm-by-numbers 21
1. Это просто договоренность
2. ~70% модулей имеют 0 мажорную версию
22
^ ~ x
~1.0.0 – обновлять патчи
^1.0.0 – обновлять минорные и патчи
1.0.x – обновлять x
23
^ ~ x
"request": "^2.53.x"
25
npm install --production
npm prune --production
26
npm shrinkwrap
1. Фиксирует конкретные версии пакетов
2. Сохраняет их в npm-shrinkwrap.json
3. Установка быстрее в 2.5 раза!
27
shrinkpack1. npm shrinkwrap —dev
2. shrinkpack
Скачивает .tar.gz в node_shrinkwrap
Меняет resolved в npm-shrinkwrap.json
28
npm outdated
Package Current Wanted Latest Locationdomutils 1.3.0 1.3.0 1.5.1 @npm/testnpmhandlebars 1.3.0 1.3.0 4.0.5 @npm/testnpmhbsfy 1.3.2 1.3.2 2.7.0 @npm/testnpm
29
npm outdated
david-dm.org
npm – новый простой make
31
npm startnpm stopnpm restartnpm test
npm run build
32
npm run build
33
Lifecycle hooks
34
publish: prepublish, publish, postpublishinstall: preinstall, install, postinstalluninstall: preuninstall, uninstall, postuninstallversion: preversion, version, postversiontest: pretest, test, postteststop: prestop, stop, poststopstart: prestart, start, poststartrestart: prerestart, restart, postrestart
commit?
35
{ "scripts": { "precommit": "npm test", "prepush": "npm test” }}
https://www.npmjs.com/package/husky
npm install husky -D
npm – немедленно публикуй модуль
Версионирование
37
npm version patch
2.0.0 major minor
1. Создает коммит с увеличенной версией в package.json
2. Добавляет git тег с этой версией
Публикация
38
npm publish
39
Чеклист перед публикацией
40
1. Убедиться, что ветка master
2. Посмотреть, что нет новых коммитов в upstream
3. Удостовериться, что пакет работает с зависимостями из package.json
4. Запустить тесты
5. Поднять версию – npm version
6. Опубликовать – npm publish
7. Запушить в репозиторий коммит и тег
41
npm install np -g✔ Версия Node.JS < 6✔ Ветка master
✔ Нет новых коммитов в upstream
✔ Зависимости из package.json
✔ Тесты
✔ Поднимает версию
✔ Публикует пакет
✔ Пушит коммит и тег в репозиторий
Поддержка двух версий
42
npm publish --tag=5.x-branch
npm publish --tag=latest
npm show npm dist-tags
Поддержка двух модулей
* /usr/local/lib/node_modules/got 43
A B
1. npm link node_modules* 2. npm link A
left-pad
45
npm unpublish
Удаляет пакет или конкретную версию
* Если не прошло 24 часа
.npmrc
.npmrc
https://github.com/npm/npm/issues/11283 48
cache-min=9999
loglevel=silent
progress=false
Ускоряет установку вдвое!
.npmrc
49
cache-min=9999
loglevel=silent
progress=false
save-exact=true
ignore-scripts=true
Спасибо! Вопросы?