784 Commits

Author SHA1 Message Date
Charles Lyding
4a5ca162c3 fix(@angular/cli): avoid redirecting @angular/core in Angular migrations
Files should not redirect `@angular/core` and instead use the direct dependency of the `@schematics/angular` package. This allows old major version migrations to continue to function even though the latest major version may have breaking changes in `@angular/core`.
2021-11-08 09:30:22 -05:00
Alan Agius
9b32066e88 fix(@angular/cli): update ng update output for Angular packages
With #21986 we now error when updating `@angular/` and `@nguniversal/` packages across multiple major versions. With this chnage we update `ng update` output to show the correct instructions.

Before
```
$ ng update --next

 We analyzed your package.json, there are some packages to update:

      Name                               Version                  Command to update
     --------------------------------------------------------------------------------
      @angular/cli                       12.2.12 -> 13.0.0-rc.2   ng update @angular/cli --next
      @angular/core                      11.2.14 -> 13.0.0-rc.2   ng update @angular/core --next
```

Now
```
$ ng update --next

 We analyzed your package.json, there are some packages to update:

      Name                               Version                  Command to update
     --------------------------------------------------------------------------------
      @angular/cli                       12.2.12 -> 13.0.0-rc.2   ng update @angular/cli --next
      @angular/core                      11.2.14 -> 12.2.9        ng update @angular/core@12
```

Closes #19381
2021-10-28 15:31:15 +02:00
Renovate Bot
6bf379726c build: update all non-major dependencies 2021-10-27 04:44:14 -05:00
Charles Lyding
084eff6965 fix(@angular/cli): exclude packages from ng add that contain invalid peer dependencies
Certain older versions of packages may contain missing or invalid peer dependencies. As a result these packages may be incorrectly added to the project when no newer compatible version is found. An exclusion list is now present within `ng add` that will exclude packages with known peer dependency concerns from consideration when adding a package. Currently, only `@angular/localize@9.x` is included in the list.
2021-10-27 04:43:37 -05:00
Alan Agius
57d7eb5b16 fix(@angular/cli): error when updating Angular packages across multi-major migrations
With this change we show an error message when users try to update `@angular/` and `@nguniversal/` packages across multiple major versions.
2021-10-26 04:45:18 -05:00
Sushrit_Lawliet
1aef32c05b fix(@angular/cli): correct grammar error in Analytics consent prompt 2021-10-19 10:07:48 -04:00
Alan Agius
ebf2d62535 fix(@angular/cli): run stable migrations when package version is prerelease
With this change we fix an issue were migrations are not run when the version specified in migration collection is specified as stable example `13.0.0`, but the version specified in the `package.json` is still a prerelease example `13.0.0-rc.0`.

Closes: #21969
2021-10-18 11:24:16 -04:00
Alan Agius
3f72ccc5d2 fix(@angular/cli): generate new random user ID when passing empty string to uuid
`ng config cli.analyticsSharing.uuid ""` should generate new random user ID.

See: https://angular.io/cli/usage-analytics-gathering#per-user-tracking
2021-10-13 15:29:46 +02:00
Alan Agius
f7d6a48f87 fix(@angular/cli): accept UA-00000-0 format in analytics tracking id
With this change we update the validation of the tracking id to accept  tracking ids in `UA-00000-0` format.

Partially addressses #21916
2021-10-13 15:29:15 +02:00
Renovate Bot
7c0ae75add build: update all non-major dependencies 2021-10-13 10:56:08 +02:00
Renovate Bot
7c2119e48a build: update all non-major dependencies 2021-10-08 10:32:47 +02:00
Alan Agius
5904afd1de feat(@angular-devkit/build-angular): enable disk cache by default and provide configurable options
Persistent disk build cache is now enabled by default. A number of options have been added to allow fine tuning of the cache.

The options can be configuration in `cli.cache` section in the `angular.json` as shown below.

