The JS plugin contains executors and generators that are useful for JavaScript/TypeScript projects in an Nx workspace.
Setting Up @nx/js
Section titled “Setting Up @nx/js”Installation
Section titled “Installation”In any Nx workspace, you can install @nx/js
by running the following command:
nx add @nx/js
This will install the correct version of @nx/js
.
ts
Preset
Section titled “ts Preset”When initializing a new Nx workspace, specifying --preset=ts
will generate a workspace with @nx/js
pre-installed.
npx create-nx-workspace my-org --preset=ts
yarn create nx-workspace my-org --preset=ts
How @nx/js Infers Tasks
Section titled “How @nx/js Infers Tasks”The @nx/js/typescript
plugin will add a typecheck
task to projects that have a tsconfig.json
.
This plugin adds a build
task for projects that:
- Have a runtime tsconfig file (defaults to
tsconfig.lib.json
). - Have a
package.json
file containing entry points that are not source files.
For example, this project is buildable and will have a build
task.
{ "name": "@acme/pkg1", "exports": { "./package.json": "./package.json", ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" } }}
Whereas this project points to source files and will not have a build
task.
{ "name": "@acme/pkg1", "exports": { "./package.json": "./package.json", ".": "./src/index.ts" }}
View Inferred Tasks
Section titled “View Inferred Tasks”To view inferred tasks for a project, open the project details view in Nx Console or run nx show project my-project
in the command line.
@nx/js Configuration
Section titled “@nx/js Configuration”The @nx/js/typescript
plugin is configured in the plugins
array in nx.json
.
{ "plugins": [ { "plugin": "@nx/js/typescript", "options": { "typecheck": { "targetName": "typecheck" }, "build": { "targetName": "build", "configName": "tsconfig.lib.json" } } } ]}
You can also set typecheck
and build
options to false
to not infer the corresponding tasks.
{ "plugins": [ { "plugin": "@nx/js/typescript", "options": { "build": false } } ]}
Disable Typechecking
Section titled “Disable Typechecking”To disable typecheck
task for a specific project, set the nx.addTypecheckTarget
property to false
in tsconfig.json
.
{ "extends": "../../tsconfig.base.json", "files": [], "include": [], "references": [ { "path": "./tsconfig.lib.json" } ], "nx": { "addTypecheckTarget": false }}
Create Libraries
Section titled “Create Libraries”You can add a new JS/TS library with the following command:
nx g @nx/js:lib libs/my-lib
You can build
libraries that are generated with a bundler specified.
nx g @nx/js:lib libs/my-buildable-lib --bundler=rollup
Generating a library with --bundler
specified will add a build
target to the library's project.json
file allows the library to be built.
nx build my-buildable-lib
You can test a library with the following command:
nx test my-lib
You can lint a library with the following command:
nx lint my-lib
Compiler
Section titled “Compiler”By default, @nx/js
uses TypeScript Compiler (TSC), via @nx/js:tsc
executor, to compile your libraries. Optionally, you can switch tsc
out for a different compiler with --compiler
flag when executing the generators.
Currently, @nx/js
supports the following compilers:
- Create a buildable library with
swc
nx g @nx/js:lib libs/my-swc-lib --bundler=swc
- Convert a
tsc
library to useswc
nx g @nx/js:convert-to-swc my-buildable-lib
Now the build
command will use @nx/js:swc
executor to compile your libraries.
The first time you generate a
swc
library or convert atsc
library over toswc
,@nx/js
will install the necessary dependencies to useswc
.