【问题标题】:How do I install a template (CSS & JS) with Webpackers in Rails 6?如何在 Rails 6 中使用 Webpackers 安装模板(CSS 和 JS)?
【发布时间】: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.6Ruby 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.cssapp/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


【解决方案1】:

步骤:

  1. 本地克隆埃及艳后主题库
git clone https://github.com/moesaid/cleopatra.git moesaid_cleopatra
  1. rails new s_67585007 --no-ri --no-rdoc
  2. rails g controller home index
  3. config/routes.rb 中添加了根路由
root 'home#index'
  1. 添加了带有要求的 tailwindcss 包
yarn add tailwindcss@compat postcss@7 autoprefixer@9
  1. postcss.config.js
module.exports = {
  plugins: [
    require('tailwindcss'),
    require('autoprefixer'),
    require('postcss-import'),
    require('postcss-flexbugs-fixes'),
    // require('apexcharts'),
    require('postcss-preset-env')({
      autoprefixer: {
        flexbox: 'no-2009'
      },
      stage: 3
    })
  ]
}

7.cp moesaid_cleopatra/dist/js/script.js s_67585007/app/javascript/packs/cleopatra.js

  1. 在公共文件夹中复制样式、图像和 javascript 文件
cp moesaid_cleopatra/dist/{css,img} s_67585007/public
  1. app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>Test67585007</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <link rel="stylesheet" href="https://kit-pro.fontawesome.com/releases/v5.12.1/css/pro.min.css">
    <link rel="stylesheet" type="text/css" href="css/style.css">  
    <%= 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' %>
  </head>

  <body>
    <%= yield %>
    <%= javascript_pack_tag 'cleopatra', 'data-turbolinks-track': 'reload' %>
  </body>
</html>
  1. moesaid_cleopatra/dist/index.html 复制的html 粘贴到app/views/layouts/home/index.html.erb 并使用app/views/layouts/application.html.erb 进行调整可以检查更改here
  2. app/javascript/packs/application.js
import "../stylesheets/application.scss";

import ApexCharts from 'apexcharts';
window.ApexCharts = ApexCharts; // return apex chart 
  1. app/javascript/stylesheets/application.scss
@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

然后开始rails server

注意:您可能需要安装一些额外的包,在编译过程中显示包丢失clipboard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2020-01-08
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多