- `enabled`: Configure whether disk caching is enabled. Defaults to `true`
- `environment`: Configure in which environment disk cache is enabled. Valid values `ci`, `local` or `all`. Defaults to: `local`
- `path`: cache base path. Defaults to `.angular/cache`

DEPRECATED: `NG_BUILD_CACHE` environment variable option will be removed in the next major version. Configure `cli.cache` in the workspace configuration instead.

BREAKING CHANGE:  `NG_PERSISTENT_BUILD_CACHE` environment variable option no longer  have effect. Configure `cli.cache` in the workspace configuration instead.

```json
{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "cli": {
    "cache": {
      "enabled": true,
      "path": ".custom-cache-path",
      "environment": "all"
    }
  }
  ...
}
```
2021-10-06 08:02:22 -05:00
Renovate Bot
4b3fc7607c build: update dependency pacote to v12 2021-10-06 06:13:05 -05:00
Renovate Bot
a5dadc5f71 build: update all non-major dependencies 2021-10-06 06:12:13 -05:00
Charles Lyding
d8c9f6eaf4 fix(@angular/cli): update the update command to fully support Node.js v16
Node.js v16's `fs.rmdir` will now throw an `ENOENT` error if the path does not exist. `fs.rm` is now the preferred option when using Node.js v16 but since this function is not available on Node.js v12 both are tried with `fs.rm` given preference.
In the case of the update command, the usage was guarded by a try/catch block with the downside of leaving the `fs.rmdir` being that a deprecation warning would be shown when running the command which is not ideal.
2021-10-06 06:11:09 -05:00
Charles Lyding
9fe55752db feat(@angular/cli): officially support Node.js v16
Node.js v16 will be entering an LTS state prior to the release of Angular v13 which allows Node.js v16 to be marked as officially supported by the Angular CLI. The initial bootstrapping check now adds Node.js v16 to the output message in the event of an unsupported Node.js version.
NOTE: Prior to the final v13 release, the Node.js v16 minor should be updated to the actual LTS version once available.
2021-10-06 06:11:09 -05:00
Charles Lyding
e1b954d707 fix(@angular/cli): keep relative migration paths during update analysis
The original update analysis would prepend the package name to all migration collection files. This was required at the time to ensure the migration collection files would be found. The existing update logic, however, no longer requires this change but the change previously had no negative effects as both the relative and module specifier methods would successfully resolve the migrations. But with the conversion to ESM-based packages that use the package.json `exports` field, deep imports into a package are no longer possible unless the migration collection files are explicitly exported. Relative migration collection paths are now preferred since they are based off of the location of the package's `package.json` and do not require additional `exports` field entries. The original update analysis logic, unfortunately, prevent the relative paths from working as intended. Since this original logic is no longer required by the update process, it has been removed allowing the relative paths to be kept and used directly.
2021-10-05 04:44:24 -05:00
Alan Agius
55be137c4e refactor(@angular/cli): remove unused NgToolkitError 2021-09-29 09:22:22 -04:00
Alan Agius
c3acf3cc26 fix(@angular/cli): remove unused cli project options.
This fixes the JSON workspace schema and removed options projects `.project.cli`. Currently only `defaultCollection` is used from `projects.cli` other options are ignored.

9afe185fc6/packages/angular/cli/models/schematic-command.ts (L381)
2021-09-29 09:21:54 -04:00
Alan Agius
31ec09c111 refactor(@schematics/angular): remove migrations for unsupported versions 2021-09-24 15:38:33 -04:00
Alan Agius
b8e06a3155 docs: replace deprecated camel-case argument
`--createApplication` is deprecated in favor of `--create-application`
2021-09-21 17:03:01 +02:00
Renovate Bot
504f47fd74 build: update all non-major dependencies 2021-09-16 09:19:36 +02:00
Renovate Bot
3f31a6757f build: update all non-major dependencies 2021-09-14 09:05:32 +01:00
Alan Agius
d3fa202e9a fix(@angular/cli): handle FORCE_COLOR when stdout is not instance of WriteStream
In some cases, custom implementation of stdout, don't extend `WriteStream` which causes colors not to be included in the output.

