mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
48 lines
3 KiB
Markdown
48 lines
3 KiB
Markdown
# Overview of Angular libraries
|
|
|
|
Many applications need to solve the same general problems, such as presenting a unified user interface, presenting data, and allowing data entry.
|
|
Developers can create general solutions for particular domains that can be adapted for re-use in different applications.
|
|
Such a solution can be built as Angular *libraries* and these libraries can be published and shared as *npm packages*.
|
|
|
|
An Angular library is an Angular [project](guide/glossary#project) that differs from an application in that it cannot run on its own.
|
|
A library must be imported and used in an application.
|
|
|
|
Libraries extend Angular's base features.
|
|
For example, to add [reactive forms](guide/reactive-forms) to an application, add the library package using `ng add @angular/forms`, then import the `ReactiveFormsModule` from the `@angular/forms` library in your application code.
|
|
Similarly, adding the [service worker](guide/service-worker-intro) library to an Angular application is one of the steps for turning an application into a [Progressive Web App](https://developers.google.com/web/progressive-web-apps) \(PWA\).
|
|
[Angular Material](https://material.angular.io) is an example of a large, general-purpose library that provides sophisticated, reusable, and adaptable UI components.
|
|
|
|
Any application developer can use these and other libraries that have been published as npm packages by the Angular team or by third parties.
|
|
See [Using Published Libraries](guide/using-libraries).
|
|
|
|
## Creating libraries
|
|
|
|
If you have developed features that are suitable for reuse, you can create your own libraries.
|
|
These libraries can be used locally in your workspace, or you can publish them as [npm packages](guide/npm-packages) to share with other projects or other Angular developers.
|
|
These packages can be published to the npm registry, a private npm Enterprise registry, or a private package management system that supports npm packages.
|
|
See [Creating Libraries](guide/creating-libraries).
|
|
|
|
Deciding to package features as a library is an architectural decision. It is comparable to deciding whether a feature is a component or a service, or deciding on the scope of a component.
|
|
|
|
Packaging features as a library forces the artifacts in the library to be decoupled from the application's business logic.
|
|
This can help to avoid various bad practices or architecture mistakes that can make it difficult to decouple and reuse code in the future.
|
|
|
|
Putting code into a separate library is more complex than simply putting everything in one application.
|
|
It requires more of an investment in time and thought for managing, maintaining, and updating the library.
|
|
This complexity can pay off when the library is being used in multiple applications.
|
|
|
|
<div class="alert is-helpful">
|
|
|
|
**NOTE**: <br />
|
|
Libraries are intended to be used by Angular applications.
|
|
To add Angular features to non-Angular web applications, use [Angular custom elements](guide/elements).
|
|
|
|
</div>
|
|
|
|
<!-- links -->
|
|
|
|
<!-- external links -->
|
|
|
|
<!-- end links -->
|
|
|
|
@reviewed 2022-02-28
|