Vue сборка на Heroku не удалась при использовании Lerna - PullRequest
0 голосов
/ 02 мая 2020

Попытка разместить монорпо Лерна с Express бэкэндом + Vue веб-интерфейсом на Heroku. Компоненты содержатся внутри /packages/server и /packages/frontend соответственно. Намерение состоит в том, чтобы создать внешний интерфейс Vue во время развертывания и разместить его в виде содержимого c через Express.

. / Package. json

{
  "name": "my_app",
  "private": true,
  "scripts": {
    "bootstrap": "lerna bootstrap",
    "start": "lerna run start --stream",
    "postinstall": "npm run bootstrap",
    "build": "lerna run build --stream"
  },
  "devDependencies": {
    "lerna": "^3.20.2"
  }
}

Моя сборка -phase терпит неудачу из-за

lerna notice cli v3.20.2
lerna info Executing command in 2 packages: "npm run build"
       frontend: > frontend@0.1.0 build /tmp/build_c2cbb32af790fe0e5e4852ce2bcab8e0/packages/frontend
       frontend: > vue-cli-service build
frontend: sh: 1: vue-cli-service: not found
frontend: npm ERR! code ELIFECYCLE
frontend: npm ERR! syscall spawn
frontend: npm ERR! file sh
frontend: npm ERR! errno ENOENT
frontend: npm ERR! frontend@0.1.0 build: `vue-cli-service build`
frontend: npm ERR! spawn ENOENT

Автономный репозиторий Vue не терпит неудачу в фазе сборки таким образом, поэтому, скорее всего, проблема связана с lerna bootstrap или с тем, как Heroku строит вещи, но я не смог выяснить, в чем проблема.

Подобная настройка для create-реакции-приложения не дает сбоя, возможно, из-за того, что react-scripts является регулярной зависимостью.

Есть ли какие-то ошибки, которые мне не хватает в Lerna и devDependencies, или это проблема с Vue?

1 Ответ

0 голосов
/ 04 мая 2020

Через несколько дней я наконец понял, что не так с настройкой. Проблема двоякая:

Во-первых, кажется, что, возможно, есть проблема с vue-cli@4.3.0, поскольку даже запуск отдельного проекта не удастся построить с NODE_ENV=production из-за включения всех необходимых зависимостей as devDependencies.

npx @vue/cli create test
cd test
export NODE_ENV=production
npm install
npm run build

Для локальной разработки lerna bootstrap придерживается NODE_ENV, как и ожидалось, и даже devDependencies устанавливаются. Однако, когда он запускается как часть CI, devDependencies пропускаются.

Почему автономный проект Vue создается на Heroku без проблем, это подробно описано в документации nodejs buildpack

По умолчанию Heroku установит все зависимости, перечисленные в пакете. json в разделе зависимости и devDependencies.

Пакет сборки работает только для одноуровневого пакета , поэтому, как только вы вложите пакеты в макет monorepo, вложенные devDependencies не будут затронуты.

Перемещение Vue зависимостей из devDependencies решило мои проблемы со сборкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...