在 Parcel 中,一个 Packager (打包器)将多个 Asset (资源)合并到一起成为最终的输出文件包。这发生在处理所有资源之后的主进程中,并创建了一个包文件树。打包器根据输出文件类型进行注册,并且已经生成该输出类型的资源被发送到该打包器以产生最终的输出文件。
**打包器接口**
***
~~~
const {Packager} = require('parcel-bundler');
class MyPackager extends Packager {
async start() {
// 可选。写文件头部内容。
await this.dest.write(header);
}
async addAsset(asset) {
// 必须。将资源写入生成文件。
await this.dest.write(asset.generated.foo);
}
async end() {
// 可选。写文件尾内部内容。
await this.dest.end(trailer);
}
}
~~~
**注册一个打包器**
***
你可以使用 addPackager 方法,使用打包工具注册打包器(packager)。它接受要注册的文件类型以及打包器模块的路径。
~~~
const Bundler = require('parcel-bundler');
let bundler = new Bundler('input.js');
bundler.addPackager('foo', require.resolve('./MyPackager'));
~~~