SlideShare a Scribd company logo
Multi Packages
Appications
Андрей Кучеренко
Lead Software Engineer @ EPAM Systems
kucherenko
Project Evaluation
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
Test Suites: 55 passed, 55 total
Tests: 303 passed, 303 total
Snapshots: 0 total
Time: 5.131s
Test Suites: 458 passed, 458 total
Tests: 3007 passed, 3007 total
Snapshots: 0 total
Time: 90.131s
|----------|
| % Lines |
|----------|
| 100|
Было СталоUnit Tests
Coverage
|----------|
| % Lines |
|----------|
| 89.7 |
$ tslint 'packages/*/{src/**/,test/**/}*.ts{,x}' --force
Done in 0.47s.
Found 0 exact clones with 0 duplicated lines in 0 files
0.0% (0 lines) duplicated lines out of 2302 total lines of code.
Done in 0.18s.
Took 2 min 56 sec on Jenkins
Linters
Duplications
CI
$ tslint 'packages/*/{src/**/,test/**/}*
Done in 19.47s.
Found 69 exact clones with 1467 duplicat
4.97% (1467 lines) duplicated lines out
Done in 2.75s.
Took 10 min 47 sec on Jenkins
Team 1
Git
Team 1
Project Specific
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
pkg module component service
pkg - 1.1 1.0 -
module - - 0.9 1.0
component - - - 2.0
service - - - -
Проблемы NPM
Тяжело управлять всеми пакетами одновременно
Тяжело следить за версиями
Тяжело уследить за зависимостями
Monorepos Projects
https://lernajs.io/
Возможности Lerna
Init project
Bootstrap project
Publish project
Manage versions
npm link internal packages
├── lerna.json
├── package.json
└── packages
├── awesome-component
│ └── package.json
├── awesome-module
│ └── package.json
├── awesome-package
│ └── package.json
└── awesome-service
└── package.json
{
"lerna": "2.0.0-beta.38",
"packages": [
"packages/*"
],
"version": "0.0.1"
}
➜ awesome-lerna git:(master) ✗ lerna init
Lerna v2.0.0-beta.38
Updating package.json.
Updating lerna.json.
Successfully created Lerna files
➜ awesome-lerna git:(master) ✗ lerna bootstrap
Lerna v2.0.0-beta.38
Bootstrapping 4 packages
Preinstalling packages
Symlinking packages and binaries
Postinstalling packages
Prepublishing packages
➜ awesome-lerna git:(master) ✗ lerna publish
Lerna v2.0.0-beta.38
Current version: 0.0.1
Checking for updated packages...
Comparing with: v0.0.1
➜ awesome-lerna git:(master) ✗ lerna run test
Lerna v2.0.0-beta.38
Successfully ran npm script 'test' in packages:
- awesome-component
- awesome-module
- awesome-package
- awesome-service
➜ awesome-lerna git:(master) ✗ lerna exec -- rm -rf ./node_modules
Lerna v2.0.0-beta.38
Проблемы Lerna
Зависимости с разными версиями у пакетов
npm link и все, что с этим связано
Много node_modues
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
Возможности @knitjs
Все зависимости в одном package.json
Нет node_modules в каждом репозитории
Показывает неиспользуемые и неустановленые
зависимости
✗ create-knit-app lets-start-knitting
info creating a new knit app in lets-start-knitting
success finished creating your project!
info start exploring by running:
cd lets-start-knitting
yarn start
info read more about what you can do with knit:
info https://github.com/knitjs/knit
➜ lets-start-knitting git:(master) ✗ tree
.
├── modules
│ └── node_modules
│ ├── @myscope
│ │ ├── body-component
│ │ │ ├── help.png
│ │ │ ├── index.js
│ │ │ ├── list_missing.png
│ │ │ ├── list.png
│ │ │ ├── package.json
│ │ │ ├── validate_missing.png
│ │ │ ├── validate_unused.png
│ │ │ └── valid.png
│ │ └── header-component
│ │ ├── index.js
│ │ ├── knit_logo.svg
│ │ └── package.json
│ ├── page-component
│ │ ├── index.js
│ │ ├── package.json
│ │ └── __tests__
│ │ └── page-component.test.js
│ └── webpack_entry
│ ├── index.html
│ ├── index.js
│ ├── package.json
│ └── README.md
├── node_modules
├── package.json
└── yarn.lock
➜ lets-start-knitting git:(master) ✗ tail modules/node_modules/@myscope/header-component/package.json
{
"name": "@myscope/header-component",
"version": "0.0.0",
"browser": true
}
➜ lets-start-knitting git:(master) ✗ yarn knit build
yarn knit v0.21.3
$ knit build
✔ discovering modules
✔ validating package.json
✔ discovering modules
✔ validating package.json
✔ check for missing dependencies
✔ check for unused dependencies
✔ reading package.json of modules
✔ getting last tag
✔ determining updated modules since last release
✔ rebuilding project
✔ rebuilding updated modules
✔ @myscope/body-component
✔ @myscope/header-component
✔ page-component
Done in 14.92s.
➜ lets-start-knitting git:(master) ✗ yarn knit help
yarn knit v0.21.3
$ knit help
Commands:
list [modules...] list modules and their dependencies
validate validate modules for release
server start a dev server
schema update graphql schema
version <version> version updated modules
build build updated modules
stitch update the package.json of all modules with knitted
dependencies and project meta data
publish publish updated modules
release <version> run full release pipeline on updated modules.
version > build > knit > publish > push
➜ lets-start-knitting git:(master) ✗ yarn knit list
yarn knit v0.21.3
$ knit list
✔ discovering modules
✔ reading package.json of modules
info showing dependencies for 3 modules
- @myscope/body-component (0.0.0) [2 dependencies]
- @myscope/header-component (0.0.0) [2 dependencies]
- page-component (0.0.0) [4 dependencies]
Done in 0.79s.
➜ lets-start-knitting git:(master) ✗ yarn knit validate
yarn knit v0.21.3
$ knit validate
✔ looking for `node_modules` in .*ignore files
✔ discovering modules
✔ validating package.json
✔ check for missing dependencies
✔ check for unused dependencies
Done in 0.87s.
Проблемы @knitjs
Работает только с babel, не поддерживает
typescript, coffeescript, etc.
Тяжело менять под свои нужды
Работа с версиями только в одном стиле
Не очень большое комьюнити
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
Дано:
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски
JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски

