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 ทำในทุกเวอร์ชันใหม่