Big update!Introducing GitHub Bot Commands. Learn more
Socket
Log inBook a demo

@angular-devkit/core

Package Overview
Dependencies
5
Maintainers
2
Versions
553
Issues
File Explorer

Advanced tools

@angular-devkit/core

Angular DevKit - Core Utility Library

    15.0.2latest

Version published
Maintainers
2
Weekly downloads
5,947,236
decreased by-22.29%

Weekly downloads

Changelog

Source

15.0.2 (2022-11-30)

@angular-devkit/build-angular

| Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------ | | 2891d5bc9 | fix | correctly set Sass quietDeps and verbose options |

@ngtools/webpack

| Commit | Type | Description | | --------------------------------------------------------------------------------------------------- | ---- | ---------------------------- | | d9cc4b028 | fix | elide unused type references |

Special Thanks

Alan Agius and Juuso Valkeejärvi

<!-- CHANGELOG SPLIT MARKER -->

<a name="15.1.0-next.0"></a>

Readme

Source

Core

Shared utilities for Angular DevKit.

Exception

Json

Schema

SchemaValidatorResult

export interface SchemaValidatorResult { success: boolean; errors?: string[]; }

SchemaValidator

export interface SchemaValidator { (data: any): Observable<SchemaValidatorResult>; }

SchemaFormatter

export interface SchemaFormatter { readonly async: boolean; validate(data: any): boolean | Observable<boolean>; }

SchemaRegistry

export interface SchemaRegistry { compile(schema: Object): Observable<SchemaValidator>; addFormat(name: string, formatter: SchemaFormatter): void; }

CoreSchemaRegistry

SchemaRegistry implementation using https://github.com/epoberezkin/ajv. Constructor accepts object containing SchemaFormatter that will be added automatically.

export class CoreSchemaRegistry implements SchemaRegistry { constructor(formats: { [name: string]: SchemaFormatter} = {}) {} }

Logger

Utils

Virtual FS

Workspaces

The workspaces namespace provides an API for interacting with the workspace file formats. It provides an abstraction of the underlying storage format of the workspace and provides support for both reading and writing. Currently, the only supported format is the JSON-based format used by the Angular CLI. For this format, the API provides internal change tracking of values which enables fine-grained updates to the underlying storage of the workspace. This allows for the retention of existing formatting and comments.

A workspace is defined via the following object model. Definition collection objects are specialized Javascript Map objects with an additional add method to simplify addition and provide more localized error checking of the newly added values.

export interface WorkspaceDefinition { readonly extensions: Record<string, JsonValue | undefined>; readonly projects: ProjectDefinitionCollection; } export interface ProjectDefinition { readonly extensions: Record<string, JsonValue | undefined>; readonly targets: TargetDefinitionCollection; root: string; prefix?: string; sourceRoot?: string; } export interface TargetDefinition { options?: Record<string, JsonValue | undefined>; configurations?: Record<string, Record<string, JsonValue | undefined> | undefined>; builder: string; }

The API is asynchronous and has two main functions to facilitate reading, creation, and modifying a workspace: readWorkspace and writeWorkspace.

export enum WorkspaceFormat { JSON, } export function readWorkspace( path: string, host: WorkspaceHost, format?: WorkspaceFormat, ): Promise<{ workspace: WorkspaceDefinition }>; export function writeWorkspace( workspace: WorkspaceDefinition, host: WorkspaceHost, path?: string, format?: WorkspaceFormat, ): Promise<void>;

A WorkspaceHost abstracts the underlying data access methods from the functions. It provides methods to read, write, and analyze paths. A utility function is provided to create an instance of a WorkspaceHost from the Angular DevKit's virtual filesystem host abstraction.

export interface WorkspaceHost { readFile(path: string): Promise<string>; writeFile(path: string, data: string): Promise<void>; isDirectory(path: string): Promise<boolean>; isFile(path: string): Promise<boolean>; } export function createWorkspaceHost(host: virtualFs.Host): WorkspaceHost;

Usage Example

To demonstrate the usage of the API, the following code will show how to add a option property to a build target for an application.

import { NodeJsSyncHost } from '@angular-devkit/core/node'; import { workspaces } from '@angular-devkit/core'; async function demonstrate() { const host = workspaces.createWorkspaceHost(new NodeJsSyncHost()); const { workspace } = await workspaces.readWorkspace('path/to/workspace/directory/', host); const project = workspace.projects.get('my-app'); if (!project) { throw new Error('my-app does not exist'); } const buildTarget = project.targets.get('build'); if (!buildTarget) { throw new Error('build target does not exist'); } buildTarget.options.optimization = true; await workspaces.writeWorkspace(workspace, host); } demonstrate();

Keywords

FAQs

What is @angular-devkit/core?

Angular DevKit - Core Utility Library

Is @angular-devkit/core popular?

The npm package @angular-devkit/core receives a total of 4,890,890 weekly downloads. As such, @angular-devkit/core popularity was classified as popular.

Is @angular-devkit/core well maintained?

We found that @angular-devkit/core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 2 open source maintainers collaborating on the project.

Last updated on 30 Nov 2022

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket
Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc