浅浅看下 webpack

30 阅读3分钟

先简单感受一下操作步骤

  1. 在文件夹上初始项目 : yarn init -y

  2. 安装依赖:webpack webpack-cli【安装的开发依赖,-D是为了区分开发种是否要用webpack】,命令:yarn add -D webpack webpack-cli,此时出现了文件package.json

    image.png

  3. 打包:

    • yarn webpack npx webpack(可以执行的前提是已经装上了cli)打包后目录里出现了dist文件夹;

    • package.json中直接加上script,后在终端直接输出yarn build也可以打包。

      image.png

关于webpack的一些概念

entry 入口起点--用来指定打包时的主文件

  1. 默认值是 ./src/index.js,但你可以通过在webpack.config.js中配置 entry 属性,来指定一个(或多个)不同的入口起点。 image.png

  2. entry可以传一个单文件,把地址写成这个,那打包出来的主文件就是这个【一般不改】。

    image.png

  3. entry可以传一个数组:如果打包两个文件,就用逗号分开。 image.png

  4. entry 可以放对象:这样打包的话就是两个文件,属性名 .js

    image.png

output 输出--用来指定打包的目录

  1. output属性告诉 webpack 在哪里输出它所打包的文件,以及如何命名这些文件。

  2. webpack.config.js中写上:

    image.png

  3. clean 自动清理的是path中的文件。

  4. path 指定打包目录,需要绝对路径,所以需要引入路径,path这里也需要配置一下。

    image.png

  5. 如果entry用的对象写法,那outputfilename就写成[]的,这样就能包含多个了,最后打包也能打包成多个文件【中括号内的代表变量】。

    image.png

  6. 也可以给加id值 哈希值;一般不用。

    image.png

loader

  1. webpack 只能理解 JavaScriptJSON 文件,loader 让webpack能够去处理其他类型的文件。

  2. loader 有两个属性: test 属性,识别出哪些文件会被转换。 use 属性,定义出在进行转换时,应该使用哪个loader。(单一职责,引入什么文件就要引入对应的loader)。

  3. css文件为例:

    • 安装:yarn add css-loader -Dstyle-loader

    • 配置:js中用import引入css文件并在webpack.config.jsrulestestuse

      image.png

      image.png

      image.png

    • test后面可以配置多个格式,用|隔开。

babel --转译JavaScript文件

  1. 若想在webpack中支持babel,则需要向webpack中引入babelloader
  2. 使用步骤:
    • 安装 npm install -D babel-loader @babel/core @babel/preset-env webpack

    • 配置:

      image.png

    • 另一种配置 (看需要兼容的浏览器):

      image.png

           -`exclude`选项:可以填写选择排除转译的文件。
      

plugin

  1. 扩展webpack功能。

  2. 使用步骤(以html-webpack-plugin为例):

    • 安装 yarn add -D html-webpack-plugin

    • webpack.config.js中引入;

      image.png

    • 配置。

      image.png

source Map

  1. 把源码和编译后的代码做成映射,可在打包后对源码进行调试,可以更快找到errorwarning

  2. 首先,把mode 设置为 'development'

  3. 配置 devtool: 'inline-source-map'

    image.png

    image.png

开发服务器

  1. 可以简化每次编译时的命令代码,也可以自动编译,解放双手。

  2. 一般来讲会有这几个办法编译代码:

    • 终端 直接执行 yarn webpack --watch

    • 设置为packge.json的命令,然后终端执行命令 yarn watch

      image.png

  3. webpack-dev-server可以让浏览器自动加载页面:

    • 安装 yarn add -D webpack-dev-server

    • 终端执行 yarn webpack serve,最后显示的网页就如图了;

      image.png

    • 自动打开网页 yarn webpack serve --open

    • 或者:在package.json中配置,终端执行 dev 也可以自动启动网页。

      image.png