webpack

1、核心概念

  • entry 入口

    指示 webpack 从哪个文件开始构建/打包

  • output 输出

    指示 webpack 打包完成的文件输出哪里去

  • loader 加载器

    webpack 自身能力有限,只能处理 js/json 文件,但是遇到 css/html 等文件就没办法处理

    loader 能将 webpack 不识别的文件编译加载成 webpack 能识别的文件,这样才能打包处理

  • plugin 插件

    功能比 loader 更加强大,增强 webpack 的功能

  • mode 模式

    development 开发环境

    production 生产环境

2、基本使用

安装

  • 初始化 package.json

    npm init -y

  • 下载

    npm i webpack webpack-cli -D

使用

  • 开发模式

    npx webpack ./src/js/index.js -o ./build/js --mode=development

    能够处理 JS 文件(能将 ES6 模块化编译成浏览器能识别的语法)

  • 生产模式

    npx webpack ./src/js/index.js -o ./build/js --mode=production

    能够处理 JS 文件(能将 ES6 模块化编译成浏览器能识别的语法)

    压缩 JS 代码

3. 配置详情

3.1 webpack.config.js基本配置

const path = require("path");
module.exports = {
    //配置对象
    entry: './src/js/index.js',//入口
    output: {
        path: path.resolve(__dirname, "build"), //目录
        filename: "./js/build.js"
    },
    mode: 'development'//模式
}

//npx webpack 直接启动

3.2 less的打包

//在入口文件中 引入less文件
import '../less/public.less'
import '../less/test.less'

//安装loader包
npm install less less-loader style-loader css-loader --save-dev

//配置package.json文件
module: {
    rules: [{
        test: /\.less$/i, //检测文件是否是less文件
        use: [{ //执行顺序  从上向下  从右向左依次同步执行
            	loader: 'style-loader', //将js中的css模块以style标签的方式插入到页面中
        		},
              //如果loader不需要配置信息可以直接这样书写
              'css-loader', //将css文件以commonjs模块方案整合到到js中
              {
                  loader: 'less-loader', //将less文件编译成css文件
              },
             ],
    }, ],
},

3.3 图片的打包

//在样式中使用图片
background: url("../img/05.jpg");

//安装包
npm install url-loader --save-dev

//配置
{
    test: /\.(png|jpg|gif)$/i,
        use: [{
            loader: 'url-loader',
            options: {
                limit: 256,
                name: '[hash:10].[ext]'
            },
        }, ],
},

3.4 html的打包

//下载包并引用
const HtmlWebpackPlugin = require('html-webpack-plugin');

//插件的配置
plugins: [new HtmlWebpackPlugin({
    template: "./src/index.html"
})],
    
//解决img标签  使用html-loader
{
    test: /\.html$/i,
    loader: 'html-loader'
},
posted on 2021-06-18 11:06  文种玉  阅读(86)  评论(0编辑  收藏  举报