workspace-models.d.ts 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /**
  2. * @license
  3. * Copyright Google LLC All Rights Reserved.
  4. *
  5. * Use of this source code is governed by an MIT-style license that can be
  6. * found in the LICENSE file at https://angular.dev/license
  7. */
  8. export declare enum ProjectType {
  9. Application = "application",
  10. Library = "library"
  11. }
  12. /**
  13. * An enum of the official Angular builders.
  14. * Each enum value provides the fully qualified name of the associated builder.
  15. * This enum can be used when analyzing the `builder` fields of project configurations from the
  16. * `angular.json` workspace file.
  17. */
  18. export declare enum Builders {
  19. Application = "@angular-devkit/build-angular:application",
  20. AppShell = "@angular-devkit/build-angular:app-shell",
  21. Server = "@angular-devkit/build-angular:server",
  22. Browser = "@angular-devkit/build-angular:browser",
  23. SsrDevServer = "@angular-devkit/build-angular:ssr-dev-server",
  24. Prerender = "@angular-devkit/build-angular:prerender",
  25. BrowserEsbuild = "@angular-devkit/build-angular:browser-esbuild",
  26. Karma = "@angular-devkit/build-angular:karma",
  27. BuildKarma = "@angular/build:karma",
  28. TsLint = "@angular-devkit/build-angular:tslint",
  29. NgPackagr = "@angular-devkit/build-angular:ng-packagr",
  30. BuildNgPackagr = "@angular/build:ng-packagr",
  31. DevServer = "@angular-devkit/build-angular:dev-server",
  32. BuildDevServer = "@angular/build:dev-server",
  33. ExtractI18n = "@angular-devkit/build-angular:extract-i18n",
  34. BuildExtractI18n = "@angular/build:extract-i18n",
  35. Protractor = "@angular-devkit/build-angular:private-protractor",
  36. BuildApplication = "@angular/build:application"
  37. }
  38. export interface FileReplacements {
  39. replace: string;
  40. with: string;
  41. }
  42. export interface BrowserBuilderBaseOptions {
  43. main: string;
  44. tsConfig: string;
  45. fileReplacements?: FileReplacements[];
  46. outputPath?: string;
  47. index?: string;
  48. polyfills: string;
  49. assets?: (object | string)[];
  50. styles?: (object | string)[];
  51. scripts?: (object | string)[];
  52. sourceMap?: boolean;
  53. }
  54. export type OutputHashing = 'all' | 'media' | 'none' | 'bundles';
  55. export interface BrowserBuilderOptions extends BrowserBuilderBaseOptions {
  56. serviceWorker?: boolean;
  57. optimization?: boolean;
  58. outputHashing?: OutputHashing;
  59. resourcesOutputPath?: string;
  60. namedChunks?: boolean;
  61. aot?: boolean;
  62. extractLicenses?: boolean;
  63. vendorChunk?: boolean;
  64. buildOptimizer?: boolean;
  65. ngswConfigPath?: string;
  66. budgets?: {
  67. type: string;
  68. maximumWarning?: string;
  69. maximumError?: string;
  70. }[];
  71. webWorkerTsConfig?: string;
  72. }
  73. export interface ServeBuilderOptions {
  74. buildTarget: string;
  75. }
  76. export interface LibraryBuilderOptions {
  77. tsConfig: string;
  78. project: string;
  79. }
  80. export interface ServerBuilderOptions {
  81. outputPath: string;
  82. tsConfig: string;
  83. main: string;
  84. fileReplacements?: FileReplacements[];
  85. optimization?: boolean | {
  86. scripts?: boolean;
  87. styles?: boolean;
  88. };
  89. sourceMap?: boolean | {
  90. scripts?: boolean;
  91. styles?: boolean;
  92. hidden?: boolean;
  93. vendor?: boolean;
  94. };
  95. }
  96. export interface AppShellBuilderOptions {
  97. browserTarget: string;
  98. serverTarget: string;
  99. route: string;
  100. }
  101. export interface TestBuilderOptions extends Partial<BrowserBuilderBaseOptions> {
  102. karmaConfig: string;
  103. }
  104. export interface ExtractI18nOptions {
  105. browserTarget: string;
  106. }
  107. export interface E2EOptions {
  108. protractorConfig: string;
  109. devServerTarget: string;
  110. }
  111. export interface BuilderTarget<TBuilder extends Builders, TOptions> {
  112. builder: TBuilder;
  113. options: TOptions;
  114. configurations?: {
  115. production: Partial<TOptions>;
  116. [key: string]: Partial<TOptions>;
  117. };
  118. }
  119. export type LibraryBuilderTarget = BuilderTarget<Builders.NgPackagr, LibraryBuilderOptions>;
  120. export type BrowserBuilderTarget = BuilderTarget<Builders.Browser, BrowserBuilderOptions>;
  121. export type ServerBuilderTarget = BuilderTarget<Builders.Server, ServerBuilderOptions>;
  122. export type AppShellBuilderTarget = BuilderTarget<Builders.AppShell, AppShellBuilderOptions>;
  123. export type TestBuilderTarget = BuilderTarget<Builders.Karma, TestBuilderOptions>;
  124. export type ServeBuilderTarget = BuilderTarget<Builders.DevServer, ServeBuilderOptions>;
  125. export type ExtractI18nBuilderTarget = BuilderTarget<Builders.ExtractI18n, ExtractI18nOptions>;
  126. export type E2EBuilderTarget = BuilderTarget<Builders.Protractor, E2EOptions>;
  127. interface WorkspaceCLISchema {
  128. warnings?: Record<string, boolean>;
  129. schematicCollections?: string[];
  130. }
  131. export interface WorkspaceSchema {
  132. version: 1;
  133. cli?: WorkspaceCLISchema;
  134. projects: {
  135. [key: string]: WorkspaceProject<ProjectType.Application | ProjectType.Library>;
  136. };
  137. }
  138. export interface WorkspaceProject<TProjectType extends ProjectType = ProjectType.Application> {
  139. /**
  140. * Project type.
  141. */
  142. projectType: ProjectType;
  143. root: string;
  144. sourceRoot: string;
  145. prefix: string;
  146. cli?: WorkspaceCLISchema;
  147. /**
  148. * Tool options.
  149. */
  150. architect?: WorkspaceTargets<TProjectType>;
  151. /**
  152. * Tool options.
  153. */
  154. targets?: WorkspaceTargets<TProjectType>;
  155. }
  156. export interface WorkspaceTargets<TProjectType extends ProjectType = ProjectType.Application> {
  157. build?: TProjectType extends ProjectType.Library ? LibraryBuilderTarget : BrowserBuilderTarget;
  158. server?: ServerBuilderTarget;
  159. test?: TestBuilderTarget;
  160. serve?: ServeBuilderTarget;
  161. e2e?: E2EBuilderTarget;
  162. 'app-shell'?: AppShellBuilderTarget;
  163. 'extract-i18n'?: ExtractI18nBuilderTarget;
  164. [key: string]: any;
  165. }
  166. export {};