webpack整理

作者: 不忘初心_6b23 | 来源:发表于2020-11-10 15:22 被阅读0次
image.png
本篇文章基于webpack官网对webpack的基本概念进行的总结。 主要基于entry, output, loader, plugin, mode几方面阐述,本篇福比较容易理解。 image.png

webpack是基于入口的。webpack会自动的递归解析入口所需要加载的所有资源文件,然后用不同的loader来处理加载不同的文件,用plugin来扩展webpack功能。
webpack思维导图整体思想

entry(入口)

可以在webpack配置中配置entry属性,来指定一个入口起点(或多个入口起点)。默认值为 ./src。

image.png

我们看一个 entry 配置的最简单例子:
webpack.config.js

  • 单个入口(简写)语法
    用法:entry: string|Array<string>
module.exports = {
  entry: './path/to/my/entry/file.js'
};

entry 属性的单个入口语法,是下面的简写:

module.exports = {
  entry: {
    main: './path/to/my/entry/file.js'
}
  • 对象语法
    用法:entry: {[entryChunkName: string]: string|Array<string>}
    webpack.config.js
const config = {
  entry: {
    app: './src/app.js',
    vendors: './src/vendors.js'
  }
};
  • 动态入口

输入为一个函数(同步或异步),用于动态的返回上面所需 的入口内容。

module.exports = {
    entry: () => new Promise((resolve) => resolve(['./src/demo', './src/demo2']))
}

output(出口)

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output。

image.png
module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
      path: path.resolve(__dirname, 'dist'),
      filename: 'my-first-webpack.bundle.js'
  }
}
// 或者
module.exports = {
  output: {
    filename: 'bundle.js',
    path: '/home/proj/public/assets'
  }
};

多个入口起点对应的出口文件

module.exports = {
   entry: {
      app: './src/app.js',
      goods: './src/goods.js'
  },
   output: {
      filename: '[name].js',
      path: __dirname + 'dist'
  }
}
//写入到磁盘: ./dist/app.js   ./dist/goods.js

loader(加载器)

直译为“加载器”。webpack将一切文件视为模块,但是webpack原生是只能解析js文件,所以loader作用是让webpack拥有了加载和解析非javascript文件的能力。

image.png
  • file-loader
  • css-loader
  • ts-loader
  • style-loader
  • url-loader
  • image-loader
  • babel-loader
  • eslint-loadr
  • source-map-loader

webpack.config.js

module.exports = {
  module: {
    rules: [
      { test: /\.css$/,
         use: [
          {loader: 'style-loader'},
          {
            loader: 'css-loader',
            options: {
              modules: true
            }
          }
      ]

    },
      { test: /\.ts$/, use: 'ts-loader' }
    ]
  }
};

plugins(插件)

直译为“插件”。plugin可以扩展webpack的功能,让webpack具有更多的灵活性。

image.png
  • define-plugin
  • commons-chunk-plugin
  • uglifyjs-webpack-plugin
  • paralleUglifyPlugin

webpack.config.js

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

const config = {
  entry: './path/to/my/entry/file.js',
  output: {
    filename: 'my-first-webpack.bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: 'babel-loader'
      }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

module.exports = config;

mode 模式

提供 mode 配置选项,告知 webpack 使用相应模式的内置优化。

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

相关文章

  • Webpack  整理

    现状:前端开发是基于多语言、多层次的编码和组织工作,前端产品的交付是基于浏览器,这些资源是通过增量加载的方式运行到...

  • Webpack整理

    【翻译】Webpack——令人困惑的地方 webpack2 终极优化 Webpack 2 入门教程 webpack...

  • webpack整理

    本篇文章基于webpack官网对webpack的基本概念进行的总结。 主要基于 , , , , 几方面阐述,本篇...

  • 2018-3-11

    webpack 项目整理 业务项目整理 entry 本地热更新 1. 在本项目总安装webpack-dev-ser...

  • webpack总结 & 个人理解

    目录: 学习资源 概念总结 webpack必要元素 webpack其他元素 遇到的问题 常见loader整理 常见...

  • Webpack 2.0 学习过程资料整理

    Webpack学习过程及项目使用问题及资料整理 -- 2017.11.02 Webpack的简介及使用教程 Web...

  • webpack升级整理

    一、核心概念 Core Concepts: Entry Output Loaders Plugins Mode B...

  • webpack配置整理

    开始准备 为了从JavaScript模块中import一个CSS文件,需要安装并添加style-loader和cs...

  • webpack概念整理

  • webpack面试题汇总

    这是webpack系列文章的十一篇,整理了一些关于webpack的面试题,对之前的内容做一次总结webpack官网...

网友评论

    本文标题:webpack整理

    本文链接:https://www.haomeiwen.com/subject/vghjbktx.html