Module: index

Table of contents

Enumerations

Classes

Interfaces

Type aliases

Variables

Functions

Enumerations

ChangeType

ChangeType: object

DependencyType

DependencyType: object
Type of dependency between projects

Classes

ProjectGraphBuilder

ProjectGraphBuilder: object
Builder for adding nodes and dependencies to a ProjectGraph

Interfaces

ExecutorContext

ExecutorContext: object
Context that is passed into an executor

FileChange

FileChange: object
Description of a file change in the Nx virtual file system/

FileData

FileData: object
Some metadata about a file

ImplicitJsonSubsetDependency

ImplicitJsonSubsetDependency<T>: object

Type parameters

NameDefault
T"*" | string[]

JsonParseOptions

JsonParseOptions: object

JsonSerializeOptions

JsonSerializeOptions: object

NxAffectedConfig

NxAffectedConfig: object

NxJsonConfiguration

NxJsonConfiguration<T>: object
Nx.json configuration

Type parameters

NameDefault
T"*" | string[]

NxJsonProjectConfiguration

NxJsonProjectConfiguration: object

NxPlugin

NxPlugin: object
A plugin for Nx

ProjectConfiguration

ProjectConfiguration: object
Project configuration

ProjectFileMap

ProjectFileMap: object
A list of files separated by the project they belong to

ProjectGraph

ProjectGraph<T>: object
A Graph of projects in the workspace and dependencies between them

Type parameters

NameDefault
Tany

ProjectGraphDependency

ProjectGraphDependency: object
A dependency between two projects

ProjectGraphNode

ProjectGraphNode<T>: object
A node describing a project in a workspace

Type parameters

NameDefault
Tany

ProjectGraphProcessorContext

ProjectGraphProcessorContext: object
Additional information to be used to process a project graph

StringDeletion

StringDeletion: object

StringInsertion

StringInsertion: object

Target

Target: object

TargetConfiguration

TargetConfiguration: object
Target's configuration

TargetDependencyConfig

TargetDependencyConfig: object

Task

Task: object
A representation of the invocation of an Executor

TaskGraph

TaskGraph: object
Graph of Tasks to be executed

Tree

Tree: object
Virtual file system tree.

Workspace

Workspace: object

WorkspaceJsonConfiguration

WorkspaceJsonConfiguration: object
Workspace configuration

Type aliases

Executor

Ƭ Executor<T>: (options: T, context: ExecutorContext) => Promise<{ success: boolean }> | AsyncIterableIterator<{ success: boolean }>
Implementation of a target of a project

Type parameters

NameDefault
Tany

Type declaration

▸ (options: T, context: ExecutorContext): Promise<{ success: boolean }> | AsyncIterableIterator<{ success: boolean }>

Parameters

NameType
optionsT
contextExecutorContext
Returns: Promise<{ success: boolean }> | AsyncIterableIterator<{ success: boolean }>

Generator

Ƭ Generator<T>: (tree: any, schema: T) => void | GeneratorCallback | Promise<void | GeneratorCallback>
A function that schedules updates to the filesystem to be done atomically

Type parameters

NameDefault
Tunknown

Type declaration

▸ (tree: any, schema: T): void | GeneratorCallback | Promise<void | GeneratorCallback>

Parameters

NameType
treeany
schemaT
Returns: void | GeneratorCallback | Promise<void | GeneratorCallback>

GeneratorCallback

Ƭ GeneratorCallback: () => void | Promise<void>
A callback function that is executed after changes are made to the file system

Type declaration

▸ (): void | Promise<void>
Returns: void | Promise<void>

ImplicitDependencyEntry

Ƭ ImplicitDependencyEntry<T>: object

Type parameters

NameDefault
T"*" | string[]

Type declaration


PackageManager

Ƭ PackageManager: "yarn" | "pnpm" | "npm"

ProjectType

Ƭ ProjectType: "library" | "application"
Type of project supported

StringChange

Ƭ StringChange: StringInsertion | StringDeletion
A change to be made to a string

TaskGraphExecutor

Ƭ TaskGraphExecutor<T>: (taskGraph: TaskGraph, options: Record<string, T>, overrides: T, context: ExecutorContext) => Promise<Record<string, { success: boolean ; terminalOutput: string }>>
Implementation of a target of a project that handles multiple projects to be batched

