mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Fixes #35373. This changes the example from "run an arbitrary process" to "copy a file". This should make it a bit easier to follow, require less background knowledge to understand, and not use any platform-specific commands that won't work for Windows users. The most glaring issue with this change is that this doc does not explictly specify how to build and run a builder. I've updated some of the files to hint at this a bit more (such as the `"implementation": "./dist/my-builder.js"`), but another pass is required to figure out the best way to compile a builder and how we want to structure this example to best communicate that. PR Close #42371
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
// #docregion
|
|
import { Architect } from '@angular-devkit/architect';
|
|
import { TestingArchitectHost } from '@angular-devkit/architect/testing';
|
|
import { schema } from '@angular-devkit/core';
|
|
import { promises as fs } from 'fs';
|
|
|
|
describe('Copy File Builder', () => {
|
|
let architect: Architect;
|
|
let architectHost: TestingArchitectHost;
|
|
|
|
beforeEach(async () => {
|
|
const registry = new schema.CoreSchemaRegistry();
|
|
registry.addPostTransform(schema.transforms.addUndefinedDefaults);
|
|
|
|
// TestingArchitectHost() takes workspace and current directories.
|
|
// Since we don't use those, both are the same in this case.
|
|
architectHost = new TestingArchitectHost(__dirname, __dirname);
|
|
architect = new Architect(architectHost, registry);
|
|
|
|
// This will either take a Node package name, or a path to the directory
|
|
// for the package.json file.
|
|
await architectHost.addBuilderFromPackage('..');
|
|
});
|
|
|
|
it('can copy files', async () => {
|
|
// A "run" can have multiple outputs, and contains progress information.
|
|
const run = await architect.scheduleBuilder('@example/copy-file:copy', {
|
|
source: 'package.json',
|
|
destination: 'package-copy.json',
|
|
});
|
|
|
|
// The "result" member (of type BuilderOutput) is the next output.
|
|
const output = await run.result;
|
|
|
|
// Stop the builder from running. This stops Architect from keeping
|
|
// the builder-associated states in memory, since builders keep waiting
|
|
// to be scheduled.
|
|
await run.stop();
|
|
|
|
// Expect that the copied file is the same as its source.
|
|
const sourceContent = await fs.readFile('package.json', 'utf8');
|
|
const destinationContent = await fs.readFile('package-copy.json', 'utf8');
|
|
expect(destinationContent).toBe(sourceContent);
|
|
});
|
|
});
|
|
// #enddocregion
|