1. loaders
说了这么多,
webpack
的五大功能中的loaders
还没有提到啊,老铁😎,那么,接下来我们就来看看loaders
了。首先,我们要知道loaders
是干什么的,loaders主要就是用来转化我们浏览器不认识的代码的,比如less
、scss
、ts
,我们webpack.config.js
文件中还有一个属性就是来处理这些问题的,它就是module
,注意,没有s
,没有s
,没有s
,🤐
1. 我们以css文件,来举例,
webpack
默认是不认识css文件的,我们这里就需要安装两个插件,style-loader
、css-loader
cnpm i style-loader css-loader -D
2. 然后,我们在
src
目录下的css文件夹
中新建一个main.css
,内容如下:
body {
background-color: darkcyan;
color: #fff;
}
3. 接着,我们需要把
css文件
引入到页面,这时,我们就需要找到入口文件,通过import + 路径
,这种方式来引入css文件了,看一下main.js
文件中的内容:
import './css/main.css'
var oDiv = document.querySelector('#demo');
oDiv.innerHTML = 'hello world';
4. 上面这几步准备好之后,我们需要在
webpack.config.js
文件中进行配置了,内容如下:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
module.exports = {
entry: {
main: './src/main.js',
main2: './src/main2.js'
},
output: {//出口配置
path: path.resolve(__dirname, 'dist'),
filename: '[name].bundle.js'
},
module: {
rules: [
{
test:/\.css$/,
use:['style-loader', 'css-loader']
//loader: ['style-loader', 'css-loader'] 另外的两种写法
// use:[
// {loader: 'style-loader'},
// {loader: 'css-loader'}
// ]
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
hash: true,
title: 'hello world',
template: './src/index.html'
})
],
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
host: 'localhost',
port: 8090,
open: true,
hot: true
}
}
注意:这里的属性名都是定死的,不能修改。
test
的值是一个正则用于匹配,use
中的值是我们通过那个插件来转化
5. 命令行运行
npm run dev
,好激动😘,浏览器显示如下:
![](https://img.haomeiwen.com/i11828807/7fb5510ad41236f3.png)
2. 压缩
项目上线的话,为了优化肯定是需要压缩的,
webpack
也提供了压缩的功能,4.0以后的版本可以通过改变mode
属性,来进行压缩😘,当然,也可以通过一个插件来进行压缩,这个插件就是uglifyjs-webpack-plugin
,注意,还是没有s
,没有s
,没有s
,😎。
- ① 通过mode属性来进行压缩,直接将
mode
的属性改为production
即可
build: 'webpack --mode production'
- ② 通过
uglifyjs-webpack-plugin
,来进行压缩
1. 首先,安装这个插件
cnpm i uglifyjs-webpack-plugin
2. 然后,在
webpack.config.js
中引入这个模块
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const Uglify = require('uglifyjs-webpack-plugin'); // 引入模块
module.exports = {
entry: {
main: './src/main.js',
main2: './src/main2.js'
},
output: {//出口配置
path: path.resolve(__dirname, 'dist'),
filename: '[name].bundle.js'
},
module: {
rules: [
{
test:/\.css$/,
use:['style-loader', 'css-loader']
}
]
},
plugins: [
new Uglify(), // 实例化这个模块
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
hash: true,
title: 'hello world',
template: './src/index.html'
})
],
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
host: 'localhost',
port: 8090,
open: true,
hot: true
}
}
命令行运行,
npm run build
,结果也是压缩的
网友评论