Webpacker困惑

问题描述 投票:3回答:1

几个月前,我将Webpack实施到我的Rails应用程序中,并正确地编译和组织了JS,CSS,图像,SVG和字体,并在需要时重命名了它们。

现在Webpacker可用了,并且更集成到Rails中,我基本上有两个问题:

所有编译文件放在哪里?我当前的Webpack设置将它们全部输出到/ public,我可以在其中看到它们。 Webpacker放在哪里?

我将Webpacker的任何自定义配置放在哪里?例如:处理Sass,图像,SVG和字体等?

谢谢

编辑:

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
  entry: {
    'application': [
      './app/assets/scripts/application.js',
      './app/assets/styles/application.scss'
    ]
  },
  output: {
    path: path.join(__dirname, 'public', 'assets', 'application'),
    filename: 'js/[name].js',
    publicPath: '/assets/application/'
  },
  watch: false,
  devtool: 'cheap-module-eval-source-map',
  module: {
    rules: [
      {
        test: /\.s[ac]ss$/,
        use: ExtractTextPlugin.extract({
          use: ['css-loader?url=true', { loader:"resolve-url-loader", options: { debug: true} }, 'sass-loader?sourceMap']
        })
      },
      {
        test: /\.svg$/,
        use: 'file-loader?name=svg/[name].[ext]'
      },
      {
        test: /\.(gif|png|jpe?g)$/,
        use: 'file-loader?name=img/[name].[ext]'
      }
      // {
      //   test: /\.css$/,
      //   use: ExtractTextPlugin.extract({
      //     use: 'css-loader'
      //   })
      // }
    ]
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      '$': 'jquery',
      'window.$': 'jquery',
      jQuery: 'jquery',
      'jQuery': 'jquery',
      'window.jQuery': 'jquery',
      jquery: 'jquery',
      'jquery': 'jquery',
      'window.jquery': 'jquery'
    }),
    new ExtractTextPlugin('css/[name].css'),
    new webpack.DllReferencePlugin({
      context: '.',
      manifest: require('./public/assets/vendor/json/vendor.json')
    }),
  ]
};
ruby-on-rails webpack assets webpacker
1个回答
0
投票

我在Rails 5的app / assets / stylesheets / applications.scss中使用了一些图像,当我使用Webpacker切换到Rails 6时出现错误。

我让他们来工作

  1. 创建两个目录:app / javascript / images /app / javascript / styles /
  2. import('styles/application.css')添加到app / javascript / packs / application.js
  3. 制作一个新文件,app / javascript / styles / application.css,然后将我的CSS移到其中
  4. 将图像移动到app / javascript / images /文件夹
  5. app / javascript / styles / application.css中的网址更改为backgound-image: image-url("../images/image.png");

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.