Type parameters

NameDefault
Tany

Type declaration

▸ (taskGraph: TaskGraph, options: Record<string, T>, overrides: T, context: ExecutorContext): Promise<Record<string, { success: boolean ; terminalOutput: string }>>

Parameters

NameType
taskGraphTaskGraph
optionsRecord<string, T>
overridesT
contextExecutorContext
Returns: Promise<Record<string, { success: boolean ; terminalOutput: string }>>

WorkspaceConfiguration

Ƭ WorkspaceConfiguration: Omit<WorkspaceJsonConfiguration, "projects"> & Omit<NxJsonConfiguration, "projects">

Variables

logger

Const logger: object

Type declaration

NameType
debug(...s: any[]) => void
error(s: any) => void
fatal(...s: any[]) => void
info(s: any) => void
log(...s: any[]) => void
warn(s: any) => void

Functions

addDependenciesToPackageJson

addDependenciesToPackageJson(host: Tree, dependencies: Record<string, string>, devDependencies: Record<string, string>, packageJsonPath?: string): GeneratorCallback
Add Dependencies and Dev Dependencies to package.json
For example:
1addDependenciesToPackageJson(host, { react: 'latest' }, { jest: 'latest' });
This will add react and jest to the dependencies and devDependencies sections of package.json respectively.

Parameters

NameTypeDefault valueDescription
hostTree-Tree representing file system to modify
dependenciesRecord<string, string>-Dependencies to be added to the dependencies section of package.json
devDependenciesRecord<string, string>-Dependencies to be added to the devDependencies section of package.json
packageJsonPathstring'package.json'Path to package.json
Callback to install dependencies only if necessary. undefined is returned if changes are not necessary.

addProjectConfiguration

addProjectConfiguration(host: Tree, projectName: string, projectConfiguration: ProjectConfiguration & NxJsonProjectConfiguration, standalone?: boolean): void
Adds project configuration to the Nx workspace.
The project configuration is stored in workspace.json and nx.json. The utility will update both files.

Parameters

NameTypeDefault valueDescription
hostTree-the file system tree
projectNamestring-unique name. Often directories are part of the name (e.g., mydir-mylib)
projectConfigurationProjectConfiguration & NxJsonProjectConfiguration-project configuration
standalonebooleanfalseshould the project use package.json? If false, the project config is inside workspace.json
Returns: void

applyChangesToString

applyChangesToString(text: string, changes: StringChange[]): string
Applies a list of changes to a string's original value.
This is useful when working with ASTs.
For Example, to rename a property in a method's options:
1const code = `bootstrap({
2  target: document.querySelector('#app')
3})`;
4
5const indexOfPropertyName = 13; // Usually determined by analyzing an AST.
6const updatedCode = applyChangesToString(code, [
7  {
8    type: ChangeType.Insert,
9    index: indexOfPropertyName,
10    text: 'element',
11  },
12  {
13    type: ChangeType.Delete,
14    start: indexOfPropertyName,
15    length: 6,
16  },
17]);
18
19bootstrap({
20  element: document.querySelector('#app'),
21});

Parameters

NameType
textstring
changesStringChange[]
Returns: string

convertNxExecutor

convertNxExecutor(executor: Executor): any
Convert an Nx Executor into an Angular Devkit Builder
Use this to expose a compatible Angular Builder

Parameters

NameType
executorExecutor
Returns: any

convertNxGenerator

convertNxGenerator<T>(generator: Generator<T>): function
Convert an Nx Generator into an Angular Devkit Schematic

Type parameters

NameDefault
Tany

Parameters

NameType
generatorGenerator<T>
Returns: (options: T) => (tree: any, context: any) => Promise<any>

detectPackageManager

detectPackageManager(dir?: string): PackageManager
Detects which package manager is used in the workspace based on the lock file.

Parameters

NameTypeDefault value
dirstring''

formatFiles

formatFiles(host: Tree): Promise<void>
Formats all the created or updated files using Prettier

Parameters

NameTypeDescription
hostTreethe file system tree
Returns: Promise<void>

generateFiles

generateFiles(host: Tree, srcFolder: string, target: string, substitutions: { [k: string]: any; }): void
Generates a folder of files based on provided templates.
While doing so it performs two substitutions:
  • Substitutes segments of file names surrounded by __
  • Uses ejs to substitute values in templates
