webpack功能

打包:将不同类型资源按模块处理进行打包
静态:打包后最终产生静态资源
模块:webpack 支持不同规范的模块化开发

webpack的配置

我们可以通过 webpack.config.js 这个配置文件来对webpack 进行打包配置

  1. const path = require('path')
  2. module.exports = {
  3. entry:'./src/index.js', // entry:打包入口
  4. output:{
  5. filename:'main.js',
  6. path:path.join(__dirname,'dist') // output 的path必须为绝对路径
  7. }
  8. }

webpack 依赖图

当我们打包的文件依赖另外一个文件的时候,webpack 会将文件视为直接存在的依赖关系,
在打包的时候会根据配置文件的入口开始,然后递归构建 依赖关系图,这个依赖图包含 应用程序中所需要的每一个模块, 然后把所以模块打包成少量的bundle

webpack 的loader

为什么需要loader

webpack 不仅可以打包js文件,还可以打包 图片、css、字体等其他类型的资源,而支持打包其他资源的特性,来源于loader机制

import './css/index.css'  // js文件无法识别 css

这个时候我们就需要安装对应处理css 的loader包

安装
yarn add css-loader --dev

使用loader

行内使用

import 'css-loader!./css/index.css'

配置使用(推荐)

const path = require('path')
module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'main.js',
        path: path.join(__dirname, 'dist')
    },
    module: {  // module 模块的配置
        rules: [ // rules 配置规则,数组里的每一项都是一个配置规则
          { 
            test: /\.css$/,  // test: 匹配我们需要处理的文件类型,一般是一个正则表达式
            loader: 'css-loader' // 我们要使用的loader
        }
       ]
    }
}