美文网首页
webpack基本配置

webpack基本配置

作者: lazy_tomato | 来源:发表于2020-05-30 23:13 被阅读0次

webpack基本配置 (lazy_tomato出品)

1.网页有哪些静态资源

  • Js类型文件

    .js .jsx .coffee .ts(TypeScript)

  • css类型文件

    .css .less .sass .scss

  • Image类型文件

    .jpg .png .bmp .svg

  • Fonts文件

    .svg .ttf .gif .woff .woff2

  • 模板文件

.ejs .art .jade . pug .vue

2.为什么要用webpack

2.1 当我们静态资源过多的时候,网页加载会很慢

原因:

2.1.1 网页加载速度慢=》 因为要发很多的二次请求

2.1.2 要处理错综复杂的依赖关系=》 例如 bootstrap.js就依赖于 Jquery.js

解决办法:

2.2.1 合并,压缩文件,用精灵图,图片用Base64编码

2.2.2 用webpack打包文件 解决各个包之间错综复杂的依赖关系关系

3.什么是webpack?

webpack官网

webpack中文网

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

它是基于node.js的(所以要安装node)

4.初步使用

4.1 安装webpack

  1. 初始化(只要npm下载东西,第一步都是这个)
npm init -y
  1. 安装webpack
// 安装全局webpack
   npm install webpack --global
   //安装本地项目模块
   npm i webpack webpack-cli -D
[关于-g -S -D的详细解释博客](https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html)

*   这里推荐本地安装,以防因为版本号出bug,而且是开发依赖(上线后不需要)所以加—D

*   -D是--save -dev的简写,表示安装的包是在项目开发期间使用(开发依赖),不写默认为在上线期间使用(运行依赖)

*   webpack是指安装webpack的核心包

*   webpack-cli包含了一些在终端使用的命令
  1. 文件夹创建

    和node_modules同层级创建 文件夹

    • dist (存放以后发布的文件)

    • src (我们本地开发的文件)

4.2 不配置任何内容直接使用webpack开始打包

1.src下面创建文件index.js (随便写句话比如 console.log(’lazy_tomato‘))

2.在终端中直接

npx webpack  
//npx是npm5.0之后就自带的一个工具
//敲完这个,打包命令就会成功 dist文件夹就会出现 main.js  它就是我们打包好的js文件
//想要验证是否打包成功 可以安装vscode插件 code Runner, 全选main.js内容 右键Run code

4.3 手动配置 webpack

(由于零配置的webpack,,不能满足我们的需求,所以开始手动配置一下webpack)

1.我们配置webpack,需要在和dist文件夹同级的目录下创建文件 webpack.config.js (这个名字是默认的,后面可以修改)

2.我们开始编写webpack.config.js文件

3.如下代码

首先声明一下,前面提过了,webpack是基于node.js的 所以我们这个webpack.config.js中内容用node的写法

//引入node自带的处理路径的核心模块
const path = require('path')
​
// 设置导出内容
module.exports = {
 // 入口(打包什么文件)
 entry: path.join(__dirname, './src/index.js'),
 // 出口 (打包后放到哪里去)
 output: {
 // 出口目录(这个路径必须为绝对路径 用path.resolve 效果一样)
 path: path.join(__dirname, './dist'),
 // 输出文件名(一般用bundle.js文件)
 filename: 'bundle.js'
 },
 // 模式 :有两种 默认:production(生产环境)  development(开发模式) 
 // 区别就是,生产环境打包后的代码会压缩,开发模式,代码不会压缩 
 mode: 'development'
}

4.如果你想改变配置文件的名字 可以用

npx webpack --config 自定文件名.js

5.打包文件要敲很长一串代码,太长了,记不住怎么办 => 去package.json设置脚本

"scripts": {
 "build": "webpack"
 },

