【发布时间】:2021-05-18 11:09:29
【问题描述】:
我正在尝试在我的 Rails 6 应用程序中安装 this theme - Cleopatra - built on Tailwind CSS,但我无法完全了解如何使用 webpacker 正确执行此操作。
我确信这应该相当简单,但我不使用任何 JS 框架,所以除了知道它们类似于 Bundler 和 Gemfiles 之外,我不太了解 webpacker 和 JS 包管理器。
我已成功安装 Tailwind CSS,我尝试了各种方法,但都产生错误或无法成功渲染。
所以我宁愿只是一步一步地安装它。
我正在使用Rails 6.0.3.6 和Ruby 3.0.1p64。
编辑 1
我一直在尝试the following guide,这是我得到的错误:
ERROR in ./app/javascript/stylesheets/application.scss (./node_modules/css-loader/dist/cjs.js??ref--6-1!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./app/javascript/stylesheets/application.scss)
┃ Module build failed (from ./node_modules/postcss-loader/src/index.js):
┃ ReferenceError: window is not defined
┃ at Object.<anonymous> (/ACA/node_modules/apexcharts/dist/apexcharts.common.js:6:345884)
┃ at Module._compile (/ACA/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
┃ at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
┃ at Module.load (internal/modules/cjs/loader.js:928:32)
┃ at Function.Module._load (internal/modules/cjs/loader.js:769:14)
┃ at Module.require (internal/modules/cjs/loader.js:952:19)
┃ at require (/ACA/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
┃ at Object.<anonymous> (/ACA/postcss.config.js:5:5)
┃ at Module._compile (/ACA/node_modules/v8-compile-cache/v8-compile-cache.js:192:30)
┃ at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
┃ at Module.load (internal/modules/cjs/loader.js:928:32)
┃ at Function.Module._load (internal/modules/cjs/loader.js:769:14)
┃ at Module.require (internal/modules/cjs/loader.js:952:19)
┃ at require (/ACA/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
┃ at module.exports (/ACA/node_modules/import-fresh/index.js:28:9)
┃ at loadJs (/ACA/node_modules/cosmiconfig/dist/loaders.js:9:18)
┃ at Explorer.loadFileContent (/ACA/node_modules/cosmiconfig/dist/createExplorer.js:230:12)
┃ at /ACA/node_modules/cosmiconfig/dist/createExplorer.js:252:21
┃ @ ./app/javascript/stylesheets/application.scss 2:26-228
┃ @ ./app/javascript/packs/application.js
┃
这是我的app/javascript/packs/application.js:
const images = require.context('../img', true)
const imagePath = (name) => images(name, true)
import "../packs/cleopatra";
import "../stylesheets/application.scss";
// import "apexcharts";
import ApexCharts from 'apexcharts';
window.ApexCharts = ApexCharts; // return apex chart
这是我的postcss.config.js:
module.exports = {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
require('apexcharts'),
require('postcss-import'),
require('postcss-flexbugs-fixes'),
require('postcss-preset-env')({
autoprefixer: {
flexbox: 'no-2009'
},
stage: 3
})
]
}
这是我的app/javascript/stylesheets/application.scss:
@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";
@import "cleopatra";
我通过yarn添加了apexcharts。
我的两个自定义文件都是app/javascript/stylesheets/cleopatra.css 和app/javascript/packs/cleopatra.js。
这是在我的application.html.erb:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
编辑 2
我用的是webpacker 4.3.0,你可以看到packs/cleopatra.jslooks like here是什么。
【问题讨论】:
-
虽然是针对 Bootstrap 的,但这篇文章对我将 Tailwind 主题与 Webpacker 集成有很大帮助。原理是一样的。检查它:rubyyagi.com/how-to-integrate-html-bootstrap-theme-into-rails-6
-
这是一个有趣的想法。感谢您的链接。我去看看。
-
@PedroSchmitt 我试过了,它把我带到了那里,但我遇到了无数奇怪的 JS 错误,让我感到沮丧:|所以我希望有人能给我一个关于如何做的全面纲要。
-
是的,在 Rails/Webpacker 上添加 JS 包时,我也遇到了很多错误,直到进行调整。使用您收到的特定错误/包创建一个问题,或在此处添加。我会尽量回答。
-
好酷。我用特定错误更新了问题。
标签: ruby-on-rails webpack ruby-on-rails-6