webpack

webpack

webpack是一个前端构建工具,前端构建工具就是把开发环境的代码转化成运行环境代码。一般来说,开发环境的代码是为了更好的阅读,而运行环境的代码则是为了能够更快地执行。因此开发环境和运行环境的代码形式也不相同。比如,开发环境的代码,要通过混淆压缩后才能放在线上运行,这样代码体积更小,而且对代码执行也不会有任何影响。一般需要构建工具处理的几种情况:

  • 代码压缩
    将JS、CSS代码混淆压缩,让代码体积更小,加载更快

  • 编译语法
    编写CSS时使用Less、Sass,编写JS时使用ES6、TypeScript等,这些标准目前都无法被浏览器兼容,因此需要构建工具编译,例如使用Babel编译ES6语法。

  • 处理模块化:
    CSS和JS的模块化语法,目前都无法被浏览器兼容。因此开发环境可以使用既定的模块化语法,但是需要构建工具将模块化语法编译为浏览器可识别形式。例如使用webpack、Rollup等处理JS模块化。

基础使用

  1. 全局安装webpack和webpack-cli
sudo npm install -g webpack
sudo npm install -g webpack-cli
  1. 创建项目目录并初始化,一路回车默认,之后就会在该目录下出现一个package.json文件。
npm init
package.json

{
  "name": "testwebpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  1. 安装webpack和webpack-cli:需要把它安装到devDependencies,运行:
npm install --save-dev webpack
npm install --save-dev webpack-cli

看package.json中,devDependencies中有了webpack

{
  "name": "testwebpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^5.52.1",
    "webpack-cli": "^4.8.0"
  }
}

npm install --save (npm install -s)和npm install --save-dev( npm install -d)的区别:
--save 会把依赖包名称添加到 package.json 文件 dependencies 键下,--save-dev 则添加到 package.json 文件 devDependencies 键下。dependencies是发布后依赖的,devDependencies是开发时的依赖。

  1. 在该目录下创建src文件夹,其中一个是入口文件app.js,一个是真正写页面的work.js。入口文件用来引入真正写页面的JS文件、CSS文件。

4.1 work.js内容:

document.write('hello,webpack')

4.2 app.js内容:

var dt = require('./work.js')

4.3 新建index.html文件(该文件和src属于同一层级),内容是:



    
         
        test 
    
     
        
test
  1. 执行命令,打包成功后,就会在项目目录下多出一个dist文件夹,里面有个main.js,index.html中
    1. 命令行执行,命令行直接执行webpack,前提是全局安装了webpack,如果不是全局安装,还需要在后面加上入口文件的路径。
    webpack
    

    使用 npm run dev

    1. 可以在package.json中设置dev关键字
    2. 通过mode指定环境。用于配置运行环境,mode的值可以为development,表示的是开发模式,或者是production,表示的是生产模式。webpack 会将 production 作为 mode 的默认值去设置。
    {
      "name": "testwebpack",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "dev": "webpack --mode development",
        "build": "webpack --mode production",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "webpack": "^5.52.1",
        "webpack-cli": "^4.8.0"
      }
    }
    
    1. 执行
    npm run dev
    

    webpack-dev-server 自动打包

    1. 安装
    npm i webpack-dev-server -d
    
    1. 修改scripts里的dev命令如下
    {
      "name": "testwebpack",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "dev": "webpack-dev-server --mode development",
        "build": "webpack --mode production"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "webpack": "^5.52.1",
        "webpack-cli": "^4.8.0",
        "webpack-dev-server": "^4.2.1"
      }
    }
    
    1. 运行npm run dev,进入 http://localhost:8080/ 即可看到效果
    2. 配置相关参数 --open 可以直接打开、--host配置IP地址、--port配置端口号

    loader加载器

    在实际开发过程中,webpack默认只能打包处理以.js后缀名结尾的模块,其他非 .js后缀名结尾的模块,webpack处理不了,需要调用loader加载器才可以正常打包

    1. 运行npm i style-loader css-loader -D 安装处理css文件的loader
    2. 在webpack.config.js的module->rules数组中,添加loader规则
    module: {
        rules:[
          {test:/\.css$/,use:['style-loader','css-loader']}
        ]
    }
    

    test表示匹配的文件类型,use表示对应要调用的loader

你可能感兴趣的:(webpack)