目錄
先看一下代碼檔案結構:
入口檔案(index1.js)內容:
webpack.config.js組態檔內容:
步驟:
1、安裝mini-css-extract-plugin
2、在webpack.config.js檔案中引入并配置
3、壓縮拆分出來的css檔案
4、進行打包
先看一下代碼檔案結構:

入口檔案(index1.js)內容:
import $ from 'jquery'
import './css/index.css'
import './less/index.less'
$(function () {
$('#app li:nth-child(odd)').css('color', 'red')
$('#app li:nth-child(even)').css('color', 'green')
})
import './assets/fonts/iconfont.css';
const ul = document.querySelector("ul");
const theI = document.createElement("li");
theI.className='iconfont icon-qq';
ul.appendChild(theI);
webpack.config.js組態檔內容:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
//入口檔案地址
entry: './src/index1.js',
output: {
path: path.resolve(__dirname, 'dist'),
//出口檔案名
filename: 'bundle.js',
},
plugins: [
new HtmlWebpackPlugin({
template: './public/隔行變色.html'
})],
module: {
rules: [{
//匹配.css結尾的檔案,i是不區別大小寫
test: [/\.css$/i],
//從右往左執行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對 @import 和 url() 進行處理,就像 js 決議 import /require() 一樣
use: ["style-loader", "css-loader"],
}, {
test: /\.less$/i,
use: [
// compiles Less to CSS
'style-loader',
'css-loader',
'less-loader',
],
}, { // webpack5默認內部不認識這些檔案, 所以當做靜態資源直接輸出即可
test: /\.(eot|svg|ttf|woff|woff2)$/,
type: 'asset/resource',
generator: {
filename: 'font/[name].[hash:6][ext]'
}
}],
},
};
我們進行打包然后運行打包后的html檔案:
發現css樣式是通過js生成style標簽的形式添加上去的
我們運行打包后會發現less轉為了css檔案,但css檔案確通過js加入style標簽,下面我們將css進行拆分出來,并以link標簽引入
步驟:
1、安裝mini-css-extract-plugin
npm i mini-css-extract-plugin -D //npm安裝
yarn add mini-css-extract-plugin -D //yarn安裝
2、在webpack.config.js檔案中引入并配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
//引入安裝的mini-css-extract-plugin
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
//入口檔案地址
entry: './src/index1.js',
output: {
path: path.resolve(__dirname, 'dist'),
//出口檔案名
filename: 'bundle.js',
},
plugins: [new MiniCssExtractPlugin(),
new HtmlWebpackPlugin({
template: './public/隔行變色.html'
})],
module: {
rules: [{
//匹配.css結尾的檔案,i是不區別大小寫
test: [/\.css$/i],
//從右往左執行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對 @import 和 url() 進行處理,就像 js 決議 import /require() 一樣
use: [MiniCssExtractPlugin.loader, "css-loader"
],
}, {
test: /\.less$/i,
use: [
// compiles Less to CSS
MiniCssExtractPlugin.loader,
'css-loader',
'less-loader',
],
}, { // webpack5默認內部不認識這些檔案, 所以當做靜態資源直接輸出即可
test: /\.(eot|svg|ttf|woff|woff2)$/,
type: 'asset/resource',
generator: {
filename: 'font/[name].[hash:6][ext]'
}
}],
},
};
注意:
- HtmlWebpackPlugin是將css檔案以link形式引入到打包后的html頁面中的,
- use配置項是從右至左的,
- 在css和less使用中即(use配置項中)MiniCssExtractPlugin.loader一定不要放在css-loader后面和style-loader前面,因為css-loader和less-loader是對@import和url()進行處理的,就像js決議import/require()一樣(放在它之后相當于還沒進行決議就拆分了會報錯),而style-loader是把CSS插入到DOM中的(放在它之前相當于已經將CSS插入到DOM中了再進行拆分會報錯),
3、壓縮拆分出來的css檔案
- 下載optimize-css-assets-webpack-plugin
- 引入并配置webpack.config.js檔案
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); //引入安裝的mini-css-extract-plugin const MiniCssExtractPlugin = require("mini-css-extract-plugin"); //用來壓縮拆分的CSS const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); module.exports = { //入口檔案地址 entry: './src/index1.js', output: { path: path.resolve(__dirname, 'dist'), //出口檔案名 filename: 'bundle.js', }, plugins: [new MiniCssExtractPlugin(),new OptimizeCSSAssetsPlugin({}), new HtmlWebpackPlugin({ template: './public/隔行變色.html' })], module: { rules: [{ //匹配.css結尾的檔案,i是不區別大小寫 test: [/\.css$/i], //從右往左執行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對 @import 和 url() 進行處理,就像 js 決議 import /require() 一樣 use: [MiniCssExtractPlugin.loader, "css-loader" ], }, { test: /\.less$/i, use: [ // compiles Less to CSS MiniCssExtractPlugin.loader, 'css-loader', 'less-loader', ], }, { // webpack5默認內部不認識這些檔案, 所以當做靜態資源直接輸出即可 test: /\.(eot|svg|ttf|woff|woff2)$/, type: 'asset/resource', generator: { filename: 'font/[name].[hash:6][ext]' } }], } };
4、進行打包

發現多了一個main.css檔案,打開網頁進行查看:
main.css檔案以link方式引入進去了 并且被壓縮了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321280.html
標籤:其他
下一篇:篩選出陣列里的元素出現的次數

發現css樣式是通過js生成style標簽的形式添加上去的 