webpack经典7分钟入门教程(2)

Webpack 会分析入口文件,解析包含依赖关系的各个文件。这些文件(模块)都打包到 bundle.js 。Webpack 会给每个模块分配一个唯一的 id 并通过这个 id 索引和访问模块。在页面启动时,会先执行 entry.js 中的代码,其它模块会在运行 require 的时候再执行。

五.Loader介绍和使用

Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。

Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的结果。这样,我们就可以通过 require 来加载任何类型的模块或文件,比如 CoffeeScript、 JSX、 LESS 或图片。

loader 有以下这些特点:

1.Loader 可以通过管道方式链式调用,每个 loader 可以把资源转换成任意格式并传递给下一个 loader ,但是最后一个 loader 必须返回 JavaScript。

2.Loader 可以同步或异步执行。

3.Loader 运行在 node.js 环境中,所以可以做任何可能的事情。

4.Loader 可以接受参数,以此来传递配置项给 loader。

5.Loader 可以通过文件扩展名(或正则表达式)绑定给不同类型的文件。

6.除了通过 package.json 的 main 指定,通常的模块也可以导出一个 loader 来使用。

7.Loader 可以访问配置。

8.插件可以让 loader 拥有更多特性。

9.Loader 可以分发出附加的任意文件。

我们想要在应用中添加一个css文件。

WebPACK只能处理JavaScript本身,所以我们需要css-loader去处理 CSS。我们还需要style-loader去应用这个样式在CSS文件。

安装 loader:

npm install css-loader style-loader

注意:安装 loaders(只需要在本地安装,不需 -g)将会创建一个 node_modules 文件夹,在哪里 loaders 将会激活。

我们要在页面中引入一个 CSS 文件 style.css,首页将 style.css 也看成是一个模块,然后用 css-loader 来读取它,再用 style-loader 把它插入到页面中。

添加一个style.css文件

body { background: blue; }

修改 entry.js:

+ require("!style!css!./style.css"); // 载入 style.css document.write(require("./content.js"));

重新编译并更新您的浏览器看到蓝色背景。

扩展名自动绑定loader

如果每次 require CSS 文件的时候都要写 loader 前缀,是一件很繁琐的事情。

我们可以根据模块类型(扩展名)来自动绑定需要的 loader这样写require("./style.css")。

修改entry.js

- require("!style!css!./style.css"); + require("./style.css"); document.write(require("./content.js"));

注意:-表示这行删掉或者注释掉,+表示新增的内容。

编译:

webpack ./entry.js bundle.js --module-bind "css=style!css"

注意:!在shell中有特殊意义,需要转义,这样写才会成功的

webpack ./entry.js bundle.js --module-bind "css=style!css"

六.配置文件

Webpack 在执行的时候,除了在命令行传入参数,还可以通过指定的配置文件来执行。默认情况下,会搜索当前目录的 webpack.config.js 文件,这个文件是一个 node.js 模块,返回一个 json 格式的配置信息对象,或者通过 --config 选项来指定配置文件。

我们想将配置选项移动到配置文件中,创建一个配置文件 webpack.config.js:

module.exports = { entry: "./entry.js", output: { path: __dirname, filename: "https://www.jb51.net/bundle.js" }, module: { loaders: [ { test: /.css$/, loader: "style!css" } ] } };

现在我们仅仅运行:

webpack

如果完成成功,将会返回运行结果,该命令将尝试WebPACK当前目录中加载文件webpack.config.js。

这里对Webpack的打包行为做了配置,主要分为几个部分:

entry:指定打包的入口文件,每有一个键值对,就是一个入口文件

output:配置打包结果,path定义了输出的文件夹,filename则定义了打包结果文件的名称

module:定义了对模块的处理逻辑,这里可以用loaders定义了一系列的加载器,以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。

漂亮的输出

如果该项目的增长,编译可能需要更长的时间。所以我们要展示一些进度条。我们想要的颜色…

我们可以这样

webpack --progress --colors

七.插件

插件可以完成更多 loader 不能完成的功能。

插件的使用一般是在 webpack 的配置信息 plugins 选项中指定。

Webpack 本身内置了一些常用的插件,还可以通过 npm 安装第三方插件。

接下来,我们利用一个最简单的 BannerPlugin 内置插件来实践插件的配置和运行,这个插件的作用是给输出的文件头部添加注释信息。

修改 webpack.config.js,添加 plugins:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfjpw.html