Examples:
1generateFiles(host, path.join(__dirname, 'files'), './tools/scripts', {
2  tmpl: '',
3  name: 'myscript',
4});
This command will take all the files from the files directory next to the place where the command is invoked from. It will replace all __tmpl__ with '' and all __name__ with 'myscript' in the file names, and will replace all <%= name %> with myscript in the files themselves. tmpl: '' is a common pattern. With it you can name files like this: index.ts__tmpl__, so your editor doesn't get confused about incorrect TypeScript files.

Parameters

NameTypeDescription
hostTreethe file system tree
srcFolderstringthe source folder of files (absolute path)
targetstringthe target folder (relative to the host root)
substitutionsobjectan object of key-value pairs
Returns: void

getPackageManagerCommand

getPackageManagerCommand(packageManager?: PackageManager): PackageManagerCommands
Returns commands for the package manager used in the workspace. By default, the package manager is derived based on the lock file, but it can also be passed in explicitly.
Example:
1execSync(`${getPackageManagerCommand().addDev} my-dev-package`);

Parameters

NameType
packageManagerPackageManager
Returns: PackageManagerCommands

getPackageManagerVersion

getPackageManagerVersion(packageManager?: PackageManager): string
Returns the version of the package manager used in the workspace. By default, the package manager is derived based on the lock file, but it can also be passed in explicitly.

Parameters

NameType
packageManagerPackageManager
Returns: string

getProjects

getProjects(host: Tree): Map<string, ProjectConfiguration & NxJsonProjectConfiguration>
Get a map of all projects in a workspace.
Use readProjectConfiguration if only one project is needed.

Parameters

NameType
hostTree

getWorkspaceLayout

getWorkspaceLayout(host: Tree): object
Returns workspace defaults. It includes defaults folders for apps and libs, and the default scope.
Example:
1{ appsDir: 'apps', libsDir: 'libs', npmScope: 'myorg' }

Parameters

NameTypeDescription
hostTreefile system tree
Returns: object
NameType
appsDirstring
libsDirstring
npmScopestring
standaloneAsDefaultboolean

getWorkspacePath

getWorkspacePath(host: Tree): string

Parameters

NameType
hostTree
Returns: string

installPackagesTask

installPackagesTask(host: Tree, alwaysRun?: boolean, cwd?: string, packageManager?: PackageManager): void
Runs npm install or yarn install. It will skip running the install if package.json hasn't changed at all or it hasn't changed since the last invocation.

Parameters

NameTypeDefault valueDescription
hostTree-the file system tree
alwaysRunbooleanfalsealways run the command even if package.json hasn't changed.
cwdstring''-
packageManagerPackageManager--
Returns: void

joinPathFragments

joinPathFragments(...fragments: string[]): string
Normalized path fragments and joins them

Parameters

NameType
...fragmentsstring[]
Returns: string

moveFilesToNewDirectory

moveFilesToNewDirectory(host: Tree, oldDir: string, newDir: string): void

Parameters

NameType
hostTree
oldDirstring
newDirstring
Returns: void

names

names(name: string): object
Util function to generate different strings based off the provided name.
Examples:
1names('my-name'); // {name: 'my-name', className: 'MyName', propertyName: 'myName', constantName: 'MY_NAME', fileName: 'my-name'}
2names('myName'); // {name: 'my-name', className: 'MyName', propertyName: 'myName', constantName: 'MY_NAME', fileName: 'my-name'}

Parameters

NameType
namestring
Returns: object
NameType
classNamestring
constantNamestring
fileNamestring
namestring
propertyNamestring

normalizePath

normalizePath(osSpecificPath: string): string
Coverts an os specific path to a unix style path

Parameters

NameType
osSpecificPathstring
Returns: string

offsetFromRoot

offsetFromRoot(fullPathToDir: string): string
Calculates an offset from the root of the workspace, which is useful for constructing relative URLs.
Examples:
1offsetFromRoot('apps/mydir/myapp/'); // returns "../../../"

Parameters

NameTypeDescription
fullPathToDirstringdirectory path
Returns: string

parseJson

parseJson<T>(input: string, options?: JsonParseOptions): T
Parses the given JSON string and returns the object the JSON content represents. By default javascript-style comments are allowed.

