webpack拆分壓縮css并以link導(dǎo)入的操作步驟
先看一下代碼文件結(jié)構(gòu):
入口文件(index1.js)內(nèi)容:
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配置文件內(nèi)容:
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結(jié)尾的文件,i是不區(qū)別大小寫 test: [/\.css$/i], //從右往左執(zhí)行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對(duì) @import 和 url() 進(jìn)行處理,就像 js 解析 import /require() 一樣 use: ["style-loader", "css-loader"], }, { test: /\.less$/i, use: [ // compiles Less to CSS 'style-loader', 'css-loader', 'less-loader', ], }, { // webpack5默認(rèn)內(nèi)部不認(rèn)識(shí)這些文件, 所以當(dāng)做靜態(tài)資源直接輸出即可 test: /\.(eot|svg|ttf|woff|woff2)$/, type: 'asset/resource', generator: { filename: 'font/[name].[hash:6][ext]' } }], }, };
我們進(jìn)行打包然后運(yùn)行打包后的html文件:
發(fā)現(xiàn)css樣式是通過js生成style標(biāo)簽的形式添加上去的
我們運(yùn)行打包后會(huì)發(fā)現(xiàn)less轉(zhuǎn)為了css文件,但css文件確通過js加入style標(biāo)簽,下面我們將css進(jìn)行拆分出來,并以link標(biāo)簽引入
步驟:
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結(jié)尾的文件,i是不區(qū)別大小寫 test: [/\.css$/i], //從右往左執(zhí)行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對(duì) @import 和 url() 進(jìn)行處理,就像 js 解析 import /require() 一樣 use: [MiniCssExtractPlugin.loader, "css-loader" ], }, { test: /\.less$/i, use: [ // compiles Less to CSS MiniCssExtractPlugin.loader, 'css-loader', 'less-loader', ], }, { // webpack5默認(rèn)內(nèi)部不認(rèn)識(shí)這些文件, 所以當(dāng)做靜態(tài)資源直接輸出即可 test: /\.(eot|svg|ttf|woff|woff2)$/, type: 'asset/resource', generator: { filename: 'font/[name].[hash:6][ext]' } }], }, };
注意:
- HtmlWebpackPlugin是將css文件以link形式引入到打包后的html頁面中的。
- use配置項(xiàng)是從右至左的。
- 在css和less使用中即(use配置項(xiàng)中)MiniCssExtractPlugin.loader一定不要放在css-loader后面和style-loader前面,因?yàn)閏ss-loader和less-loader是對(duì)@import和url()進(jìn)行處理的,就像js解析import/require()一樣(放在它之后相當(dāng)于還沒進(jìn)行解析就拆分了會(huì)報(bào)錯(cuò))。而style-loader是把CSS插入到DOM中的(放在它之前相當(dāng)于已經(jīng)將CSS插入到DOM中了再進(jìn)行拆分會(huì)報(bào)錯(cuò))。
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結(jié)尾的文件,i是不區(qū)別大小寫 test: [/\.css$/i], //從右往左執(zhí)行,不能改變順序style-loader是 CSS 插入到 DOM 中,css- loader是對(duì) @import 和 url() 進(jìn)行處理,就像 js 解析 import /require() 一樣 use: [MiniCssExtractPlugin.loader, "css-loader" ], }, { test: /\.less$/i, use: [ // compiles Less to CSS MiniCssExtractPlugin.loader, 'css-loader', 'less-loader', ], }, { // webpack5默認(rèn)內(nèi)部不認(rèn)識(shí)這些文件, 所以當(dāng)做靜態(tài)資源直接輸出即可 test: /\.(eot|svg|ttf|woff|woff2)$/, type: 'asset/resource', generator: { filename: 'font/[name].[hash:6][ext]' } }], } };
4、進(jìn)行打包
發(fā)現(xiàn)多了一個(gè)main.css文件,打開網(wǎng)頁進(jìn)行查看:
main.css文件以link方式引入進(jìn)去了 并且被壓縮了
到此這篇關(guān)于webpack拆分壓縮css并以link導(dǎo)入的文章就介紹到這了,更多相關(guān)webpack拆分壓縮css內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript模板引擎實(shí)現(xiàn)原理實(shí)例詳解
這篇文章主要介紹了JavaScript模板引擎實(shí)現(xiàn)原理,結(jié)合實(shí)例形式詳細(xì)分析了JavaScript模板引擎原理、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-12-12動(dòng)態(tài)的改變IFrame的高度實(shí)現(xiàn)IFrame自動(dòng)伸展適應(yīng)高度
動(dòng)態(tài)的改變IFrame的高度,實(shí)現(xiàn)IFrame自動(dòng)伸展,父頁面也自動(dòng)神縮原理: 在IFrame子頁面一加載的時(shí)候,調(diào)用父IFrame對(duì)象,改變其高度2012-12-12javascript實(shí)現(xiàn)判斷鼠標(biāo)的狀態(tài)
這篇文章主要介紹了javascript實(shí)現(xiàn)判斷鼠標(biāo)的狀態(tài)的相關(guān)代碼,十分簡單實(shí)用,有需要的小伙伴可以參考下。2015-07-07讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)
下面小編就為大家?guī)硪黄孌IV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09