First Of All !什么是webpack?
概念:本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle 。
理解:webpack 有2个核心:模块化 和 打包
模块化:
- 在 webpack 的思路中,不只是 JavaScript,图片、css、json等文件,都可以被当作模块来使用。
打包:
- 理解了webpack可以帮助我们进行模块化,并且处理模块间的各种复杂关系后,打包的概念就非常好理解了。
- 就是将webpack中的各种资源模块进行打包合并成一个或多个包(Bundle)。
- 并且在打包的过程中,还可以对资源进行处理,比如压缩图片,将scss转成css,将ES6语法转成 ES5语法,将TypeScript转成JavaScript等等操作。
Secondly 需要了解这三者关系!
webpack、node、npm之间的关系 1.webpack想要能够正常运行,必须依赖node环境 2.在安装node的时候一般会帮我们安装一个工具,叫做 npm (node packages manager / node包管理工具),这个工具只是为了帮助我们管理node环境下的各种包,比如依赖。
一、NodeJs安装
1.安装步骤
1.键盘 win+r ,以管理员方式运行cmd;
2.输入node -v ,回车;
-
4、环境变量配置 此处的环境配置主要配置的是 npm 安装的全局模块所在的路径,以及缓存cache的路径,之所以要配置,是因为以后在执行类似:npm install express [-g] (后面的可选参数-g,g代表global全局安装的意思)的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】路径中,占C盘空间。 例如:我希望将全模块所在路径和缓存路径放在我node.js安装的文件夹中(我的文件夹是nodejs),则在我的安装目录下创建两个文件夹【node_global】及【node_cache】 4.1、设置全局目录和缓存目录,创建完两个空文件夹之后,打开cmd命令窗口,输入:
1、npm config set prefix "D:\nodejs\node_global"
2、npm config set cache "D:\nodejs\node_cache"
二、webpack安装
1.安装步骤
-
1、在你喜欢的磁盘下建一个你喜欢的文件夹(名字自定义,但是建议用英文或者英文+数字)用来存放我们的项目,以后我们的所有项目都可以放到这个文件夹里面,方便我们开发和管理,然后通过cmd进入这个文件夹 * 1.1、第一种情况:如果你的文件夹建在C盘(没有跨磁盘),复制该文件夹的全路径,然后输入cd 你复制的路径,回车
* 1.2、第二种情况:如果你的文件夹在其他磁盘,则先进入对应磁盘,然后找到我们的项目文件夹
1、d:
2、cd D:\work\实训课程\examples\web
1、mkdir myWebpackProject && cd myWebpackProject
2、npm init -y
3、npm install webpack webpack-cli --save-dev
疑问:在这里,我们为什么不进行全局安装?
- 全局安装后,会造成多个项目依赖同一版本,但是有时候我们想要的是不同版本的,因此不推荐全局安装
2.webpack的基本使用
3.webpack的默认配置
- 默认入口模块
- ./src/index.js (可以删除index.js换a.js在运行,会报错)
- 默认输出
- webpack默认支持多种模块类型:比如commonJS、esmodule、AMD,这里我们使用的是commonJS
- webpack默认支持js模块和json模块(注意:在没有其他配置的情况下,webpack不认识非js模块)
三、webpack.config.js配置、package.json配置
1、package.json的配置
- 按照上面的打包方式,我们每次都要运行npx webpack,因此我们可以在package.json中添加scripts软链接
- 以下是package.json的配置:
{
"name": "webpackday1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack",
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12"
}
}
- scripts:用于指定脚本命令,供 npm 直接调用,使用方式是:npm run xxx
- 当我们设置 “scripts”: { “build”: “webpack” }, 就相当于我们执行了npx webpack,所以现在我们只需要执行npm run build
- 配置了scripts之后,命令执行时,首先会在我们本地文件(当前项目)里去找webpack,如果本地没有,才会去全局找webpack
- 我们常用的命令有 npm run dev、npm run serve、npm run build,dev和serve用来运行我们的程序,build用来打包
- devDependencies:开发时依赖,我们使用–save-dev安装时就会有这个配置
2、npm 配置淘宝镜像
- 原因:npm使用的是国外的包,下载速度慢,还会失败,所以这里我们配置一个淘宝镜像(cnpm:国内的npm)
1、安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
解释:
- 1、全局安装 cnpm
- 2、将各种包(依赖)的地址切换到 国内的淘宝镜像
3、附加
nrm 的使用:
1、cnpm i nrm -g
2、nrm ls
3、nrm use taobao
|