More Related Content

PPTX
Capistrano与jenkins(hudson)在java web项目中的实践
PPTX
Build & test Apache Hawq
PDF
The Challenges of Container Configuration
PDF
Zero Downtime Deployment with Ansible
PPTX
Plone deployment made easy
PDF
LibreOffice oss-fuzz, crashtesting, coverity
PDF
PuppetConf 2016: Deploying Multi-Tier Windows Applications with Application O...
PDF
PuppetConf 2016: Building Nano Server Images with Puppet and DSC – Michael Sm...
Capistrano与jenkins(hudson)在java web项目中的实践
Build & test Apache Hawq
The Challenges of Container Configuration
Zero Downtime Deployment with Ansible
Plone deployment made easy
LibreOffice oss-fuzz, crashtesting, coverity
PuppetConf 2016: Deploying Multi-Tier Windows Applications with Application O...
PuppetConf 2016: Building Nano Server Images with Puppet and DSC – Michael Sm...

What's hot (20)

PDF
Test kitchen 1.0 - Fletcher Nichol
PDF
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
PDF
Modern Infrastructure from Scratch with Puppet
PDF
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
PDF
Zero Downtime Deployment with Ansible
PDF
Docker at Digital Ocean
PDF
NSClient++ Workshop: 06 Scripting
PDF
CI : the first_step: Auto Testing with CircleCI - (MOSG)
PDF
PuppetConf 2016: Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deep...
PDF
Использование Docker в CI / Александр Акбашев (HERE Technologies)
PPT
Ng2 cli v1
PDF
Percona XtraDB Cluster before every release: Glimpse into CI testing
PDF
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
PPTX
GoSF Jan 2016 - Go Write a Plugin for Snap!
PDF
Live deployment, ci, drupal
PPTX
Groovy for System Administrators
PPTX
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
PPTX
속도체크
PDF
Lviv 2013 d7 vs d8
PDF
Test kitchen 1.0 - Fletcher Nichol
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
Modern Infrastructure from Scratch with Puppet
PuppetConf 2016: Getting to the Latest Puppet – Nate McCurdy & Elizabeth Witt...
Zero Downtime Deployment with Ansible
Docker at Digital Ocean
NSClient++ Workshop: 06 Scripting
CI : the first_step: Auto Testing with CircleCI - (MOSG)
PuppetConf 2016: Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deep...
Использование Docker в CI / Александр Акбашев (HERE Technologies)
Ng2 cli v1
Percona XtraDB Cluster before every release: Glimpse into CI testing
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
GoSF Jan 2016 - Go Write a Plugin for Snap!
Live deployment, ci, drupal
Groovy for System Administrators
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
속도체크
Lviv 2013 d7 vs d8
Ad

