Rails和build:css via rails assets:在Heroku/production上预编译

yftpprvb  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(111)

我有package.jsonbuild:css脚本在它。

"scripts": {
    ...
    "build:css": "tailwindcss --postcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application_compiled.css"
  },

当我运行RAILS_ENV=production rails assets:precompile时,我看到/app/assets/builds/application_compiled.cssNOT生成的。build:css似乎没有被触发。这导致:

ActionView::Template::Error (The asset "application_compiled.css" is not present in the asset pipeline.

哪个脚本应该在生产模式下运行build:css脚本?

8yparm6h

8yparm6h1#

对我来说,解决方案是手动增强预编译脚本。

task :before_assets_precompile do
  # run a command which starts your packaging
  system("yarn run build:css")
end

Rake::Task["assets:precompile"].enhance ["before_assets_precompile"]

我很难弄清楚什么是不工作的,因为./bin/dev脚本在/app/assets/builds文件夹中创建了文件。这就是为什么编译可以在localhost上工作,而不能在生产环境中工作。在测试编译过程时,最好关闭dev服务器并删除/app/assets/builds/public/assets/中的文件。如果编译工作,您应该在/public/assets文件夹中结束编译文件。
值得一提的是,app/assests/config/manifest.js应该正确配置。如果没有,您可能最终会得到ActionView::Template::Error (The asset "application_compiled.css" is not present in the asset pipeline.

相关问题