解释一下

  • 之前它自己有的 如下代码 可以删掉
   "test": "echo \"Error: no test specified\" && exit 1"
  • build 这个名字可以自定义,但是通常取这个名字

  • 后面的webpack 意思就是 我们去执行webpack(就是我们下载的wepack文件)

  • 如果你修改了配置文件名 可以这样写

   "scripts": {
     "build": "webpack  --config  自定义文件名.js"
     },
  • 以后再执行打包命令 就不用 npx webpack了,直接用
   npm run build

首先解释一下这行代码 用 npm run(去执行) build(这个脚本) (build,可以自定义,run 自定义名字)

切记: 上面的脚本是用npm去执行,不是node

提醒 :package.json是json文件,json文件几个比较特殊的地方

*   **不能写注释**

*   **属性和属性名都要有双引号 “ ”**

*   **对象中最后的元素,最后,不要有逗号**

4.4 安装启动本地服务的插件 (webpack-dev-server)

  1. 之前我们去调试,需要手动的打开dist文件夹中的index.html 不方便调试

  2. webpack有一个插件 webpack-dev-server 可以自动创建本地服务,(因为现在要开始装各种插件了,多说一句,npm中为了方便和规范,规定所有的包名都是小写的,所以我们安装这个插件,可以自己敲,就是npm i 对应包名 -D (这里的本地服务插件,就是方便我们调试,所以使用本地安装,其他的包按情况设置))

  3. 安装 webpack-dev-server

    npm i webpack-dev-server -D
  1. 开始使用这个插件

    4.1 简单说一下直接手敲 不配置的话

npx webpack-dev-server

4.2 不配置的话 默认是创建一个本地服务 127.0.0.1:8080

  • 不配置太菜了,不方便我们操作,所以还是要配置一下

  • 在webpack.config.js 中 和entry相同层级添加代码 适当添加逗号

      devServer:{
         // 设置本地服务端口号
         port:3000,
         //显示webpack打包进度
         progress:true,
         //设置自动打开的初始目录
         contentBase:'./dist',
         //启动gzip压缩
         compress:true
         }
  • 配置好后 运行
       npx webpack-dev-server
  • 但是还有问题,此时我们执行这个插件,我还是要敲一大串代码,不开心,和执行webpack一样

    在package.json中 scripts 属性下 添加脚本代码

"dev": "webpack-dev-server"]

为了不让大家混淆 我这里贴一下我的代码 此时我的scripts 中是这样的

"scripts": {
         "build": "webpack",
         "dev": "webpack-dev-server"
        },

4.5 安装html插件(html-webpack-plugin)

为什么要用这个插件?之前我们dist中的index.html是我们自己创建的,不方便,有了这个插件就可以自动根据模板生成一个HTML文件到内存中

  1. 第一步安装 顾名思义,直接 i 就好了,同时它也是本地依赖
npm i html-webpack-plugin -D
  1. 配置这个插件

    2.1 在src中创建一个html文件为模板

    1. 2 首先 在webpack.config.js 文件中

      文件顶部 引入我们安装的 模块

const htmlwebpackplugin =require('html-webpack-plugin')

和entry同级 添加

//是一个数组 plugin这个单词的意思就是插件 它里面放着以后我们所有配置的插件,其实webpack就是一堆插件堆叠起来的
        plugins:[
         //new一个实例出来
         new htmlwebpackplugin({
         //模板html路径
         template:path.join(__dirname,'./src/index.html'),
         //输出html文件名
         filename:'index.html'
         })
        ]
  1. html-webpack-plugin它有什么作用
  • 能够自动引入js文件

  • 能够根据指定的模板文件 (index.html),在内存中生成一个新的 index.html,并且在浏览器中打开的页面,就是该插件在内存中生成的页面

  • contentBase : path.join(__dirname,'./src'), dev-server 中的这个也就无效了, 因为会自动打开index.html页面,不需要自己指定了

4.6 安装loader

相关文章

网友评论

      本文标题:webpack基本配置

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