Сборка лерны очень медленная, всегда (+30 минут) - PullRequest
0 голосов
/ 18 октября 2018

Я просто присоединяюсь к новому VueJS / Webpack, основанному на архитектуре кода Lerna:

package.json
lerna.json
packages/
modules/
plugins/

Примерно каждая страница приложения была задана как отдельный модуль, который я нахожу странным и хотя неэксперт Я не уверен, что это правильный способ настройки архитектуры Lerna.

Тем не менее, package.json определяет следующее:

"scripts": {
"bootstrap": "npm install && npm run lerna && npm run app-build",
"lerna": "lerna bootstrap --hoist --nohoist=axios --nohoist=vue-chartist --nohoist=chardist",
"publish": "lerna publish",
"clean": "lerna clean",
"test": "lerna run test --parallel",
"start": "lerna run start --stream --scope=main-module",
"app-build": "lerna run build --stream --scope=main-module",
"doc": "good-doc"}

И приложение, хотя и среднего уровняsize Я бы сказал:

Размер приложения с node_modules

Сборка всегда очень медленная (+30 минут).На каждой сборке.Сборки выполняются так:

cross-env BACK_URL=back_url npm run bootstrap --hoist

Есть ли хорошие правила для более быстрой сборки?Любые идеи о том, что могло быть неправильно в моем проекте?А может это просто нормально ...

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Медленная сборка была из-за моего компьютера + много файлов для сборки вместе, я думаю.Мы внедрили lerna, поскольку каждая страница приложения представляла собой отдельный пакет, который на самом деле не был предназначен для lerna.

Мы удалили lerna из инфраструктуры, и теперь нам лучше.

0 голосов
/ 24 октября 2018

Я перешел из --hoist, чтобы использовать рабочие пространства пряжи (https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/).

Моя проблема была не в производительности, а в возможности использования опции nohoist (https://yarnpkg.com/blog/2018/02/15/nohoist/). IУ меня были некоторые ошибки с очень простой установкой из-за зависимости некоторых реагирующих скриптов, поэтому мне нужно было исключить модули из списка.

Вот мой базовый конфиг:

--> lerna.json
{
  "version": "0.0.0",
  "packages": [
    "packages/*",
  ],
  "npmClient": "yarn",
  "useWorkspaces": true
}

---> package.json
{
  "name": "root",
  "private": true,
  "workspaces": {
    "packages": ["packages/*""],
    "nohoist": ["**/babel-jest", "**/eslint", "**/jest"]
  },
  "devDependencies": {
    "lerna": "^3.4.3"
  }
}
...