Jenis sumber
Jenis Sumber
Seperti yang diterangkan dalam Dokumentasi Sumber, Parcel menerangkan setiap fail input sebagai Aset. Jenis aset diterangkan sebagai kelas yang mewarisi daripada kelas asas Aset dan melaksanakan antara muka yang diperlukan untuk menghurai, menganalisis kebergantungan, transformasi dan penjanaan kod.
Oleh kerana Parcel memproses sumber secara selari merentas berbilang teras pemproses, jenis sumber boleh melakukan transformasi yang terhad kepada operasi pada satu fail pada satu masa. Untuk menukar merentas berbilang fail, anda boleh menggunakan Pakej tersuai.
Antaramuka sumber
const {Asset} = require('parcel-bundler'); class MyAsset extends Asset { type = 'foo'; // 设置主输出类型 parse(code) { // 将代码解析为 AST return ast; } pretransform() { // 可选。在收集依赖之前转换。 } collectDependencies() { // 分析依赖 this.addDependency('my-dep'); } transform() { // 可选。在收集依赖之后转换。 } generate() { // 生成代码。如有需要,可提供多个返回。 // 结果会传到合适的 packagers 去生成最终的文件束 return { foo: 'my stuff here', // 主输出 js: 'some javascript' // 如若需要,此转换内容可被放到 JS 文件束中 }; } }
Daftar jenis sumber
Anda boleh menggunakan kaedah addAssetType untuk mendaftarkan jenis sumber anda melalui pembungkus. Ia menerima sambungan fail untuk didaftarkan dan laluan ke modul jenis sumber. Ini adalah laluan, bukan objek sebenar, dilakukan supaya ia boleh dihantar ke proses pekerja.
const Bundler = require('parcel-bundler'); let bundler = new Bundler('input.js'); bundler.addAssetType('.ext', require.resolve('./MyAsset'));