咨询:Rails生产环境中应通过哪个脚本触发build:css?
解决生产环境下Rails预编译资产未触发build:css的问题
核心原因
Rails 默认不会自动触发 package.json 中自定义的 build:css 脚本,可通过以下方式关联触发:
方法1:修改package.json的build脚本(推荐)
Rails 在执行 assets:precompile 时,会自动调用 npm 的 build 脚本(如果存在)。只需把 build:css 整合到 build 脚本中:
"scripts": { ... "build": "npm run build:css", "build:css": "tailwindcss --postcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application_compiled.css" }
之后执行 RAILS_ENV=production rails assets:precompile,Rails 会自动运行 npm run build,进而触发 build:css 生成目标 CSS 文件。
方法2:手动串联执行命令
如果不想修改 package.json,可以在预编译前手动先执行 build:css:
RAILS_ENV=production npm run build:css && rails assets:precompile
方法3:配置Rails资产管道触发脚本
在 config/application.rb 中添加配置,让 Rails 在预编译资产时执行指定脚本:
config.assets.precompile += %w( application_compiled.css ) config.assets.configure do |env| env.register_preprocessor 'text/css', :tailwind do |input| `npm run build:css` input end end
这种方式需要确保脚本执行时机正确,相对前两种稍复杂。
内容的提问来源于stack exchange,提问作者knagode
相关产品推荐
相关产品推荐

