webpack4打包css的问题

发布于 2022-09-11 18:04:13 字数 1808 浏览 9 评论 0

我有两个less文件,分别为index.less , index1.less
我想打包完后也能输出index.css,index1.css
目前代码是这样的:

//webpack.config.js
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebPackPlugin = require("html-webpack-plugin");
const CleanWebpackPlugin = require('clean-webpack-plugin');

module.exports = {
  entry: {
    index : './src/index.js',
    index1 : './src/index1.js'
  },
  output: {
    filename: '[name].js',
    path: path.resolve(__dirname, 'dist')
  },
  resolve: {
    alias: {
      "@": "./packages",
    },
  },
  plugins: [
    new CleanWebpackPlugin(['dist']),
    new MiniCssExtractPlugin({
      filename: "theme/[name].css",
      chunkFilename: "[id].css"
    }),
    new HtmlWebPackPlugin({
      template: "./index.html",
      filename: "index.html"
    }),
  ],
  module: {
    rules: [
      {
        test: /\.less$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          "css-loader","less-loader"
        ]
      },
      {
        test: /\.html$/,
        use: [
          {
            loader: "html-loader",
            //options: { minimize: true }
          }
        ]
      }
    ]
  }
};
//index.js
import "../packages/index.less";
//index1.js
import "../packages/index1.less";

打包后

|-dist
 |--theme
 |  |-index.css
 |  |-index1.css
 |--index.html
 |--index.js
 |--index1.js
 

这倒是实现了我的要的结果,但是我总不能加一个less,就加一个入口js吧,那我10个less,就10个入口js,这太傻了,请问有什么好的解决办法吗?
我想的是只有一个单入口js,打包完成后目录能是这样的

|-dist
 |--theme
 |  |-index.css
 |  |-index1.css
 |  |-index2.css
 |--index.html
 |--index.js

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云淡月浅 2022-09-18 18:04:13
 import(/*webpackChunkName: 'less1' */'../packages/index.less')
 import(/*webpackChunkName: 'less2' */'../packages/index2.less')
 使用异步加载的方式设置webpackChunkName
 new MiniCssExtractPlugin({
      chunkFilename: "theme/[name].css"
    }),

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文