使用 CLI 方式配置文件(基础)
一、基本安装
mkdir webpack1.0 && cd webpack1.0
npm init -y (初始化问题-yes)
npm install webpack webpack-cli --save-dev
会生成package.json文件:
需要创建以下目录结构、文件和内容:
webpack1.0
|- package.json
+ |- index.html
+ |- /src
+ |- index.js
-
调整 package.json 文件,以便确保我们安装包是私有的(private),并且移除 main 入口。这可以防止意外发布你的代码。
- src/index.js
function component() {
var element = document.createElement('div');
// Lodash(目前通过一个 script 脚本引入)对于执行这一行是必需的
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
- index.html
<!doctype html>
<html>
<head>
<title>webpack 1.0</title>
<script src="https://unpkg.com/lodash@4.16.6"></script>
</head>
<body>
<script src="./src/index.js"></script>
</body>
</html>
在此示例中,<script> 标签之间存在隐式依赖关系。index.js 文件执行之前,还依赖于页面中引入的 lodash。之所以说是隐式的是因为 index.js 并未显式声明需要引入 lodash,只是假定推测已经存在一个全局变量 _ 。
使用这种方式去管理 JavaScript 项目会有一些问题:
- 无法立即体现,脚本的执行依赖于外部扩展库(external library)。
- 如果依赖不存在,或者引入顺序错误,应用程序将无法正常运行。
- 如果依赖被引入但是并没有使用,浏览器将被迫下载无用代码。
让我们使用 webpack 来管理这些脚本。
二、创建一个 bundle 文件
- 首先,我们稍微调整下目录结构,将“源”代码(/src)从我们的“分发”代码(/dist)中分离出来。“源”代码是用于书写和编辑的代码。“分发”代码是构建过程产生的代码最小化和优化后的“输出”目录,最终将在浏览器中加载:
webpack1.0
|- package.json
+ |- /dist
+ |- index.html
- |- index.html
|- /src
|- index.js
- 要在 index.js 中打包 lodash 依赖,我们需要在本地安装 library:
npm install --save lodash
注意:在安装一个要打包到生产环境的安装包时,你应该使用 npm install --save
,如果你在安装一个用于开发环境的安装包(例如,linter, 测试库等),你应该使用 npm install --save-dev
。请在 npm 文档 中查找更多信息 。
- 可以在脚本中 import lodash:
src/index.js
+ import _ from 'lodash';
+
function component() {
var element = document.createElement('div');
- // Lodash, currently included via a script, is required for this line to work
+ // Lodash, now imported by this script
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
- 现在,由于通过打包来合成脚本,我们必须更新 index.html 文件。因为现在是通过 import 引入 lodash,所以将 lodash <script> 删除,然后修改另一个 <script> 标签来加载 bundle,而不是原始的 /src 文件:
dist/index.html
<!doctype html>
<html>
<head>
<title>Webpack1.0</title>
<!-- <script src="https://unpkg.com/lodash@4.16.6"></script> -->
</head>
<body>
<!-- <script src="./src/index.js"></script> -->
<script src="main.js"></script>
</body>
</html>
在这个设置中,index.js 显式要求引入的 lodash 必须存在,然后将它绑定为 _(没有全局作用域污染)。通过声明模块所需的依赖,webpack 能够利用这些信息去构建依赖图,然后使用图生成一个优化过的,会以正确顺序执行的 bundle。
可以这样说,执行 npx webpack
,会将我们的脚本作为入口起点,然后 输出 为 main.js
。Node 8.2+ 版本提供的 npx
命令,可以运行在初始安装的 webpack 包(package)的 webpack 二进制文件(./node_modules/.bin/webpack
):
构建成功
构建成功,就可以在浏览器中打开 index.html,看到以下文本:'Hello webpack'。
网友评论