Viewers also liked (15)

PPTX
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
PDF
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
PPTX
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
PDF
JS Lab2017_Lightning Talks_React Perfomance
PDF
JS Lab2017_Алексей Заславский_React Fiber
PDF
JS Lab2017_Lightning Talks_Рекрутинг.js
PDF
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
PDF
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
PDF
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
PPTX
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
PDF
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
PDF
JS Lab2017_Сергей Селецкий_System.js и jspm
PDF
WebCamp 2016: Python.Максим Климишин.Типизированный Python
PDF
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
PDF
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде
JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Алексей Заславский_React Fiber
JS Lab2017_Lightning Talks_Рекрутинг.js
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for that
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеет
JS Lab2017_Сергей Селецкий_System.js и jspm
WebCamp 2016: Python.Максим Климишин.Типизированный Python
AI&BigData Lab 2016. Сергей Шельпук: Методология Data Science проектов
JS Lab2017_Redux: время двигаться дальше?_Екатерина Лизогубова
Ad

Similar to JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски (20)

PDF
PyCon JP 2024 Streamlining Testing in a Large Python Codebase .pdf
PDF
Continuous Integration Testing in Django
PDF
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
PDF
Testing Django Applications
PDF
Arbeiten mit distribute, pip und virtualenv
PPTX
Azure from scratch part 4
PDF
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
PPTX
Great Hiroshima with Python 170830
PDF
Design Summit - Migrating to Ruby 2 - Joe Rafaniello
PDF
Jenkins Pipelines
PDF
Analysis of merge requests in GitLab using PVS-Studio for C#
PDF
Antons Kranga Building Agile Infrastructures
PDF
Arbeiten mit distribute, pip und virtualenv
PDF
Strategies for Puppet code upgrade and refactoring
PDF
Quality of life through Unit Testing
PDF
Tutorial contributing to nf-core
PDF
Deploying software at Scale
PDF
Princeton RSE: Building Python Packages (+binary)
PPTX
drupal ci cd concept cornel univercity.pptx
PDF
The Secrets of The FullStack Ninja - Part A - Session I
PyCon JP 2024 Streamlining Testing in a Large Python Codebase .pdf
Continuous Integration Testing in Django
EuroPython 2024 - Streamlining Testing in a Large Python Codebase
Testing Django Applications
Arbeiten mit distribute, pip und virtualenv
Azure from scratch part 4
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
Great Hiroshima with Python 170830
Design Summit - Migrating to Ruby 2 - Joe Rafaniello
Jenkins Pipelines
Analysis of merge requests in GitLab using PVS-Studio for C#
Antons Kranga Building Agile Infrastructures
Arbeiten mit distribute, pip und virtualenv
Strategies for Puppet code upgrade and refactoring
Quality of life through Unit Testing
Tutorial contributing to nf-core
Deploying software at Scale
Princeton RSE: Building Python Packages (+binary)
drupal ci cd concept cornel univercity.pptx
The Secrets of The FullStack Ninja - Part A - Session I

