diff --git a/npm/ng-packs/scripts/build-schematics.ts b/npm/ng-packs/scripts/build-schematics.ts new file mode 100644 index 0000000000..9b4f32cd30 --- /dev/null +++ b/npm/ng-packs/scripts/build-schematics.ts @@ -0,0 +1,59 @@ +import execa from 'execa'; +import fse from 'fs-extra'; + +class FileCopy { + src: string; + dest: string; + options?: fse.CopyOptions; + + constructor(filecopyOrSrc: FileCopy | string) { + if (typeof filecopyOrSrc === 'string') { + this.src = filecopyOrSrc; + this.dest = filecopyOrSrc; + } else { + this.src = filecopyOrSrc.src; + this.dest = filecopyOrSrc.dest; + this.options = filecopyOrSrc.options; + } + } +} + +const PACKAGE_TO_BUILD = 'schematics'; +const FILES_TO_COPY_AFTER_BUILD: (FileCopy | string)[] = [ + { src: 'src/commands/proxy/files-enum', dest: 'commands/proxy/files-enum' }, + { src: 'src/commands/proxy/files-model', dest: 'commands/proxy/files-model' }, + { src: 'src/commands/proxy/files-service', dest: 'commands/proxy/files-service' }, + { src: 'src/collection.json', dest: 'collection.json' }, + 'package.json', + 'README.md', +]; + +async function* copyPackageFile(packageName: string, filecopy: FileCopy | string) { + filecopy = new FileCopy(filecopy); + const { src, dest, options = { overwrite: true } } = filecopy; + + await fse.copy(`../packages/${packageName}/${src}`, `../dist/${packageName}/${dest}`, options); + + yield filecopy; +} + +async function* copyPackageFiles(packageName: string) { + for (const filecopy of FILES_TO_COPY_AFTER_BUILD) { + yield* copyPackageFile(packageName, filecopy); + } +} + +(async () => { + await execa( + 'tsc', + ['-p', `packages/${PACKAGE_TO_BUILD}/tsconfig.json`, '--outDir', `dist/${PACKAGE_TO_BUILD}`], + { + stdout: 'inherit', + cwd: '../', + }, + ); + + for await (const filecopy of copyPackageFiles(PACKAGE_TO_BUILD)) { + // do nothing + } +})(); diff --git a/npm/ng-packs/scripts/package.json b/npm/ng-packs/scripts/package.json index 932abe4f64..3984a00b14 100644 --- a/npm/ng-packs/scripts/package.json +++ b/npm/ng-packs/scripts/package.json @@ -6,6 +6,7 @@ "scripts": { "build": "ts-node -r tsconfig-paths/register build.ts", "build:prod": "ts-node -r tsconfig-paths/register prod-build.ts", + "build:schematics": "ts-node -r tsconfig-paths/register build-schematics.ts", "publish-packages": "ts-node -r tsconfig-paths/register publish.ts", "replace-with-tilde": "ts-node -r tsconfig-paths/register replace-with-tilde.ts" },