Closes #21732
2021-09-14 09:00:24 +01:00
Alan Agius
027a349527 build: rename typings.d.ts to typings.ts
Fixes
```
ERROR: /home/circleci/ng/packages/angular/cli/BUILD.bazel:289:11: Compiling TypeScript (devmode) //packages/angular/cli:angular-cli_test_lib failed: (Exit 1): tsc_wrapped.sh failed: error executing command
  (cd /home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular_cli && \
  exec env - \
    NG_FORCE_TTY=false \
    PATH=/bin:/usr/bin:/usr/local/bin \
  bazel-out/host/bin/external/npm/@bazel/typescript/bin/tsc_wrapped.sh @@bazel-out/k8-fastbuild/bin/packages/angular/cli/angular-cli_test_lib_es5_tsconfig.json)
Execution platform: //tools:rbe_platform_with_network_access
error TS5055: Cannot write file '/home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular_cli/bazel-out/k8-fastbuild/bin/packages/angular/cli/utilities/package-metadata.d.ts' because it would overwrite input file.
  Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.
```
2021-08-27 07:15:30 +02:00
Charles Lyding
3df6fba4c1 refactor(@angular/cli): support bootstrapping with CommonJS startup code
To support the eventual migration of the CLI to ESM, the CLI commandline tool is now bootstrapped by dynamically importing the main initialization code. This is done to allow the main bin file (`ng`) to remain CommonJS so that older versions of Node.js can be checked and validated prior to the execution of the CLI. This separate bootstrap file is needed to allow the use of a dynamic import expression without crashing older versions of Node.js that do not support dynamic import expressions and would otherwise throw a syntax error. This bootstrap file is required from the main bin file only after the Node.js version is determined to be in the supported range. The use of the dynamic import expression allows CommonJS code to execute either CommonJS or ESM code.
2021-08-26 07:30:56 +02:00
Charles Lyding
a7de97e485 build: add Bazel ts_library rule package_name properties to all packages
rules_nodejs 4 requires that a package_name property be specified within a ts_library rule for the output to be linked into the package repository. Failing to add the property can cause test failures due to unresolved packages.
2021-08-26 07:30:44 +02:00
Charles Lyding
64c9a0512e refactor(@angular/cli): convert VERSION property from require to file read
Much like the framework packages, the VERSION property will eventually be set via build-time stamping but the necessary build infrastructure is not yet in place. Until then, the global require usage has been replaced with a file read and JSON parse which provides the equivalent required behavior.
2021-08-25 11:40:51 +01:00
Charles Lyding
c7e39233b4 refactor(@angular/cli): convert pacote usage from require to import
The removal of require usage supports the eventual shift to an ESM output for the CLI package.
2021-08-25 11:40:51 +01:00
Charles Lyding
266233c66e refactor(@angular/cli): convert ini and @yarnpkg/lockfile usage from require to import
The removal of require usage supports the eventual shift to an ESM output for the CLI package.
2021-08-25 11:40:51 +01:00
Charles Lyding
6f4bf38e9c refactor(@angular/cli): convert npm-pick-manifest usage from require to import
The removal of require usage supports the eventual shift to an ESM output for the CLI package.
2021-08-25 11:40:51 +01:00
Charles Lyding
0ba837b2e4 refactor(@angular/cli): use custom scoped require instead of global
To support the eventual conversion of the `@angular/cli` package to ESM, the usage of the global require function must be removed as it is not supported in ESM code. Node.js does have the facility to create custom require functions that can be used when the need to synchronously load a file at runtime is required. Such cases have now been converted to use custom require functions where appropriate.
2021-08-25 11:40:51 +01:00
Charles Lyding
51f89d633f test: enable no-useless-escape lint rule
The `no-useless-escape` eslint rule has now been enabled which removes unneeded characters and complexity from string literals and regular expressions. All files that were in violation of this rule have also been corrected.
2021-08-24 10:51:14 +01:00
Trevor Karjanis
9c62ddcd69 docs: update the description of the lint command
Update the description of the lint command for when a project name is not provided.

