1868 Commits

Author SHA1 Message Date
Alan Agius
3e35167855 fix(@angular/build): handle postcss compilation errors gracefully
Improves error handling in the PostCSS compilation process to prevent crashes and allow recovery.

Closes #29789
2025-03-10 14:41:59 +01:00
Alan Agius
596b9ae60c refactor(@angular/build): remove esbuild sourcemap workarounds
These are no longer requires since 0.25.1
2025-03-10 13:33:16 +01:00
Angular Robot
65a5ff49f1 build: update all non-major dependencies 2025-03-10 08:48:23 +01:00
Alan Agius
beab546bf2 fix(@angular/build): remove duplicate prebundling warning
This warning is already displayed during the normalization of options. See: b5a86709b7/packages/angular/build/src/builders/dev-server/options.ts (L56)
2025-03-07 15:33:19 +01:00
Angular Robot
b5a86709b7 build: update all non-major dependencies 2025-03-07 11:23:08 +01:00
Alan Agius
f0dd60be1e fix(@angular/build): exclude all entrypoints of a library from prebundling
The configuration now ensures that when a package is listed for exclusion, all paths within that package including sub-paths like `@foo/bar/baz`  are marked as external and not prebundled by the development server.

For example, specifying `@foo/bar` in the exclude list will prevent the development server from bundling any files from the `@foo/bar` package, including its sub-paths such as `@foo/bar/baz`.

This aligns with esbuild external option behaviour https://esbuild.github.io/api/#external

Closes #29170
2025-03-06 19:12:05 +01:00
Alan Agius
31c81e9c68 feat(@angular/build): drop support for TypeScript older than 5.8
Narrow down the versions of TypeScript to support.

