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.