Type parameters

NameTypeDefault
Tobjectany

Parameters

NameTypeDescription
inputstringJSON content as string
options?JsonParseOptionsJSON parse options
Returns: T
Object the JSON content represents

parseTargetString

parseTargetString(targetString: string): Target
Parses a target string into {project, target, configuration}
Examples:
1parseTargetString('proj:test'); // returns { project: "proj", target: "test" }
2parseTargetString('proj:test:production'); // returns { project: "proj", target: "test", configuration: "production" }

Parameters

NameTypeDescription
targetStringstringtarget reference
Returns: Target

readJson

readJson<T>(host: Tree, path: string, options?: JsonParseOptions): T
Reads a document for host, removes all comments and parses JSON.

Type parameters

NameTypeDefault
Tobjectany

Parameters

NameTypeDescription
hostTreefile system tree
pathstringfile path
options?JsonParseOptionsOptional JSON Parse Options
Returns: T

readJsonFile

readJsonFile<T>(path: string, options?: JsonReadOptions): T
Reads a JSON file and returns the object the JSON content represents.

Type parameters

NameTypeDefault
Tobjectany

Parameters

NameTypeDescription
pathstringA path to a file.
options?JsonReadOptionsJSON parse options
Returns: T
Object the JSON content of the file represents

readProjectConfiguration

readProjectConfiguration(host: Tree, projectName: string): ProjectConfiguration & NxJsonProjectConfiguration
Reads a project configuration.
The project configuration is stored in workspace.json and nx.json. The utility will read both files.
throws If supplied projectName cannot be found

Parameters

NameTypeDescription
hostTreethe file system tree
projectNamestringunique name. Often directories are part of the name (e.g., mydir-mylib)

readTargetOptions

readTargetOptions<T>(__namedParameters: Target, context: ExecutorContext): T
Reads and combines options for a given target.
Works as if you invoked the target yourself without passing any command lint overrides.

Type parameters

NameDefault
Tany

Parameters

NameType
__namedParametersTarget
contextExecutorContext
Returns: T

readWorkspaceConfiguration

readWorkspaceConfiguration(host: Tree): WorkspaceConfiguration
Read general workspace configuration such as the default project or cli settings
This does not provide projects configuration, use readProjectConfiguration instead.

Parameters

NameType
hostTree

removeDependenciesFromPackageJson

removeDependenciesFromPackageJson(host: Tree, dependencies: string[], devDependencies: string[], packageJsonPath?: string): GeneratorCallback
Remove Dependencies and Dev Dependencies from package.json
For example:
1removeDependenciesFromPackageJson(host, ['react'], ['jest']);
This will remove react and jest from the dependencies and devDependencies sections of package.json respectively.

Parameters

NameTypeDefault valueDescription
hostTree--
dependenciesstring[]-Dependencies to be removed from the dependencies section of package.json
devDependenciesstring[]-Dependencies to be removed from the devDependencies section of package.json
packageJsonPathstring'package.json'-
Callback to uninstall dependencies only if necessary. undefined is returned if changes are not necessary.

removeProjectConfiguration

removeProjectConfiguration(host: Tree, projectName: string): void
Removes the configuration of an existing project.
The project configuration is stored in workspace.json and nx.json. The utility will update both files.

Parameters

NameType
hostTree
projectNamestring
Returns: void

runExecutor

runExecutor<T>(targetDescription: { configuration?: string ; project: string ; target: string }, options: { [k: string]: any; }, context: ExecutorContext): Promise<AsyncIterableIterator<T>>
Loads and invokes executor.
This is analogous to invoking executor from the terminal, with the exception that the params aren't parsed from the string, but instead provided parsed already.
Apart from that, it works the same way:
  • it will load the workspace configuration
  • it will resolve the target
  • it will load the executor and the schema
  • it will load the options for the appropriate configuration
  • it will run the validations and will set the default
  • and, of course, it will invoke the executor
Example:
1for await (const s of await runExecutor(
2  { project: 'myproj', target: 'serve' },
3  { watch: true },
4  context
5)) {
6  // s.success
7}
Note that the return value is a promise of an iterator, so you need to await before iterating over it.

Type parameters

NameType
Tobject
T.successboolean

Parameters

