自学 webpack4.x 基础篇---webpack基础配置

327 阅读6分钟

webpack

webpack

学习webpack之前,我们应该了解一下什么是webpack

webpack 可以看做是 模块打包机。它做的事情是,分析你的项目结构,找到 JavaScript模块以及其它的一些浏览器不能直接运行的扩展语言(如:Scss,TypeScript 等),并将其打包为合适的格式以供浏览器使用。

那么它能够做一些什么事情呢?

代码转换、文件优化、代码分割、模块合并、自动刷新、代码校验、自动发布等。

那么接下来就让我们一起来学习吧!加油!!!

安装 webpack

  • 安装本地的 webpack
  • 现在webpack的版本是 4.x 的,webpack 和 webpack-cli 分开管理了,需要两个都安装。在终端中进入你的项目中输入命令:yarn add webpack webpack-cli -D

既然大家都学到 webpack 了,相信大家都知道终端,也知道怎么运行了。

  • 这里的 -D:表示 上线的时候不需要这两个包(这两个包都是开发依赖)
  • 注意:安装 webpack 之前先要初始化 项目:yarn init -y,输入命令并执行,会生成 package.json 文件(package.json 是记录安装模块的数量)

完成上面的步骤之后,你的项目的目录结构应该是这样的:

webpack 可以进行零配置,但是很弱。

  • 打包工具(需要打包的目录 , 一般在 src) -> 输出后的结果 (js模块)

  • 打包 (支持 js 的模块化)

  • 运行 webpack 的命令: npx webpack

上面说的是什么意思呢?那么让我们一步步的来看。

上面说到 我们需要打包的目录,就是那个目录下面的那些文件需要打包,一般是在 src 目录下面:

  • 那么,在我们的项目中新建一个 src 目录,并在 src 目录中新建一个 index.js 文件,在这个 js 文件中写一个输出的语句。

接下来我们来打包一下试一试,看看不配置 webpack 是否可以打包成功!运行命令:npx webpack ,并执行.

我们可以看到,是能够打包的 在 dist 目录下面生成了一个 main.js 文件。那么我们点开看一下这个文件中的内容。如图:

打包之后的 js 文件,这就说明 我们的 webpack 不用进行配置也是可以打包的。

那么接下来让我们来学习 如何手动配置 webpack

  • 默认配置文件的名字: webpack.config.js or webpackfile.js 有两种,一般我们用第一种 。在我们项目的根目录下建立配置文件。

webpack 是 node 写出来的,需要用 node 的写法来运行。

简单配置文件:

let path = require('path') //引入内置的 path 模块  
module.exports = {
    mode: 'production', //模式:这里有两种模式  production(生产模式)(打包后压缩的代码) 	
                        // development(开发模式)
    entry: './src/index.js', // 入口(从哪个地方开始打包)
    output: { //出口
        filename: 'bundle.js', //打包后的的文件名
        path: path.resolve(__dirname, 'build') //路径,打包后的文件存放的地方 。 要求:路径必须是一个绝对路径
                                    // resolve() 解析:可以把相对路径解析成绝对路径。
    }
} 

那么,写好简单的配置文件之后,让我们在来 运行一下 webpack。

现在打包出来的文件夹名字为 build,打包出来的 js 文件为 bundle.js,跟咱们的配置文件对应起来了。说明配置文件起作用了,可以把那个 dist 文件夹删除了。

接下来,让我们在 package.json 中配置一些脚本,来执行 webpack 和 webpack-cli。

我们先打开 package.json 文件看一下:

目前的 package.json 文件内容是上图的样子,接下来让我们配置一些脚本:

{
  "name": "webpack-dev-1",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
		// 这里是添加的脚本  
  "scripts": {  
      		// 这个 webpack 是执行的node-modules 里面的 webpack
    "build": "webpack --config webpack.config.js",
  },
  "devDependencies": {
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10"
 }
}

配置完脚本之后 ,启动 webpack 的命令 为: npm run build . 我们在终端输入这条命令,同样可以启动 webpack。

webpack 开发服务的配置

  • webpack 内置开发服务:yarn add webpack-dev-server -D (安装开发服务,它也是开发依赖)

  • 运行开发服务的命令: npx webpack-dev-server

  • 好处:它并不会去真实的打包文件,它只是生成了一个内存中的打包

  • 安装好之后,我们来运行一下看一看:输入命令 npx webpack-dev-server 执行如下图:

它会给我们生成一个服务器的地址,我们直接访问这个地址就可以访问到我们的页面,如图:

当然,因为我们没有在配置文件中配置开发服务,现在访问到的是我们项目的根目录,那我们接下来配置一下我们的开发服务。

module.exports = {
    devServer: { //开发服务器的配置
        port: 3000, //端口配置
        contentBase: './build' // 以 build 目录作为我们的静态服务(直接访问我们的 build 目录)
    },
    mode: 'production', //模式:这里有两种模式  production(生产模式)(打包后压缩的代码) 	
                        // development(开发模式)
    entry: './src/index.js', // 入口(从哪个地方开始打包)
    output: { //出口
        filename: 'bundle.js', //打包后的的文件名
        path: path.resolve(__dirname, 'build') //路径,打包后的文件存放的地方 。 要求:路径必须是一个绝对路径
                                    // resolve() 解析:可以把相对路径解析成绝对路径。
    }
}

当然,开发服务中还有一些配置,我这里就不一一说了,想要了解的可以自行百度。那么,现在在让我们运行一下服务。 在这里说一下 你如何退出当前服务 ctrl+c 可以退出当前服务。

现在,我们服务器的端口已经变成了 3000,让我们来访问一下:

现在我们直接进入到了 build 目录下,这是对的。那么,有同学就问了这样就完了吗?当然不是了,为什么会出现上图这种情况呢,因为它默认是进入到 build 目录下面去找 index.html 文件,但是我们现在没有 html文件,我们现在要做的就是打开 build 目录,在下面新建一个 index.html 文件,然后将打包后的 js文件引入进去,如图:

这时候我们在重新运行服务,然后打开浏览器去看页面
现在页面的内容是空白的,因为我们没有再 index.html 文件中写内容,按F12 打开控制台:
可以看到有一句 Hello World,这是因为这句话是我们在 js 中输出的内容,这就表明我们引入成功。

有的同学说 ,这个运行服务的命令太长了,记不住。

没关系,我们还可以在 package.json 文件中 配置我们运行服务的脚本:

{
  "name": "webpack-dev-1",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
		// 这里是添加的脚本  
  "scripts": {  
      		// 这个 webpack 是执行的node-modules 里面的 webpack
    "build": "webpack --config webpack.config.js",
    "dev": "webpack-dev-server"  //开发服务器配置       
               
  },
  "devDependencies": {
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10"
 }
}

配置完脚本之后,我们运行服务的命令就可以是:npm run dev .

今天的内容到此结束!!!