Closes #21619
2021-08-23 11:06:33 +01:00
Alan Agius
77fe6c4e67 fix(@angular/cli): update engines to require node 12.20.0
BREAKING CHANGE:

We drop support for Node.js versions prior to `12.20`.
2021-08-09 22:10:50 +02:00
Alan Agius
c0f1b5ea52 fix(@angular/cli): show error when using non-TTY terminal without passing --skip-confirmation during ng add
Closes #21512
2021-08-06 07:23:18 +02:00
Charles Lyding
0afdff028c refactor(@angular-devkit/build-angular): move all builders into a builders subdirectory
All Angular builders are now located within one subdirectory of the `src` directory. This organization provides better discovery of the builders and will allow builder specific code to be stored in a single area.
2021-08-05 06:49:55 +02:00
Alan Agius
a15875a46c docs(@angular/cli): update e2e long description 2021-08-02 16:59:20 +01:00
Alan Agius
e78f6ab5d8 feat(@angular-devkit/build-angular): remove deprecated tslint builder
BREAKING CHANGE:

Deprecated `@angular-devkit/build-angular:tslint` builder has been removed. Use https://github.com/angular-eslint/angular-eslint instead.
2021-08-02 16:57:56 +01:00
Charles Lyding
9a828a4459 refactor(@angular/cli): convert npm-package-arg usage from require to import
The typings package was already present for `npm-package-arg` and the removal of require usage supports the eventual shift to an ESM output for the CLI package.
2021-07-27 12:52:02 -04:00
Alan Agius
259e26979e fix(@angular/cli): merge npmrc files values
Closes #21406
2021-07-23 11:43:07 -04:00
Alan Agius
c1eddbdc98 fix(@angular/cli): handle YARN_ environment variables during ng update and ng add
With this change we handle yarn specific environment variables during `ng update` and `ng add`. This is a follow up of #21297
2021-07-21 14:45:07 +02:00
Mike Jancar
6b00d1270a fix(@angular/cli): handle NPM_CONFIG environment variables during ng update and ng add
Some organizations are moving away from storing tokens/secrets in an NPM config file in favor
of environment variables that only exist for the span of a terminal session. This commit will
make sure those variables are read even when there is no NPM config file present.
2021-07-21 08:57:45 +02:00
Renovate Bot
a155bc5467 build: update all non-major dependencies 2021-07-14 13:57:01 -07:00
Renovate Bot
2bd859e6d5 build: update all non-major dependencies 2021-07-06 10:21:28 -04:00
Charles Lyding
9afe185fc6 build: enable noImplicitOverride TypeScript option
The `noImplicitOverride` TypeScript option improves code quality by ensuring that properties from base classes are not accidentally overriden.
Reference: https://www.typescriptlang.org/tsconfig#noImplicitOverride
2021-07-02 06:40:36 -04:00
Alan Agius
05a52c8c59 refactor: clean up remove unused code 2021-06-25 07:46:22 +02:00
Alan Agius
88ee85c417 fix(@angular/cli): disable update notifier when retrieving package manager version during ng version
NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes.

Closes #21172
2021-06-25 07:45:09 +02:00
Vaibhav Singh
4ce7681cc8 docs(@angular/cli): Add Nightwatch schematics to e2e command 2021-06-24 13:41:00 +01:00
Charles Lyding
31694939aa refactor(@angular/cli): convert Node.js module builtin require to import statement
Now that the TypeScript `esModuleInterop` option is enabled, the Node.js `module` builtin can be used with an import statement.
2021-06-22 17:39:38 +01:00