Paul Gschwendtner 9dd3f0344f
Further clean-up rules_nodejs npm workspace and remove yarn.lock (#29779)
* build: disconnect `@npm` workspace from main project

This will speed up significantly as we don't need to fetch all
dependencies again just for the `@npm` repository that is at this point
only leveraged by the `ng_package` rule for some of its dependencies.

This commit allows us to drop the `yarn.lock` and Aspect lock files, and
allows us to independently migrate `ng_package` to `rules_js`.

It also allows us to drop the `_rjs` TS interop layer in follow-up commits.

* build: drop `_rjs` suffix from `ts_project` targets

We don't need the `ts_project` interop in principle
at this point. We only have one remaining instance left for the SSR
`ng_package` integration. This commit cleans up all usages.

* build: remove yarn

* build: avoid duplicated dependencies at top-level

`rules_js` seems to be sensitive if there are similar versions of the same
package installed, but with differently matched peer dependencies. This
is fine because we can (and should long-term) move those dependencies to
their package-local `package.json` files. This commit unblocks the
migration and highlights how we can move deps to the individual packages
in the future.

* build: update checkout github action

This will allow us to use pnpm.

* build: update node to avoid strict-engines error caused by `npm`

Avoids:

```
Lockfile is up to date, resolution step is skipped
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your Node version is incompatible with "npm@11.2.0".

Expected version: ^20.17.0 || >=22.9.0
Got: v20.11.1
```

Note that we won't update the WORKSPACE test version as that would mean
we need to update the Node engines for shipped packages; and we can't do
this right now without introducing a breaking change.

* build: fix missing dependency for spec bundling

The beasties JS sources weren't available for bundling in the
`bazel-bin`, and this surfaced in RBE. This commit fixes this.
2025-03-11 10:05:52 +01:00
..
2024-11-27 15:59:19 +01:00

<!--
  BEFORE UPDATING THIS FILE, READ THIS.

  This file is automatically generated during release. It is important for you to not update
  README directly.

  - If you need to change the content, update `scripts/templates/readme.ejs`
  - If you need to add/remove a package or a link, update the .monorepo.json file instead.

  Any changes to README.md directly will result in a failure on CI.
-->

<h1 style="text-align: center">Angular CLI - The CLI tool for Angular.</h1>

<p style="text-align: center">
  <br>
  <img src="/docs/images/angular-cli-logo.png" alt="Angular CLI logo" width="100px" height="108px"/>
  <br><br>
  <em>The Angular CLI is a command-line interface tool that you use to initialize, develop, scaffold,
    <br>and maintain Angular applications directly from a command shell.</em>
  <br>
</p>

<p style="text-align: center">
  <a href="https://angular.dev/tools/cli"><strong>angular.dev/tools/cli</strong></a>
  <br>
</p>

<p style="text-align: center">
  <a href="CONTRIBUTING.md">Contributing Guidelines</a>
  ·
  <a href="https://github.com/angular/angular-cli/issues">Submit an Issue</a>
  ·
  <a href="https://blog.angular.dev">Blog</a>
  <br>
  <br>
</p>

<hr>

## Documentation

Get started with Angular CLI, learn the fundamentals and explore advanced topics on our documentation website.

- [Getting started][quickstart]
- [CLI][cli]
- [Workspace and project file structure][filestructure]
- [Workspace configuration][workspaceconfig]
- [Schematics][schematics]

## Development Setup


### Prerequisites

- Install [Node.js] which includes [Node Package Manager][npm]

### Setting Up a Project

Install the Angular CLI globally:

```
npm install -g @angular/cli
```

Create workspace:

```
ng new [PROJECT NAME]
```

Run the application:

```
cd [PROJECT NAME]
ng serve
```

Angular is cross-platform, fast, scalable, has incredible tooling, and is loved by millions.

## Quickstart

[Get started in 5 minutes][quickstart].

## Ecosystem

<p>
  <img src="/docs/images/angular-ecosystem-logos.png" alt="angular ecosystem logos" width="500px" height="auto">
</p>

- [Angular Framework][adev]
- [Angular Material][angularmaterial]

## Changelog

[Learn about the latest improvements][changelog].

## Upgrading

Check out our [upgrade guide](https://update.angular.dev/) to find out the best way to upgrade your project.

## Contributing

### Contributing Guidelines

Read through our [contributing guidelines][contributing] to learn about our submission process, coding rules and more.

### Want to Help?

Want to report a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for [contributing][contributing] and then check out one of our issues labeled as <kbd>[help wanted](https://github.com/angular/angular-cli/labels/help%20wanted)</kbd> or <kbd>[good first issue](https://github.com/angular/angular-cli/labels/good%20first%20issue)</kbd>.

### Code of Conduct

Help us keep Angular open and inclusive. Please read and follow our [Code of Conduct][codeofconduct].

### Developer Guide

Read through our [developer guide][developer] to learn about how to build and test the Angular CLI locally.


## Community

Join the conversation and help the community.

- [X (formerly Twitter)][twitter]
- [Discord][discord]
- [Gitter][gitter]
- [YouTube][youtube]
- [StackOverflow][stackoverflow]
- Find a Local [Meetup][meetup]

## Packages

This is a monorepo which contains many tools and packages:

<%
  const sections = [
    ...new Set(packages.map(pkgName => monorepo.packages[pkgName].section ))
  ].filter(x => x && x != 'Tooling');
  sections.unshift(undefined);
%>

### Tools

| Project | Package | Version | Links |
|---|---|---|---|
<%
for (const pkgName of packages) {
  const mrPkg = monorepo.packages[pkgName];

  if (mrPkg.section != 'Tooling') {
    continue;
  }

%>**<%= mrPkg.name%>**<%
  %> | [`<%= pkgName %>`](https://npmjs.com/package/<%= pkgName %>)<%
  %> | [![latest](https://img.shields.io/npm/v/<%= encode(pkgName) %>/latest.svg)](https://npmjs.com/package/<%= pkgName %>)<%
  %> | <% for (const link of mrPkg.links || []) {
%>[![<%= link.label %>](https://img.shields.io/badge/<%= link.label %>--<%= link.color || 'green' %>.svg)](<%= link.url %>)<%
}
if (mrPkg.snapshotRepo) {
%> [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/<%= mrPkg.snapshotRepo %>)<%
} %>
<% } %>

### Packages
<% for (const section of sections) {

%><%= section ? '#### ' + section : '' %>

| Project | Package | Version | Links |
|---|---|---|---|
<%
for (const pkgName of packages) {
  const mrPkg = monorepo.packages[pkgName];

  if (mrPkg.section != section) {
    continue;
  }

  %>**<%= mrPkg.name%>**<%
  %> | [`<%= pkgName %>`](https://npmjs.com/package/<%= pkgName %>)<%
  %> | [![latest](https://img.shields.io/npm/v/<%= encode(pkgName) %>/latest.svg)](https://npmjs.com/package/<%= pkgName %>)<%
  %> | <% for (const link of mrPkg.links || []) {
    %>[![<%= link.label %>](https://img.shields.io/badge/<%= link.label %>--<%= link.color || 'green' %>.svg)](<%= link.url %>)<%
  }
  if (mrPkg.snapshotRepo) {
    %> [![snapshot](https://img.shields.io/badge/snapshot--blue.svg)](https://github.com/<%= mrPkg.snapshotRepo %>)<%
  } %>
<% } %>
<% } %>

**Love Angular CLI? Give our repo a star :star: :arrow_up:.**

[contributing]: CONTRIBUTING.md
[developer]: docs/DEVELOPER.md
[quickstart]: https://angular.dev/tutorials/learn-angular
[changelog]: CHANGELOG.md
[documentation]: https://angular.dev/overview
[angularmaterial]: https://material.angular.io/
[cli]: https://angular.dev/tools/cli
[adev]: https://angular.dev/
[workspaceconfig]: https://angular.dev/reference/configs/workspace-config
[schematics]: https://angular.dev/tools/cli/schematics
[filestructure]: https://angular.dev/reference/configs/file-structure
[node.js]: https://nodejs.org/
[npm]: https://www.npmjs.com/get-npm
[codeofconduct]: https://github.com/angular/angular/blob/main/CODE_OF_CONDUCT.md
[twitter]: https://www.x.com/angular
[discord]: https://discord.gg/angular
[gitter]: https://gitter.im/angular/angular-cli
[stackoverflow]: https://stackoverflow.com/questions/tagged/angular-cli
[youtube]: https://youtube.com/angular
[meetup]: https://www.meetup.com/find/?keywords=angular