Type de ressource


Types de ressources
Comme décrit dans la documentation des ressources, Parcel décrit chaque fichier d'entrée comme un actif. Les types d'actifs sont décrits comme des classes qui héritent de la classe de base Asset et implémentent les interfaces requises pour l'analyse syntaxique, l'analyse des dépendances, les transformations et la génération de code.
Étant donné que Parcel traite les ressources en parallèle sur plusieurs cœurs de processeur, les types de ressources peuvent effectuer des transformations qui se limitent à fonctionner sur un seul fichier à la fois. Pour convertir plusieurs fichiers, vous pouvez utiliser un packager personnalisé.
Interface de ressources

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 文件束中
    };
  }
}

Enregistrer le type de ressource
Vous pouvez utiliser la méthode addAssetType pour enregistrer votre type de ressource via le packager. Il accepte l'extension du fichier à enregistrer et le chemin d'accès au module de type de ressource. Il s'agit d'un chemin, et non d'un objet réel, créé pour pouvoir être transmis au processus de travail.

const Bundler = require('parcel-bundler');
let bundler = new Bundler('input.js');
bundler.addAssetType('.ext', require.resolve('./MyAsset'));