初识webpack----了解webpack核心概念

何为webpack?

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个 bundle。

webpack核心概念

入口(entry)

用来指示webpack应该使用哪个模块来作为其内部依赖图的开始,进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

出口(output)

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

loader

webpack 只能理解 JavaScript 和 JSON 文件,loader 能让 webpack 去处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用,以及被添加到依赖图中。

loader两个属性 test属性,识别出哪些文件会被转换。 use属性,定义出在进行转换时,应该使用哪个 loader。

示例 例如我们可以使用loader告诉webpack加载CSS文件,或将TypeScript转为JavaScript。 1、安装相对应的loader

npm install --sava-dev css-loader ts-loader

2、

module.exports = {
          
   
  module: {
          
   
    rules: [
      {
          
    test: /.css$/, use: css-loader },
      {
          
    test: /.ts$/, use: ts-loader },
    ],
  },
};

常用的loader

    babel-loader 使用 Babel 加载 ES2015+ 代码并将其转换为 ES5 ts-loader 像加载 JavaScript 一样加载 TypeScript 2.0+ url-loader 将html以及css中的图片打包成base64

插件(plugin)

loader 用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。 想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建一个插件实例。

const HtmlWebpackPlugin = require(html-webpack-plugin); // 通过 npm 安装
const webpack = require(webpack); // 用于访问内置插件

module.exports = {
          
   
  module: {
          
   
    rules: [{
          
    test: /.txt$/, use: raw-loader }],
  },
  plugins: [new HtmlWebpackPlugin({
          
    template: ./src/index.html })],
};

在上面的示例中,html-webpack-plugin 为应用程序生成一个 HTML 文件,并自动注入所有生成的 bundle。

模式(mode)

通过选择 development, production 或 none 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production。

module.exports = {
          
   
  mode: production,
};
经验分享 程序员 微信小程序 职场和发展