workspace-models.d.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /**
  2. * @license
  3. * Copyright Google Inc. 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.io/license
  7. */
  8. import { experimental } from '@angular-devkit/core';
  9. export declare enum ProjectType {
  10. Application = "application",
  11. Library = "library"
  12. }
  13. export declare enum Builders {
  14. AppShell = "@angular-devkit/build-angular:app-shell",
  15. Server = "@angular-devkit/build-angular:server",
  16. Browser = "@angular-devkit/build-angular:browser",
  17. Karma = "@angular-devkit/build-angular:karma",
  18. TsLint = "@angular-devkit/build-angular:tslint",
  19. NgPackagr = "@angular-devkit/build-ng-packagr:build",
  20. DevServer = "@angular-devkit/build-angular:dev-server",
  21. ExtractI18n = "@angular-devkit/build-angular:extract-i18n",
  22. Protractor = "@angular-devkit/build-angular:protractor"
  23. }
  24. export interface FileReplacements {
  25. replace: string;
  26. with: string;
  27. }
  28. export interface BrowserBuilderBaseOptions {
  29. main: string;
  30. tsConfig: string;
  31. fileReplacements?: FileReplacements[];
  32. outputPath?: string;
  33. index?: string;
  34. polyfills: string;
  35. assets?: (object | string)[];
  36. styles?: (object | string)[];
  37. scripts?: (object | string)[];
  38. sourceMap?: boolean;
  39. }
  40. export declare type OutputHashing = 'all' | 'media' | 'none' | 'bundles';
  41. export interface BrowserBuilderOptions extends BrowserBuilderBaseOptions {
  42. serviceWorker?: boolean;
  43. optimization?: boolean;
  44. outputHashing?: OutputHashing;
  45. resourcesOutputPath?: string;
  46. extractCss?: boolean;
  47. namedChunks?: boolean;
  48. aot?: boolean;
  49. extractLicenses?: boolean;
  50. vendorChunk?: boolean;
  51. buildOptimizer?: boolean;
  52. ngswConfigPath?: string;
  53. budgets?: {
  54. type: string;
  55. maximumWarning?: string;
  56. maximumError?: string;
  57. }[];
  58. es5BrowserSupport?: boolean;
  59. webWorkerTsConfig?: string;
  60. }
  61. export interface ServeBuilderOptions {
  62. browserTarget: string;
  63. }
  64. export interface LibraryBuilderOptions {
  65. tsConfig: string;
  66. project: string;
  67. }
  68. export interface ServerBuilderOptions {
  69. outputPath: string;
  70. tsConfig: string;
  71. main: string;
  72. fileReplacements?: FileReplacements[];
  73. optimization?: {
  74. scripts?: boolean;
  75. styles?: boolean;
  76. };
  77. sourceMap?: boolean;
  78. }
  79. export interface AppShellBuilderOptions {
  80. browserTarget: string;
  81. serverTarget: string;
  82. route: string;
  83. }
  84. export interface TestBuilderOptions extends Partial<BrowserBuilderBaseOptions> {
  85. karmaConfig: string;
  86. }
  87. export interface LintBuilderOptions {
  88. tsConfig: string[] | string;
  89. exclude?: string[];
  90. }
  91. export interface ExtractI18nOptions {
  92. browserTarget: string;
  93. }
  94. export interface E2EOptions {
  95. protractorConfig: string;
  96. devServerTarget: string;
  97. }
  98. export interface BuilderTarget<TBuilder extends Builders, TOptions> {
  99. builder: TBuilder;
  100. options: TOptions;
  101. configurations?: {
  102. production: Partial<TOptions>;
  103. [key: string]: Partial<TOptions>;
  104. };
  105. }
  106. export declare type LibraryBuilderTarget = BuilderTarget<Builders.NgPackagr, LibraryBuilderOptions>;
  107. export declare type BrowserBuilderTarget = BuilderTarget<Builders.Browser, BrowserBuilderOptions>;
  108. export declare type ServerBuilderTarget = BuilderTarget<Builders.Server, ServerBuilderOptions>;
  109. export declare type AppShellBuilderTarget = BuilderTarget<Builders.AppShell, AppShellBuilderOptions>;
  110. export declare type LintBuilderTarget = BuilderTarget<Builders.TsLint, LintBuilderOptions>;
  111. export declare type TestBuilderTarget = BuilderTarget<Builders.Karma, TestBuilderOptions>;
  112. export declare type ServeBuilderTarget = BuilderTarget<Builders.DevServer, ServeBuilderOptions>;
  113. export declare type ExtractI18nBuilderTarget = BuilderTarget<Builders.ExtractI18n, ExtractI18nOptions>;
  114. export declare type E2EBuilderTarget = BuilderTarget<Builders.Protractor, E2EOptions>;
  115. export interface WorkspaceSchema extends experimental.workspace.WorkspaceSchema {
  116. projects: {
  117. [key: string]: WorkspaceProject<ProjectType.Application | ProjectType.Library>;
  118. };
  119. }
  120. export interface WorkspaceProject<TProjectType extends ProjectType = ProjectType.Application> extends experimental.workspace.WorkspaceProject {
  121. /**
  122. * Project type.
  123. */
  124. projectType: ProjectType;
  125. /**
  126. * Tool options.
  127. */
  128. architect?: WorkspaceTargets<TProjectType>;
  129. /**
  130. * Tool options.
  131. */
  132. targets?: WorkspaceTargets<TProjectType>;
  133. }
  134. export interface WorkspaceTargets<TProjectType extends ProjectType = ProjectType.Application> {
  135. build?: TProjectType extends ProjectType.Library ? LibraryBuilderTarget : BrowserBuilderTarget;
  136. server?: ServerBuilderTarget;
  137. lint?: LintBuilderTarget;
  138. test?: TestBuilderTarget;
  139. serve?: ServeBuilderTarget;
  140. e2e?: E2EBuilderTarget;
  141. 'app-shell'?: AppShellBuilderTarget;
  142. 'extract-i18n'?: ExtractI18nBuilderTarget;
  143. [key: string]: any;
  144. }