BREAKING CHANGE: TypeScript versions less than 5.8 are no longer supported.
2025-03-06 10:03:49 +01:00
Alexey Horbunov
b100c71ccd
fix(@angular/build): provide extract-i18n does not respect
`i18nDuplicateTranslation` config value (#29179)

This fixes an issue where the config was not passed.

Closes #23635
2025-03-05 19:18:51 +01:00
Alan Agius
3c9172159c feat(@angular/build): integrate Chrome automatic workspace folders
This commit integrates automatic Chrome DevTools workspace folder connection into the vite dev-server process, leveraging the experimental feature available in Chrome Canary, as described in the Chrome DevTools documentation https://chromium.googlesource.com/devtools/devtools-frontend/+/main/docs/ecosystem/automatic_workspace_folders.md
2025-03-05 17:14:18 +01:00
Alan Agius
1c10c0e4a9 build: lock file maintenance 2025-03-05 16:21:55 +01:00
Charles Lyding
093c5a3152 feat(@schematics/angular): directly use @angular/build in new projects
The `@angular/build` package is now used directly within all newly created
projects and replaces the previous usage of the `@angular-devkit/build-angular`
package. This has the advantage of removing the need to install all of the
Webpack related transitive dependencies contained within `@angular-devkit/build-angular`
that are used to support the `browser` builder. This results in a significant
reduction in both total dependency count and disk install size for new projects.
New projects that would prefer to use the Webpack-based `browser` builder can still
install the `@angular-devkit/build-angular` package within the workspace.

The `@angular/build@19.2.0-next.2` package currently has a total unpacked size of ~115 MB.
The `@angular-devkit/build-angular@19.2.0-next.2` package currently has a total unpacked size of ~291 MB.
2025-03-05 10:28:07 +01:00
Alan Agius
434198c69b fix(@angular/build): exclude component styles from 'any' and 'all' budget calculations
Previously, component styles were included in the 'any' and 'all' budgets, which could lead to incorrect budget violations. This update ensures that component styles are excluded from these budget calculations.

Closes #29609
2025-03-04 18:20:52 +01:00
Alan Agius
280693231e perf(@angular/ssr): optimize response times by introducing header flushing
Improves SSR performance by streaming the response before inlining critical CSS. This allows for earlier header flushing, reducing time to first byte (TTFB) and improving perceived load times.
2025-03-04 16:15:35 +01:00
Alan Agius
349dcd1b30 build: update Angular dev deps to version 20 2025-03-04 12:34:23 +01:00
Charles Lyding
c2bef38332 fix(@angular/build): allow component HMR with a service worker
When the service worker option is enabled, each code update will cause
the `ngsw.json` configuration file to change due to the different hashes
of the updated output. This is problematic for component HMR usage with
the development server since the full reload fallback logic would be triggered
due to the changed `ngsw.json` file.  To avoid this problem, the `ngsw.json`
configuration file is now special cased within the fallback logic.
2025-03-04 09:53:57 +01:00
Angular Robot
39ec21f0ca build: update dependency @vitejs/plugin-basic-ssl to v2 2025-03-04 09:53:02 +01:00
Paul Gschwendtner
5fd1cb56ab build: update dev-infra and rework windows native testing
As part of go/ng:windows-dev-future, we are changing how our
infrastructure supports Windows build & testing. Clearly:

- we will still support contributors on Windows, and we believe we will
  be improving and streamlining the experience here
- we will continue testing the Angular CLI for our Windows users. We are
  aware of the many Windows users using the `ng` CLI.

What is changing? We are no longer actively working towards a Bazel infrastructure
that supports native Windows building and testing. There are currently
two ways to contribute to Angular on Windows. That is via WSL, or via
e.g. native Windows cmd.exe, with Git Bash on top. We acknowledge that
the latter worked sometimes, but we also realize it very often breaks as
nobody on our team uses, verifies it, and it introduces extra complexity
because Bazel on Windows is quite disconnected from Linux/Mac (e.g. no
sandboxing). Going forward, to improve our team's effectiveness, and
improve our stability guarantees for Windows (and Windows contributors),
we are actively discouraging the use of Git Bash for contributing to
Angular; but instead ask for WSL to be used. I can speak as one of the
few long-term team members that have worked on Windows (without WSL) most
of my time, that WSL is great and the contributing experience is much
smoother and also easier to "guide". It's a positive change because we
won't be suggesting "two ways to contribute on Windows", where in
reality one is very brittle and can break at any time!

---

For testing of the Angular CLI: We will continue to maintain the
capability to cross-compile via Bazel with Windows as the target
platform. This allows us to build the e2e tests for Windows, and run
them natively outside WSL to ensure native Windows `ng` CLI testing!
This is what this change mostly does.

Notably, two things are missing here and will be followed up:

- caching of the e2e tests on Windows is not properly functioning yet.
- caching of the WSL node modules + nvm is not working properly yet.

Other than that, we are seeing very similar timing and results of the
Windows tests, so this change unblocks our `rules_js` migration.
2025-03-03 21:44:50 +01:00
Charles Lyding
c8c73185a6 fix(@angular/build): ensure matching coverage excludes with karma on Windows
When on Windows, the coverage exclusion paths need to be made
absolute via the Node.js path builtin to ensure matching
with the files during the build process.
2025-03-03 20:18:01 +01:00
Charles Lyding
c39c3440cf refactor(@angular/build): replace fast-glob usage with tinyglobby
Usage of the `fast-glob` package has been replaced with the `tinyglobby`
package throughout `@angular/build`. The change reduces the number of
transitive dependencies related to these packages from 17 to 2 while
also maintaining equivalent functionality. Additionally, the `tinyglobby`
package is used by other dependencies such as `vite` and `copy-webpack-plugin`
which has the potential to further reduce overall transitive dependencies
for a project.
2025-03-03 16:57:37 +01:00
Alan Agius
337bc3cae6 refactor(@angular/build): remove file: prefix from JIT component resource URLs in sourcemaps
Previously, JIT component resource URLs in sourcemaps included a `file:` prefix (e.g., `file:src/app/app.component.html`). This change removes the `file:` prefix to ensure cleaner source mappings.
2025-03-03 16:57:24 +01:00
Alan Agius
d63e31c326 refactor(@angular/ssr): remove deprecated provideServerRoutesConfig dev-preview API
`provideServerRouting` should be used instead.
2025-03-03 15:59:52 +01:00
Angular Robot
38ef5d7c56 build: update all non-major dependencies 2025-03-03 13:32:31 +01:00
Charles Lyding
25ea0986b1 fix(@angular/build): handle undefined less stylesheet sourcemap values
There can be cases where the `less` stylesheet preprocessor will return
an undefined value for a sourcemap even though sourcemaps have been enabled.
A check is now performed to handle these cases to prevent potential crashes
when processing `less` styles.
2025-02-28 11:06:10 -05:00
Angular Robot
44b06f4486 build: update angular 2025-02-27 08:58:21 -08:00
Charles Lyding
eb058d0659 fix(@angular/build): always disable JSON stats with dev-server
When using the development server, the `statsJson` option will now
unconditionally be disabled. The output JSON file is not accessible
with the server and the analysis/generation of the JSON file may
increase the rebuild time. Additionally, the JSON file changes during
a rebuild may unexpectedly cause component HMR fallback to a full
reload due to non-component file changes in the build output.
2025-02-25 13:20:18 -05:00
Angular Robot
aa634f9a3a build: update all non-major dependencies 2025-02-25 08:18:52 -08:00
Angular Robot
92aa9e05bb build: update all non-major dependencies 2025-02-24 16:33:08 -08:00
Charles Lyding
1b43c0507f fix(@schematics/angular): add additional checks for application builder usage
The Angular schematics have been updated to perform additional checks for
both the `@angular-devkit/build-angular:application` and `@angular/build:application`
builders. This ensures that the schematics generate the appropriate output for
each of these build systems in addition to the Webpack-based `browser` builder.
2025-02-24 18:34:09 -05:00
Joey Perrott
cacb127312 refactor(@angular/pwa): fix dependencies and import paths for strict deps requirements 2025-02-20 14:18:10 -05:00
Joey Perrott
10a105315b refactor(@angular/cli): fix dependencies and import paths for strict deps requirements 2025-02-20 14:18:10 -05:00
Joey Perrott
c21632c656 refactor(@angular/build): fix dependencies and import paths for strict deps requirements 2025-02-20 14:18:10 -05:00
Charles Lyding
5e90c1b4ec fix(@angular/cli): remove Node.js v18 support
Node.js v18 will reach its End-of-Life on 2025-04-30 and as a result will
not be supported with the upcoming Angular v20.
Node.js Release Schedule: https://github.com/nodejs/release#release-schedule

BREAKING CHANGE: Node.js v18 is no longer supported with Angular.

Before updating a project to Angular v20, the Node.js version must be
at least 20.11.1. For the full list of supported Node.js versions,
see https://angular.dev/reference/versions.
2025-02-20 13:37:53 -05:00
Angular Robot
8f73dad78d build: update angular 2025-02-19 16:28:28 -05:00
Joey Perrott
ca1e86b684 build: disable failing strict_deps targets
Disable all failing strict_deps targets with TODOs to fix them moving forward.
2025-02-19 15:22:58 -05:00
Joey Perrott
c9273f8b85 build: add @types/node to assorted locations where node types are being relied on and currently obtained transitively. 2025-02-19 12:53:55 -05:00
Charles Lyding
a5fcf80442 fix(@angular/build): provide karma stack trace sourcemap support
When executing unit tests with `karma`, the stack traces within errors
will now use any sourcemaps that were generated during the build process
to provide source-based locations for the errors. Script sourcemaps must
be enabled for this functionality.
2025-02-18 18:37:15 -05:00
Angular Robot
9f870b4051 build: update all non-major dependencies 2025-02-18 07:46:41 -05:00
Charles Lyding
11fab9c7dd feat(@angular/build): add application builder karma testing to package
An `application` only variant of the `karma` builder found within the
`@angular-devkit/build-angular` package is now available within the
`@angular/build` package as `@angular/build:karma`. This builder will
only use the `application` builder found within `@angular/build` and
does not provide the `builderMode` option as `application` would be the
only valid value. Testing behavior is effectively equivalent to using the
`@angular-devkit/build-angular:karma` builder with the `builderMode`
option set to `application`. However, several options have been adjusted:
* `builderMode` was removed
* `fileReplacements` legacy structure (`src`/`replaceWith`) removed
* `polyfills` only accepts an array of strings
* `loader` has been added
* `define` has been added
* `externalDependencies` has been added
2025-02-18 06:28:08 -05:00
Alan Agius
e6deb82c6c fix(@angular/build): update critical CSS inlining to support autoCsp
This update improves the handling of inlined critical CSS to align with `autoCsp`, ensuring compliance with Content Security Policy (CSP) directives. Previously, inlined styles could trigger CSP violations in certain configurations. With this fix, critical CSS is inlined in a way that maintains security while supporting `autoCsp`.

Closes #29603
2025-02-14 13:55:44 -08:00
Joey Perrott
33ed6e875e refactor: move builtin module imports to use node: prefix imports 2025-02-14 11:09:23 -08:00
Angular Robot
65c99b8139 build: update all non-major dependencies to v7.26.9 2025-02-14 14:35:24 +01:00
Alan Agius
f92787947f fix(@angular/build): suppress asset missing warning for /index.html requests
Prevent incorrect warning display when the Service Worker requests `/index.html`.
2025-02-14 14:35:12 +01:00
Alan Agius
04f331a534 build: update all non-major dependencies
Update packages
2025-02-14 13:11:21 +01:00
Kristiyan Kostadinov
0a77fe09eb build: update to TypeScript 5.8
Updates the repo to TypeScript 5.8 and expands the peer dependency ranges.
2025-02-14 11:39:20 +01:00
Alan Agius
09f5006b5c fix(@angular/cli): prefer installed package as fallback when listing package groups
Previously, the package group name defaulted to the first item in the list. This update prioritizes an installed package as the fallback instead.

Closes #29627
2025-02-13 21:40:05 +01:00
Alan Agius
f5689e9525 refactor(@angular/cli): handle undefined ng add collection name
Fixes an issue where JSON help extraction fails if the `ng add` collection name is undefined.
2025-02-13 16:09:43 +01:00
Alan Agius
8c7c7ac691 fix(@angular/cli): correctly parse and resolve relative schematic collection names on Windows
Previously, the logic incorrectly extracted the drive letter as the collection name when the schematic collection was specified as relative on Windows. This fix ensures that relative paths are parsed and resolved correctly, preventing the drive letter from being mistakenly treated as the collection name.

Closes #29559
2025-02-13 08:47:45 +01:00
Alan Agius
a2747391aa build: update to esbuild 0.25.0
This commit updates esbuild to 0.25.0
2025-02-12 20:31:56 +01:00
Angular Robot
1355d086fe build: update all non-major dependencies 2025-02-12 08:49:47 -08:00
Charles Lyding
964fb778b7 fix(@angular/build): support per component updates of multi-component files
The HMR component update candidate analysis has been improved to now perform
more fine-grained checks for cases where more than one component is present
in a single TypeScript file. Previously it was possible for all components
present in a TypeScript file to be considered update candidates when only
one of the components had relevant changes to its template and/or styles.
2025-02-12 11:34:45 -05:00