Rails 7.0 + esbuild завершает работу приложения с ошибкой Команда "build" не найдена

Новые сгенерированные ошибки приложения Rails 7.0 при запуске.

      rails new [project name] --javascript=esbuild --css=tailwind

При создании нового проекта rails 7 я пытаюсь запустить приложение, используя bin/devкоторый сейчас использует бригадир. Тем не менее, он выдает ошибку «команда ошибки« build »не найдена».

      bin/dev
                                                                                                      !10520
16:07:31 web.1  | started with pid 53018
16:07:31 js.1   | started with pid 53019
16:07:31 css.1  | started with pid 53020
16:07:32 js.1   | yarn run v1.22.17
16:07:32 css.1  | yarn run v1.22.17
16:07:32 js.1   | error Command "build" not found.
16:07:32 js.1   | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
16:07:32 css.1  | error Command "build:css" not found.
16:07:32 css.1  | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
16:07:33 css.1  | exited with code 1
16:07:33 system | sending SIGTERM to all processes
16:07:33 js.1   | exited with code 1
16:07:33 web.1  | terminated by SIGTERM

4 ответа

Проблема

Проблема в том, что с npm < 7.1 генерация рельсов предполагает, что вы добавите команды сборки в скрипты.

      rails new my_app --javascript=esbuild --css=tailwind
...
Add "scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds" } to your package.json
...
Add "scripts": { "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css" } to your package.json

$ cat ol_npm/package.json
{
  "name": "app",
  "private": "true",
  "dependencies": {
    "@hotwired/stimulus": "^3.0.1",
  ...
  }
  // !! script section missing !!
  // Add the above scripts
}

Позже npm (>= 7.1), добавьте его в package.json для вас. Лучшее долгосрочное решение — обновить npm (решение 1), однако вы все равно можете добавлять скрипты вручную (см. решение 2 ниже), и это будет работать.

Решение

1. обновление нпм:

Исправление требовало обновления npm. Затем снова запустите установщик.

  1. js-комплектация требует npm 7.1+
  2. снова запустите установщик

Примеры повторного запуска установщика

         ./bin/rails javascript:install:[esbuild|rollup|webpack]
   ./bin/rails css:install:[tailwind|bootstrap|bulma|postcss|sass]

После этого Rails автоматически обновляется необходимыми сценариями.

2. Добавьте скрипт в package.json

Если по какой-то причине вы не можете обновить node/npm, вам просто нужно скопировать команды «Добавить скрипт» в package.json в соответствии с инструкциями.

  1. Добавить скрипт (см. ниже)
      {
  "name": "app",
  "private": "true",
  "dependencies": {
    "@hotwired/stimulus": "^3.0.1",
    ...
  },
  "scripts": {
    "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds",
    "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css"
  }
}
  1. пряжа строить
  2. сборка пряжи: css

Если вы попали сюда, как я сделал для

      esbuild: command not found

Это потому, чтоbuildскрипт есть, но надо сделатьnpm installчтобы установить все пакеты в package.json.

Я хотел бы добавить к ответу @notapatch запуск следующих команд после шага 2:

      yarn build

а потом

      yarn build:css

Пожалуйста.

Как уже говорилось, проблема в том, чтоnpm --version< 7,1

Итак, краткий ответ будет:

      npm install -g npm@latest

Затем повторитеrails new ... снова.

Другие вопросы по тегам