biji/webpack.md
2019-12-02 14:28:24 +08:00

2.2 KiB

webpack

这是个人学习webpack笔记

概念

webpack是一个静态文件打包器 他会递归生成一个依赖树 然后生产呢个一个或多个包(bundel)

需要了解四个概念

  1. 入口
  2. 输出
  3. loader 加载
  4. 插件

入口

入口是指webpack应在那个文件开始处理依赖图 然后输出到一个叫bundles(包)文件中 可以使用entry属性 定义入口

module.exports = {
  entry: './path/to/my/entry/file.js'
};

出口

出口是告诉webpack将所打包成功的 bundel输出到哪个位置 以及如何命名 默认为./dist 可以使用output定义

const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};

path 输出目录 filename 输出文件名

loader

loder 可以让webpack处理javascript文件之外的 默认webpack只可以处理javascript文件 loader将其他文件转化为webpack可以处理的有效模块文件 webpack loader配置有两个目标

  • test属性 用来标识要处理的某个文件或某些文件
  • use属性 表示转换时 用到那一个koader
const path = require('path');

const config = {
  output: {
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};

module.exports = config;

定义时需要写道module.rules中

插件

loader可以作为转换某种类型的模块 插件可以做各式各样的工作? 引用插件 先require() 然后加入到plugis数组中

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

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

module.exports = config;

模式

通过选择 develompmentproduction之中的一个

module.exports = {
  mode: 'production'
};

入口起点

在webpack中有多种定义entry的方法

单个入口起点

config

const config = {
  entry: './path/to/my/entry/file.js'
};

module.exports = config;