NameType
targetDescriptionobject
targetDescription.configuration?string
targetDescription.projectstring
targetDescription.targetstring
optionsobject
contextExecutorContext
Returns: Promise<AsyncIterableIterator<T>>

serializeJson

serializeJson<T>(input: T, options?: JsonSerializeOptions): string
Serializes the given data to a JSON string. By default the JSON string is formatted with a 2 space intendation to be easy readable.

Type parameters

NameTypeDefault
Tobjectobject

Parameters

NameTypeDescription
inputTObject which should be serialized to JSON
options?JsonSerializeOptionsJSON serialize options
Returns: string
the formatted JSON representation of the object

stripIndents

stripIndents(strings: TemplateStringsArray, ...values: any[]): string
Removes indents, which is useful for printing warning and messages.
Example:
1stripIndents`
2 Options:
3 - option1
4 - option2
5`;

Parameters

NameType
stringsTemplateStringsArray
...valuesany[]
Returns: string

stripJsonComments

Const stripJsonComments(text: string, replaceCh?: string): string
Takes JSON with JavaScript-style comments and remove them. Optionally replaces every none-newline character of comments with a replaceCharacter

Parameters

NameType
textstring
replaceCh?string
Returns: string

targetToTargetString

targetToTargetString(__namedParameters: Target): string
Returns a string in the format "project:target[:configuration]" for the target

Parameters

NameType
__namedParametersTarget
Returns: string

toJS

toJS(tree: Tree): void
Rename and transpile any new typescript files created to javascript files

Parameters

NameType
treeTree
Returns: void

updateJson

updateJson<T, U>(host: Tree, path: string, updater: (value: T) => U, options?: JsonParseOptions & JsonSerializeOptions): void
Updates a JSON value to the file system tree

Type parameters

NameTypeDefault
Tobjectany
UobjectT

Parameters

NameTypeDescription
hostTreeFile system tree
pathstringPath of JSON file in the Tree
updater(value: T) => UFunction that maps the current value of a JSON document to a new value to be written to the document
options?JsonParseOptions & JsonSerializeOptionsOptional JSON Parse and Serialize Options
Returns: void

updateProjectConfiguration

updateProjectConfiguration(host: Tree, projectName: string, projectConfiguration: ProjectConfiguration & NxJsonProjectConfiguration): void
Updates the configuration of an existing project.
The project configuration is stored in workspace.json and nx.json. The utility will update both files.

Parameters

NameTypeDescription
hostTreethe file system tree
projectNamestringunique name. Often directories are part of the name (e.g., mydir-mylib)
projectConfigurationProjectConfiguration & NxJsonProjectConfigurationproject configuration
Returns: void

updateTsConfigsToJs

updateTsConfigsToJs(host: Tree, options: { projectRoot: string }): void

Parameters

NameType
hostTree
optionsobject
options.projectRootstring
Returns: void

updateWorkspaceConfiguration

updateWorkspaceConfiguration(host: Tree, workspaceConfig: WorkspaceConfiguration): void
Update general workspace configuration such as the default project or cli settings.
This does not update projects configuration, use updateProjectConfiguration or addProjectConfiguration instead.

Parameters

NameType
hostTree
workspaceConfigWorkspaceConfiguration
Returns: void

visitNotIgnoredFiles

visitNotIgnoredFiles(tree: Tree, dirPath?: string, visitor: (path: string) => void): void
Utility to act on all files in a tree that are not ignored by git.

Parameters

NameType
treeTree
dirPathstring
visitor(path: string) => void
Returns: void

writeJson

writeJson<T>(host: Tree, path: string, value: T, options?: JsonSerializeOptions): void
Writes a JSON value to the file system tree

Type parameters

NameTypeDefault
Tobjectobject

Parameters

NameTypeDescription
hostTreeFile system tree
pathstringPath of JSON file in the Tree
valueTSerializable value to write
options?JsonSerializeOptionsOptional JSON Serialize Options
Returns: void

writeJsonFile

writeJsonFile<T>(path: string, data: T, options?: JsonWriteOptions): void
Serializes the given data to JSON and writes it to a file.

Type parameters

NameTypeDefault
Tobjectobject

Parameters

NameTypeDescription
pathstringA path to a file.
dataTdata which should be serialized to JSON and written to the file
options?JsonWriteOptionsJSON serialize options
Returns: void