More from GeeksLab Odessa (19)

PDF
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
PDF
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
PDF
DataScience Lab 2017_Блиц-доклад_Турский Виктор
PDF
DataScience Lab 2017_Обзор методов детекции лиц на изображение
PDF
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
PDF
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
PDF
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
PDF
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
PDF
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
PDF
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
PDF
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
PDF
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
PDF
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
PDF
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
PDF
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation theory and applications.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Spectroscopy.pptx food analysis technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Electronic commerce courselecture one. Pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
cuic standard and advanced reporting.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation theory and applications.pdf
Big Data Technologies - Introduction.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Chapter 3 Spatial Domain Image Processing.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Advanced methodologies resolving dimensionality complications for autism neur...
Spectroscopy.pptx food analysis technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
Unlocking AI with Model Context Protocol (MCP)
Diabetes mellitus diagnosis method based random forest with bat algorithm
Electronic commerce courselecture one. Pdf
Spectral efficient network and resource selection model in 5G networks
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Encapsulation_ Review paper, used for researhc scholars
Network Security Unit 5.pdf for BCA BBA.
cuic standard and advanced reporting.pdf

JS Lab2017_Андрей Кучеренко _Разработка мультипакетных приложения: причины, способы, риски

  • 2. Андрей Кучеренко Lead Software Engineer @ EPAM Systems kucherenko
  • 5. Test Suites: 55 passed, 55 total Tests: 303 passed, 303 total Snapshots: 0 total Time: 5.131s Test Suites: 458 passed, 458 total Tests: 3007 passed, 3007 total Snapshots: 0 total Time: 90.131s |----------| | % Lines | |----------| | 100| Было СталоUnit Tests Coverage |----------| | % Lines | |----------| | 89.7 | $ tslint 'packages/*/{src/**/,test/**/}*.ts{,x}' --force Done in 0.47s. Found 0 exact clones with 0 duplicated lines in 0 files 0.0% (0 lines) duplicated lines out of 2302 total lines of code. Done in 0.18s. Took 2 min 56 sec on Jenkins Linters Duplications CI $ tslint 'packages/*/{src/**/,test/**/}* Done in 19.47s. Found 69 exact clones with 1467 duplicat 4.97% (1467 lines) duplicated lines out Done in 2.75s. Took 10 min 47 sec on Jenkins
  • 9. pkg module component service pkg - 1.1 1.0 - module - - 0.9 1.0 component - - - 2.0 service - - - -
  • 10. Проблемы NPM Тяжело управлять всеми пакетами одновременно Тяжело следить за версиями Тяжело уследить за зависимостями
  • 13. Возможности Lerna Init project Bootstrap project Publish project Manage versions npm link internal packages
  • 14. ├── lerna.json ├── package.json └── packages ├── awesome-component │ └── package.json ├── awesome-module │ └── package.json ├── awesome-package │ └── package.json └── awesome-service └── package.json { "lerna": "2.0.0-beta.38", "packages": [ "packages/*" ], "version": "0.0.1" }
  • 15. ➜ awesome-lerna git:(master) ✗ lerna init Lerna v2.0.0-beta.38 Updating package.json. Updating lerna.json. Successfully created Lerna files ➜ awesome-lerna git:(master) ✗ lerna bootstrap Lerna v2.0.0-beta.38 Bootstrapping 4 packages Preinstalling packages Symlinking packages and binaries Postinstalling packages Prepublishing packages ➜ awesome-lerna git:(master) ✗ lerna publish Lerna v2.0.0-beta.38 Current version: 0.0.1 Checking for updated packages... Comparing with: v0.0.1 ➜ awesome-lerna git:(master) ✗ lerna run test Lerna v2.0.0-beta.38 Successfully ran npm script 'test' in packages: - awesome-component - awesome-module - awesome-package - awesome-service ➜ awesome-lerna git:(master) ✗ lerna exec -- rm -rf ./node_modules Lerna v2.0.0-beta.38
  • 16. Проблемы Lerna Зависимости с разными версиями у пакетов npm link и все, что с этим связано Много node_modues
  • 18. Возможности @knitjs Все зависимости в одном package.json Нет node_modules в каждом репозитории Показывает неиспользуемые и неустановленые зависимости
  • 19. ✗ create-knit-app lets-start-knitting info creating a new knit app in lets-start-knitting success finished creating your project! info start exploring by running: cd lets-start-knitting yarn start info read more about what you can do with knit: info https://github.com/knitjs/knit
  • 20. ➜ lets-start-knitting git:(master) ✗ tree . ├── modules │ └── node_modules │ ├── @myscope │ │ ├── body-component │ │ │ ├── help.png │ │ │ ├── index.js │ │ │ ├── list_missing.png │ │ │ ├── list.png │ │ │ ├── package.json │ │ │ ├── validate_missing.png │ │ │ ├── validate_unused.png │ │ │ └── valid.png │ │ └── header-component │ │ ├── index.js │ │ ├── knit_logo.svg │ │ └── package.json │ ├── page-component │ │ ├── index.js │ │ ├── package.json │ │ └── __tests__ │ │ └── page-component.test.js │ └── webpack_entry │ ├── index.html │ ├── index.js │ ├── package.json │ └── README.md ├── node_modules ├── package.json └── yarn.lock ➜ lets-start-knitting git:(master) ✗ tail modules/node_modules/@myscope/header-component/package.json { "name": "@myscope/header-component", "version": "0.0.0", "browser": true }
  • 21. ➜ lets-start-knitting git:(master) ✗ yarn knit build yarn knit v0.21.3 $ knit build ✔ discovering modules ✔ validating package.json ✔ discovering modules ✔ validating package.json ✔ check for missing dependencies ✔ check for unused dependencies ✔ reading package.json of modules ✔ getting last tag ✔ determining updated modules since last release ✔ rebuilding project ✔ rebuilding updated modules ✔ @myscope/body-component ✔ @myscope/header-component ✔ page-component Done in 14.92s.
  • 22. ➜ lets-start-knitting git:(master) ✗ yarn knit help yarn knit v0.21.3 $ knit help Commands: list [modules...] list modules and their dependencies validate validate modules for release server start a dev server schema update graphql schema version <version> version updated modules build build updated modules stitch update the package.json of all modules with knitted dependencies and project meta data publish publish updated modules release <version> run full release pipeline on updated modules. version > build > knit > publish > push
  • 23. ➜ lets-start-knitting git:(master) ✗ yarn knit list yarn knit v0.21.3 $ knit list ✔ discovering modules ✔ reading package.json of modules info showing dependencies for 3 modules - @myscope/body-component (0.0.0) [2 dependencies] - @myscope/header-component (0.0.0) [2 dependencies] - page-component (0.0.0) [4 dependencies] Done in 0.79s. ➜ lets-start-knitting git:(master) ✗ yarn knit validate yarn knit v0.21.3 $ knit validate ✔ looking for `node_modules` in .*ignore files ✔ discovering modules ✔ validating package.json ✔ check for missing dependencies ✔ check for unused dependencies Done in 0.87s.
  • 24. Проблемы @knitjs Работает только с babel, не поддерживает typescript, coffeescript, etc. Тяжело менять под свои нужды Работа с версиями только в одном стиле Не очень большое комьюнити