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/jsThis 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=tsyarn create nx-workspace my-org --preset=tsHow @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.jsonfile 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-libYou can build libraries that are generated with a bundler specified.
nx g @nx/js:lib libs/my-buildable-lib --bundler=rollupGenerating 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-libYou can test a library with the following command:
nx test my-libYou can lint a library with the following command:
nx lint my-libCompiler
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 tsclibrary to useswc
nx g @nx/js:convert-to-swc my-buildable-libNow the build command will use @nx/js:swc executor to compile your libraries.
The first time you generate a
swclibrary or convert atsclibrary over toswc,@nx/jswill install the necessary dependencies to useswc.