ค้นหาเว็บไซต์

typescript - วิธีการเพิ่ม dev dependency ด้วย angular schematics ที่ขยายมาจาก ng-new


ฉันต้องเพิ่ม dependencies ของนักพัฒนาเมื่อตอนที่ฉันใช้ ng-new external schematic

ฉันพยายามหลายอย่าง แต่ตอนนี้สิ่งที่ประสบความสำเร็จมากที่สุดคือสิ่งนี้:

    context.addTask(
      new NodePackageInstallTask({
        workingDirectory: `./${options.name}`,
        packageName: "lodash-es",
      })
    );

สิ่งนี้เพิ่มการพึ่งพา ปัญหาคือฉันไม่สามารถระบุได้หรือฉันไม่รู้วิธีระบุว่าการพึ่งพานี้เป็นการพึ่งพาของนักพัฒนา วิธีอื่นที่ฉันลองคือการใช้สิ่งนี้ในโครงร่างของฉัน

    [
      {
        type: NodeDependencyType.Dev,
        name: "husky",
        version: "*",
      },
    ].forEach((dependency) => addPackageJsonDependency(tree, dependency));
  };

สิ่งนี้ใช้งานได้ดีเมื่อโครงการถูกสร้างขึ้นแล้ว แต่แผนภาพหลักของฉันพยายามที่จะสร้างโครงการใหม่พร้อมไฟล์และการตั้งค่าที่กำหนดเอง แผนภาพหลักมีลักษณะดังนี้:

import {
  apply,
  chain,
  empty,
  externalSchematic,
  mergeWith,
  Rule,
  schematic,
  SchematicContext,
  Tree,
} from "@angular-devkit/schematics";

import {
  Schema as NgNewOptions,
  Style,
} from "@schematics/angular/ng-new/schema";

export function newProject(options: NgNewOptions): Rule {
  return async (_tree: Tree, _context: SchematicContext) => {
    options.style = Style.Scss;

    const ngNewOriginal = externalSchematic(
      "@schematics/angular",
      "ng-new",
      options
    );
    const customStarter = schematic("angular-starter", options);

    return chain([mergeWith(apply(empty(), [ngNewOriginal, customStarter]))]);
  };
}

ภายใน angular-starter ฉันเรียกไฟล์ที่กำหนดเองของฉัน สิ่งที่ฉันอ่านคือปัญหากับ addPackageJsonDependency ไม่สามารถทำงานของมันได้เพราะการสร้างไฟล์จะทำหลังจากทุกอย่างเสร็จแล้ว ดังนั้นมันจึงไม่พบไฟล์ package.json ฉันยังพยายามที่จะเพิ่มแพ็กเกจที่กำหนดเองของฉันแต่คิดว่านั่นไม่ใช่วิธีที่ถูกต้องเพราะฉันต้องการอัปเดตตามสิ่งที่ Angular ทำในทุกเวอร์ชันใหม่