Струкчинский Всеволод @floatdrop · lifecycle hooks 34 publish: prepublish,...

Post on 03-Jun-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Струкчинский Всеволод

@floatdrop

– найдётся

подходящий модуль

http://www.modulecounts.com 3

🎉 300 000

5

https://nodejs.org/ 6

7

8

registry.npmjs.org

Локальный кеш

Интернет

9

npm.company.ru

Локальный кеш

Интернет

10

http://npmjs.org

11

https://npms.io

Команды 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"

http://semver.npmjs.com

24

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 часа

cnpmjs.org

46

.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

Спасибо! Вопросы?

top related