webpack初识,版本兼容的坑你踩了吗?|青训营笔记

134 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

1.webpack是什么?

webpack是一种前端资源构建工具,一个静态模块打包器。 在webpack看来,前端所有资源文件(js/json/css/img/less)等都会作为模块处理 他根据模块依赖关系进行静态分析,打包生成对应静态资源。

image.png 上面是webpack官网画的依赖图

webpack五个核心概念 一、Entry

入口指示,webpack以哪个文件为入口起点进行开始打包,分析构建依赖关系图

二、Output

输出指示,webpack打包后资源输出到哪里去,以及怎么命名

三、Loader

在module文件下,让webpack能够去处理那些非js文件(webpack自身只理解js文件),主要是翻译作用,比如css和img

四、Plugins

插件可以用于执行范围更广得任务,插件范围包括,从打包和压缩,一直到重新定义环境中得变量等

五、Mode

模式指示webpack使用相应模式得配置

webpack一次编译

webpack -v实时编译监听,当资源文件改变,自动重新打包

image.png

2.你踩坑了没?

对于webpack的学习,最快的方法自然是看官方文档,但当你稍微了解了一番之后,就发现它有个弊端,版本没法向前兼容。

这就让我们很多初学者挠头了,很多时候搭建脚手架总是因为版本不匹配报错,(特别是webpack、webpack-cli、webpack-dev-server这三个的版本号)如下图:

image.png

当然,我截图的错误其实更加愚蠢了,上下文"context"拼成了"contest"。。。(真的很容易写错的!!!) 所以小伙伴再报错之后别急,务必先仔细校正下代码。

image.png 这个的话主要是contenBase已经被弃用了,很尴尬。

可以将你的contentBase配置改成下面的配置方法:

static: { //服务器所加载文件的目录 directory: path.join(__dirname, 'dist'), },

如果代码没问题的话,也可以采用下面的解决方法了

  • 首先:webpack,webpack-cli都在安装一遍
  • 全局安装npm i webpack –g
  • 指定版本3.0.0:npm i webpack@3.0.0 -g
  • 安装到项目依赖中npm i webpack --save-dev
  • 全局安装 npm install webpack-cli –g
  • 安装到项目依赖中 npm install webpack-cli --save-dev

问题:版本不兼容webpack版本过高

两种方法:

1)更换打包命令为: webpack ./src/main.js -o ./dist/bundle.js

2)降低webpack版本 使用3基本都可以 npm i webpack@3.0.0 -g

问题:在项目中本地安装的webpack-dev-server,无法把他当做脚本命令在powershell终端中直接运行(只有安装到全局-g的工具,可在终端中正常执行)

解决:在package.json文件中scripts中添加dev指定为该工具

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

这是我碰到过的坑,希望大家能够别被这些坑耽误太多时间啦。 学习的时候可以去仔细看看webpack整合.js,和.css文件,这样获得更深刻的理解。