webpack学习01-helloworld
基本安装
首先我们创建一个目录,初始化 npm,然后 在本地安装 webpack,接着安装 webpack-cli(此工具用于在命令行中运行 webpack):
在 webpack4 之后webpack 和webpack-cli 已经分开,需要单独安装
1 | mkdir webpack-demo && cd webpack-demo |
注意:
由于npm安装走的是国外的网络,比较慢容易出现安装失败的现象。
可以用yarn安装,首先得全局安装yarn,
npm install yarn -g
。或使用nrm快速切换npm源,首先得全局安装nrm,
npm install -g nrm
。nrm 使用:
nrm ls 查看可选源。
nrm test npm 测试速度。看哪个快就use哪个。
nrm use cnpm 使用cnpm 。
现在我们将创建以下目录结构、文件和内容:
1 | webpack-demo |
src/index.js
1 | function component() { |
index.html
1 |
|
我们还需要调整 package.json
文件,以便确保我们安装包是私有的(private)
,并且移除 main
入口。这可以防止意外发布你的代码。
如果你想要了解
package.json
内在机制的更多信息,推荐阅读 npm 文档。
package.json
1 | { |
在此示例中,<script>
标签之间存在隐式依赖关系。index.js
文件执行之前,还依赖于页面中引入的 lodash
。之所以说是隐式的是因为 index.js
并未显式声明需要引入 lodash
,只是假定推测已经存在一个全局变量 _
。
使用这种方式去管理 JavaScript 项目会有一些问题:
- 无法立即体现,脚本的执行依赖于外部扩展库(external library)。
- 如果依赖不存在,或者引入顺序错误,应用程序将无法正常运行。
- 如果依赖被引入但是并没有使用,浏览器将被迫下载无用代码。
让我们使用 webpack 来管理这些脚本。
创建一个 bundle 文件
首先,我们稍微调整下目录结构,将“源”代码(/src
)从我们的“分发”代码(/dist
)中分离出来。“源”代码是用于书写和编辑的代码。“分发”代码是构建过程产生的代码最小化和优化后的“输出”目录,最终将在浏览器中加载:
project
1 | webpack-demo |
要在 index.js
中打包 lodash
依赖,我们需要在本地安装 library:
1 | npm install --save lodash |
在安装一个要打包到生产环境的安装包时,你应该使用
npm install --save
,如果你在安装一个用于开发环境的安装包(例如,linter, 测试库等),你应该使用npm install --save-dev
。可以在 npm 文档 中查找更多信息。
现在,在我们的脚本中 import lodash
:
src/index.js
1 | + import _ from 'lodash'; |
现在,由于通过打包来合成脚本,我们必须更新 index.html
文件。因为现在是通过 import
引入 lodash,所以将 lodash <script>
删除,然后修改另一个 <script>
标签来加载 bundle,而不是原始的 /src
文件:
dist/index.html
1 | <!doctype html> |
在这个设置中,index.js
显式要求引入的 lodash
必须存在,然后将它绑定为 _
(没有全局作用域污染)。通过声明模块所需的依赖,webpack 能够利用这些信息去构建依赖图,然后使用图生成一个优化过的,会以正确顺序执行的 bundle。
可以这样说,执行 npx webpack
,会将我们的脚本作为入口起点,然后 输出 为 main.js
。Node 8.2+ 版本提供的 npx
命令,可以运行在初始安装的 webpack 包(package)的 webpack 二进制文件(./node_modules/.bin/webpack
):
1 | $ npx webpack |
WARNING in configuration(配置警告)
The ‘mode’ option has not been set. Set ‘mode’ option to ‘development’ or ‘production’ to enable defaults for this environment.(‘mode’ 选项还未设置。将 ‘mode’ 选项设置为 ‘development’ 或 ‘production’,来启用环境默认值。)
输出可能会稍有不同,但是只要构建成功,那么你就可以继续。并且不要担心,稍后我们就会解决。
在浏览器中打开 index.html
,如果一切访问都正常,你应该能看到以下文本:’Hello webpack’。
hello word 就这样弄好了,是不是很简单呢