在 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'));
~~~