webpack系列学习三(核心概念)

136 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

webpack相关配置学习:

entry

指定webpack打包⼊⼝⽂件: Webpack 执⾏构建的第⼀步将从 Entry 开始,可抽象成输⼊

 // 入口
  // spa:单页面应用
  // mpa:多页面应用   多入口  对应  多出口
  // entry: "./src/index.js",
  entry: {
    // index: modules = [index.js, a.js] = [chunk, chunk] = chunks
    // index == chunkName
    index: "./src/index.js", // index.js  a.js index.css
    login: "./src/login.js" // login.js
  },

output

打包转换后的⽂件输出到磁盘位置:输出结果,在 Webpack 经过⼀系列处理并得出最终想要的代码后输出结果

 // 出口
  output: {
    // 生成的资源存放的位置, 必须是绝对路径
    path: resolve(__dirname, './build') ,
    // 生成的资源文件名
    // filename: 'index.js'  // 占位符 [name]
    filename: '[name][chunkhash:8].js'  // 占位符 [name],⽂件名称不要重复
  },

mode

Mode⽤来指定当前的构建环境

  • production
  • development
  • none 设置mode可以⾃动触发webpack内置的函数,达到优化的效果
  • 开发阶段的开启会有利于热更新的处理,识别哪个模块变化
  • ⽣产阶段的开启会有帮助模块压缩,处理副作⽤等⼀些功能

loader

Webpack 支持使用 loader 对文件进行预处理。你可以构建包括 JavaScript 在内的任何静态资源。并且可以使用 Node.js 轻松编写自己的 loader。

在 require() 语句中使用 loadername! 作为前缀的方式来使用 loader,或者在 webpack 配置中配置 regex 来自动应用它们 。

webpack默认只知道如何处理js和JSON模块,那么其他格式的模块处理,和处理⽅式就需要loader了

常见loader:

style-loader 将模块导出的内容作为样式并添加到 DOM 中
css-loader 加载 CSS 文件并解析 import 的 CSS 文件,最终返回 CSS 代码
less-loader 加载并编译 LESS 文件
sass-loader 加载并编译 SASS/SCSS 文件
ts-loader 像加载 JavaScript 一样加载TypeScript 2.0+
babel-loader 使用 Babel 加载 ES2015+ 代码并将其转换为 ES5

moudle

模块,在 Webpack ⾥⼀切皆模块,⼀个模块对应着⼀个⽂件。 Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。

当webpack处理到不认识的模块时,需要在webpack中的module处进⾏配置,当检测到是什么格式的模块,使⽤什么loader来处理。

 module: {
    rules: [
      {
        test: /\.css$/,
        // use: ['style-loader', 'css-loader'] // 执行顺序:自后往前
        use: [miniCssPlugin.loader, 'css-loader'] // 执行顺序:自后往前
      }
    ]
  }

Plugins

插件目的在于解决 loader 无法实现的其他事。Webpack 提供很多开箱即用的 插件

webpack 插件是一个具有 apply方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且在 整个 编译生命周期都可以访问 compiler 对象。