From 275b5e7480dd62089800d860e2075a9d98fc0147 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 12 Feb 2024 15:08:57 -0500 Subject: [PATCH] refactor(@angular-devkit/schematics-cli): rename schematic template files with a template extension Files that contain template instructions should include a `.template` extension to prevent them from being treated as TypeScript/JSON/etc. files. Not doing so can result in parse errors or other failures when the files are incorrectly processed by other tools. --- packages/angular_devkit/schematics_cli/blank/factory.ts | 7 ++++--- .../{__dot__gitignore => .gitignore.template} | 0 .../{__dot__npmignore => .npmignore.template} | 0 .../src/__name@dasherize__/{index.ts => index.ts.template} | 0 .../{index_spec.ts => index_spec.ts.template} | 0 .../angular_devkit/schematics_cli/schematic/factory.ts | 6 ++++-- .../files/{__dot__gitignore => .gitignore.template} | 0 .../files/{__dot__npmignore => .npmignore.template} | 0 8 files changed, 8 insertions(+), 5 deletions(-) rename packages/angular_devkit/schematics_cli/blank/project-files/{__dot__gitignore => .gitignore.template} (100%) rename packages/angular_devkit/schematics_cli/blank/project-files/{__dot__npmignore => .npmignore.template} (100%) rename packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/{index.ts => index.ts.template} (100%) rename packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/{index_spec.ts => index_spec.ts.template} (100%) rename packages/angular_devkit/schematics_cli/schematic/files/{__dot__gitignore => .gitignore.template} (100%) rename packages/angular_devkit/schematics_cli/schematic/files/{__dot__npmignore => .npmignore.template} (100%) diff --git a/packages/angular_devkit/schematics_cli/blank/factory.ts b/packages/angular_devkit/schematics_cli/blank/factory.ts index 6585ea95b5..c7698e8be1 100644 --- a/packages/angular_devkit/schematics_cli/blank/factory.ts +++ b/packages/angular_devkit/schematics_cli/blank/factory.ts @@ -13,10 +13,10 @@ import { SchematicsException, Tree, apply, + applyTemplates, chain, mergeWith, move, - template, url, } from '@angular-devkit/schematics'; import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; @@ -63,7 +63,7 @@ export default function (options: Schema): Rule { } catch {} let source = apply(url('./schematic-files'), [ - template({ + applyTemplates({ ...options, coreVersion, schematicsVersion, @@ -77,7 +77,8 @@ export default function (options: Schema): Rule { if (!collectionPath) { collectionPath = normalize('/' + options.name + '/src/collection.json'); source = apply(url('./project-files'), [ - template({ + move('package.json', 'package.json.template'), + applyTemplates({ ...(options as object), coreVersion, schematicsVersion, diff --git a/packages/angular_devkit/schematics_cli/blank/project-files/__dot__gitignore b/packages/angular_devkit/schematics_cli/blank/project-files/.gitignore.template similarity index 100% rename from packages/angular_devkit/schematics_cli/blank/project-files/__dot__gitignore rename to packages/angular_devkit/schematics_cli/blank/project-files/.gitignore.template diff --git a/packages/angular_devkit/schematics_cli/blank/project-files/__dot__npmignore b/packages/angular_devkit/schematics_cli/blank/project-files/.npmignore.template similarity index 100% rename from packages/angular_devkit/schematics_cli/blank/project-files/__dot__npmignore rename to packages/angular_devkit/schematics_cli/blank/project-files/.npmignore.template diff --git a/packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index.ts b/packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index.ts.template similarity index 100% rename from packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index.ts rename to packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index.ts.template diff --git a/packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index_spec.ts b/packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index_spec.ts.template similarity index 100% rename from packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index_spec.ts rename to packages/angular_devkit/schematics_cli/blank/schematic-files/src/__name@dasherize__/index_spec.ts.template diff --git a/packages/angular_devkit/schematics_cli/schematic/factory.ts b/packages/angular_devkit/schematics_cli/schematic/factory.ts index f3da26cca2..b40000282a 100644 --- a/packages/angular_devkit/schematics_cli/schematic/factory.ts +++ b/packages/angular_devkit/schematics_cli/schematic/factory.ts @@ -10,10 +10,10 @@ import { strings } from '@angular-devkit/core'; import { Rule, apply, + applyTemplates, mergeWith, move, partitionApplyMerge, - template, url, } from '@angular-devkit/schematics'; import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; @@ -28,9 +28,11 @@ export default function (options: Schema): Rule { return mergeWith( apply(url('./files'), [ + // The `package.json` name is kept to allow renovate to update the dependency versions + move('package.json', 'package.json.template'), partitionApplyMerge( (p) => !/\/src\/.*?\/files\//.test(p), - template({ + applyTemplates({ ...options, coreVersion, schematicsVersion, diff --git a/packages/angular_devkit/schematics_cli/schematic/files/__dot__gitignore b/packages/angular_devkit/schematics_cli/schematic/files/.gitignore.template similarity index 100% rename from packages/angular_devkit/schematics_cli/schematic/files/__dot__gitignore rename to packages/angular_devkit/schematics_cli/schematic/files/.gitignore.template diff --git a/packages/angular_devkit/schematics_cli/schematic/files/__dot__npmignore b/packages/angular_devkit/schematics_cli/schematic/files/.npmignore.template similarity index 100% rename from packages/angular_devkit/schematics_cli/schematic/files/__dot__npmignore rename to packages/angular_devkit/schematics_cli/schematic/files/.npmignore.template