Webpack 使用

简介

Webpack 主要有五个核心属性

  1.Entry

    入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图

  2.Output

    输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去,以及如何命名。

  3.Loader

    Loader 让 webpack 能够去处理那些非 JavaScript 文件 ( webpack 自身只理解 JavaScript )
       例如:.img .css

  4.Plugins

    插件( Plugins )可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩, 一直到重新定义环境中的变量等。

 使用

webpack 默认的入口和出口文件分别是:

// 默认入口文件
./src.js
./src/index.js // 默认出口文件 ./dist/main.js

在不进行配置的情况下,终端使用 webpack 命令,会默认寻找 ./src.js(json, wasm),然后寻找 ./src/index.js(json, wasm),输出为 ./dist/main.js

运行指令

开发环境

如下所示,入口文件为 ./src/index.js,打包后输出到 ./build/main.js,打包环境为开发环境 dev

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

生产环境

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

注意:

1.由于没有添加额外配置,webpack 仅能处理 .js/.json 文件,不能处理 .css/.img 等其他资源

2.生产环境和开发环境均能能将ES6编译

3.生产环境下会压缩代码

打包资源

通过在根目录中配置 webpack.config.js 文件可以设置打包配置文件
webpack.config.js 的构造工具都是基于Node.js平台运行的,模块化默认采用commonJS
如下:
// webpack.config.js
const path = require("path")
const HtmlWebpackPlugin = require("html-webpack-plugin")

module.exports = {
    // webpack配置
    // 入口起点
    entry: "./src/index.js",
    // 输出
    output:{
        // 输出文件名
        filename: "built.js",
        // 路径
        path: path.resolve(__dirname, "build")
    },
    // loader配置
    module:{
        rules:[
            // 详细loader配置
            {
                // 匹配哪些文件
                test:/\.css$/,
                // 使用哪些loader处理
                use:[
                    // use中loader执行顺序,从下到上(从右到左),依次执行
                    // 创建style标签,将js中的样式资源插入进去,添加到head中生效
                    "style-loader",
                    // 将css文件变成commonjs模块加载到js中,里面内容是样式字符串
                    "css-loader"
                ]
            },
            {
                test: /\.(jpg|png|gif)$/,
                loader: "url-loader",
                options: {
                    // 图片大小小于8kb, 就会被base64处理
                    // 优点:减少请求数量(减轻服务器压力)
                    // 缺点:图片体积会更大(文件请求时间变长)
                    limit: 8 * 1024,
                    // 给图片重命名
                    // [hash:10]取哈希前10位
                    // [ext]原扩展名
                    name: "[hash:10].[ext]",
          // 输出目录
            outputPath: "img" } }, { // 处理html中的img等标签引入图片
          test:
/\.html$/, loader: "html-loader", }, { // exclude 除了XXX以外所有 exclude: /\.(html|css|js)$/, // 可以交给file-loader处理 loader: "file-loader", option:{ name: "[hash:10].[ext]",
            // 输出目录
            outputPath: "medias" } } ], },
// plugins配置 plugins:[ // 详细plugins配置 // html-webpack-plugin // 默认会创建一个空的HTML, 引入打包输出的所有资源(js/css) // new HtmlWebpackPlugin() // 需求:把结构引进来 new HtmlWebpackPlugin({ // 复制指定html文件,并引入打包输出的所有资源 template: "./src/index.html" }) ], // 模式 mode: "development", }

配置开发服务器

webpack中还可添加 devServer 属性,使用 webpack serve 启动热更新

...
devServer: {
    // 启动使用webpack serve
    // 项目构建后路径
    watchFiles: path.resolve(__dirname, "build"),
    // 启动gzip压缩
    compress: true,
    // 端口号,直接使用localhost启动
    port: 3000,
},
...

 

posted @ 2022-12-27 20:16  邢韬  阅读(19)  评论(0编辑  收藏  举报