首页 > 其他分享 >webpack入门一篇

webpack入门一篇

时间:2024-10-21 16:46:26浏览次数:8  
标签:exports 入门 入口 loader webpack module path entry 一篇

1、webpack生命周期

Webpack 构建过程是生命周期的概念,主要包括以下几个阶段:

1.1:初始化

从配置文件和shell arguments读取参数,初始化Compiler对象。

根据配置文件中的entry,确定构建的入口文件。

1.2:配置

解析配置文件,合并shell arguments和plugin定义的默认配置,得到最终配置。

1.3:编译

从入口文件开始,调用对应的 loader 进行处理;递归地解析入口文件中依赖的模块,同样应用相应的 loader。

使用得到的配置信息,创建Compiler对象,进入编译阶段。

1.4:构建

从入口点开始,经过语法分析、依赖解析、打包、最小化、压缩等步骤生成bundles。

1.5:输出

输出bundles到output配置指定的目录/文件名称,还可以输出其他资源比如html文件。

1.6:结束

执行所有的插件的compiler.hooks.done事件回调。

2、webpack核心概念

2.1:entry

单入口(单页应用)
module.exports = {
    entry: 'entry-path'
}

// 等价于
module.exports = {
    entry: {
        main: 'entry-path'
    }
}

// 如果是多文件入口,并且将多文件打包到一起
module.exports = {
    entry: ['entry-file1-path', 'entry-file2-path']
}
多入口(多页应用)

对于多入口,配置的入口key名对应输出output配置多输出的filename中[name]占位符,一一对应

module.exports = {
    entry: {
        app1: 'app1-entry-path',
        app2: 'app2-entry-path',
    }
}

// 可以对入口进行单独的配置

// 用于描述入口的对象。你可以使用如下属性:

// dependOn: 当前入口所依赖的入口。它们必须在该入口被加载前被加载。

// filename: 指定要输出的文件名称。

// import: 启动时需加载的模块。

// library: 指定 library 选项,为当前 entry 构建一个 library。

// runtime: 运行时 chunk 的名字。如果设置了,就会创建一个新的运行时 chunk。在 webpack 5.43.0 之后可将其设为 false 以避免一个新的运行时 chunk。

// publicPath: 当该入口的输出文件在浏览器中被引用时,为它们指定一个公共 URL 地址。请查看 output.publicPath。
module.exports = {
    entry: {
        app1: {
            import: 'app1-entry-path',
            filename: 'mainapp'
        },
        app2: {
            import: 'app2-entry-path',
            dependOn: 'app1'
        },
    }
}

2.2:plugin

插件配置用于文件优化、资源管理、环境变量注入等,贯穿整个构建过程;完成loader不能完成的任务

module.exports = {
    plugin: [
        // 创建plugin实例
        new Plugin(),
        ...
    ]
}

2.3:loader

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或 "load(加载)" 模块时预处理文件。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript 或将内联图像转换为 data URL。

配置参数 test正则匹配文件,use使用的loader以及对应的配置,options为对loader的配置

// 需要注意的是 loader的执行顺序是至下而上的,配置在后面的先执行
// 下例子中 sassloader\cssloader\styleloader的顺序执行
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            options: {
              modules: true,
            },
          },
          { loader: 'sass-loader' },
        ],
      },
    ],
  },
};

2.4:output

output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。

// path 输出文件夹位置
// filename 输出文件名称
module.exports = {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js',
}


// 如果是多文件入口,并且将多文件打包到一起 name与entry多入口名称一致
module.exports = {
    output: {
        filename: '[name].js'
    }
}

输出中filename配置的[name]模板字符串还可以有其他配置,参考Output | webpack 中文文档 | webpack中文文档 | webpack中文网

标签:exports,入门,入口,loader,webpack,module,path,entry,一篇
From: https://blog.csdn.net/CoM_CS/article/details/143077436

相关文章