webpack的入门使用(上篇)

107 阅读4分钟

前言

webpack是目前比较主流的打包工具,它可以将多种静态资源 (js、css、less )转换成一个静态文件。不过它本身只支持处理js模块,如果还需要处理其他模块就得借助加载器,接下来就来介绍如何使用webpack。

安装webpack

首先创建一个目录,初始化npm,然后安装webpack和webpack-cli(用于处理命令行参数)

//初始化npm
npm init -y
//安装webpack和webpack-cli
npm install webpack webpack-cli --save-dev

随后在你的目录应该出现以下这些文件(为了方便看,我直接写中文了)

 你的根目录
  |- package.json
  |- package-lock.json

随后创建一个src目录,目录下放的是程序员的源代码,然后上面的结构就变成了

你的根目录
 |- package.json
 |- package-lock.json
 |- index.html
 |- /src
    |- index.js

可以打开packag.json看看,需要注意name可别起个和第三方包名字一样的了,不然到时候下载包下载不下来了,特别不要写成webpack了,main就是入口文件,其他就不要去动它了。

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "./src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^5.74.0",
    "webpack-cli": "^4.10.0"
  }
}

到这里就算是安装完成了。

webpack的五大核心概念

其实webpack不需要任何配置就可以对js文件做出处理,比如我们在使用es6模块化时,不加type=‘module’,控制台就要报错,接下来我们演示一下如何用webpack让控制台可以认识es6模块。

我们在一个count.js文件中随便写点什么,随后导出给index.js文件使用

//count.js
export default function (...res) {
    return res.reduce((p, c) => p + c, 0)
}
//index.js
import count from './js/count'
console.log(count(1, 2, 3, 4, 5))

记得要把index.js文件在html文件中引入,当然直接引入时绝对会报错的,那么这时候webpack就登场了,我们打开控制台,输入如下命令

npx webpack ./src/index.js --mode=development

npx webapck会从.bin目录中去找webpack的可执行文件,./src/index.js就是告诉webpack要打包的入口文件,随后就是告诉webpack现在是开发模式,然后webpack就会默认把打包好的文件输出到dist目录下,这时候在html文件中引入dist目录下的js文件就不会报错了

那如果我们想要打包其他的资源文件的话,webpack是不支持的,需要其他加载器去支持,所以我们需要知道webpack的五大核心概念

  • entry(入口)

    告诉webapck从哪个文件开始打包

  • output(输出)

    告诉webpack打包好的文件输出到哪里,怎么命名

  • loader(加载器)

    webpack只支持js,json格式文件的解析,解析其他资源需要loader的帮助

  • plugins(插件)

    扩展webpack的功能

  • mode(模式)

    开发模式还是生产模式

那么如果想要打包css资源该怎么办呢,首先肯定需要配置webapck,在根目录下创建一个文件叫webpack.config.js,随后打开官网,找到对应的loader,将它的配置复制粘贴过来即可,官网只有对rules的配置,其他配置要根据自己的需求写。

const path = require('path');
module.exports = {
    entry: './src/main.js',//入口文件地址
    output: {
        path: path.resolve(__dirname, "dist"), //输出文件地址,注意需要写绝对路径,因为官网就是这么说的
        filename: 'main.js',//输出的文件名
    },
    module: {
    //官方文档复制过来的rules
        rules: [
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            }
        ]
    },
    plugins: [
    ],
    mode: 'development'
}

配置好以后不要急着运行,因为会报错,你需要安装这两个加载器,css-loader和style-loader,随后记得在index.js中引入一下css文件,不然就没有意义了,然后在控制台输入npx webpack 这里就不需要像上面一样写那么长了,因为我们有配置文件了,它就会根据配置文件去执行了。

//index.js文件
import count from './js/count'
import './css/index.css'
console.log(count(1, 2, 3, 4, 5))

打开开发者工具,可以看见有创建一个style标签

说明打包成功了,那么对于其他的资源文件,比如sass,less等等,也是一样的,官网有配置,直接粘贴过来,建议查阅英文文档,因为有时候中文文档可能和英文文档不是同步更新的。

参考文档

webpack英文文档