У меня есть следующие файлы css:

<link rel="stylesheet" href="style/select.css">
<link rel="stylesheet" href="style/site.css">

И следующая конфигурация webpack

var path   = require("path");
module.exports = {
  entry: {
    app: './src/index.js'
  },

  output: {
    path: path.resolve(__dirname + '/dist'),
    filename: '[name].js',
  },

  module: {
    rules: [
      {
        test: /\.(css|scss)$/,
        use: [
          'style-loader',
          'css-loader',
        ]
      },
      {
        test:    /\.html$/,
        exclude: /node_modules/,
        loader:  'file-loader?name=[name].[ext]',
      },
      {
        test:    /\.elm$/,
        exclude: [/elm-stuff/, /node_modules/],
        loader:  'elm-webpack-loader?verbose=true&warn=true',
          options: {debug: true, warn: true},
      },
      {
        test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        loader: 'url-loader?limit=10000&mimetype=application/font-woff',
      },
      {
        test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        loader: 'file-loader',
      },
    ],

    noParse: /\.elm$/,
  },

  devServer: {
    inline: true,
    stats: { colors: true }
  },
  resolve: {
    mainFields: [ 'main'],
  }
};

Когда я использую webpack-dev-server, кажется, что на файловом сервере в памяти есть правильные файлы css. Однако когда я звоню

сборка пряжи

Он не копирует файлы css в мою папку dist и, следовательно, не может загрузить файлы css.

1
Murdock 31 Дек 2017 в 14:01

2 ответа

Лучший ответ

Вы импортируете файлы css в свои модули? Я думаю, вам нужно использовать ExtractTextWebpackPlugin, который извлекает css из пакет js в отдельный файл css.

Это не будет работать с webpack-dev-server, поэтому вам нужно отключить плагин в конфигурации, которую вы используете для dev-сервера. Есть вариант, который позволяет это сделать:

  new ExtractTextPlugin({
    filename: '[name].css',
    disable: true,
  }),
1
Giacomo Cosimato 31 Дек 2017 в 11:15

Попробуйте эту конфигурацию для webpack 4, для загрузчика:

use: [
          MiniCssExtractPlugin.loader,
          { loader: 'css-loader', options: {modules:true, importLoaders: 1 } },
          { loader: 'postcss-loader', options: {
              ident: 'postcss',
              plugins: () => [
                postcssPresetEnv(/* pluginOptions */)
              ]
            } }
        ]

Для раздела плагинов:

 new MiniCssExtractPlugin({
      filename: '[name].css' }),
0
danielpqe 20 Янв 2019 в 05:13