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. Затем снова запустите установщик.
Примеры повторного запуска установщика
./bin/rails javascript:install:[esbuild|rollup|webpack]
./bin/rails css:install:[tailwind|bootstrap|bulma|postcss|sass]
После этого Rails автоматически обновляется необходимыми сценариями.
2. Добавьте скрипт в
package.json
Если по какой-то причине вы не можете обновить node/npm, вам просто нужно скопировать команды «Добавить скрипт» в package.json в соответствии с инструкциями.
- Добавить скрипт (см. ниже)
{
"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"
}
}
- пряжа строить
- сборка пряжи: 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 ...
снова.