리소스 유형


리소스 유형
리소스 문서에 설명된 대로 Parcel은 각 입력 파일을 자산으로 설명합니다. 자산 유형은 자산 기본 클래스에서 상속하고 구문 분석, 종속성 분석, 변환 및 코드 생성에 필요한 인터페이스를 구현하는 클래스로 설명됩니다.
Parcel은 여러 프로세서 코어에서 병렬로 리소스를 처리하기 때문에 리소스 유형은 한 번에 하나의 파일에서만 작동하도록 제한되는 변환을 수행할 수 있습니다. 여러 파일을 변환하려면 사용자 정의 Packager를 사용할 수 있습니다.
리소스 인터페이스

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

리소스 유형 등록
addAssetType 메소드를 사용하여 패키저를 통해 리소스 유형을 등록할 수 있습니다. 등록할 파일 확장자와 리소스 유형 모듈에 대한 경로를 허용합니다. 실제 객체가 아닌 작업자 프로세스에 전달할 수 있도록 만들어진 경로입니다.

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