LabKey Server has a dependency on Node.js
and the node package manager (npm).
The build process will download the versions of npm and node that are specified by the properties npmVersion and nodeVersion, respectively, which are defined in the root-level gradle.properties file of the LabKey enlistment. This means you no longer need to, nor should you, install npm and node yourself.
To build LabKey, you must have the build-prod
script defined. See below
: LabKey's dependency on node changed in late 2018. For older versions of LabKey, and assistance migrating to the new build system, please review the Documentation Archives
To build LabKey, the package.json file (at the root of your module) should contain specific "scripts" targets, namely:
- build-prod: Script used by npm to build in production mode.
- Used for Local Development:
- build: Script used by npm to build in dev mode.
- start: Run locally to start the webpack dev server
- test: Run locally to run jest tests.
- clean: Convenience script to clean generated files. Does not delete downloaded node_modules.
- Required for TeamCity (also requires TeamCity configuration to set up modules to run jest tests):
- teamcity: Runs jest tests with a TeamCity plugin
Running npm on Command Line
If you run npm commands from the command line, it is strongly recommended that you put the downloaded versions of node and npm in your path. (Both are required to be in your path for the npm commands to run.) For these purposes, on non-Windows systems, the deployApp command creates symlinks for both node and npm in the directory .node at the root level of your enlistment:
labkeyHome$ ls -la .node/
drwxr-xr-x 4 developer staff 128 Jun 14 14:11 .
drwxr-xr-x 38 developer staff 1216 Jun 18 10:36 ..
lrwxr-xr-x 1 developer staff 90 Jun 14 14:11 node -> /Users/developer/Development/labkey/labkeyHome/build/modules/core/.node/node-v8.11.3-darwin-x64
lrwxr-xr-x 1 developer staff 77 Jun 14 13:58 npm -> /Users/developer/Development/labkey/labkeyHome/build/modules/core/.node/npm-v5.6.0
You should add <LABKEY_HOME>/.node/node/bin and <LABKEY_HOME>/.node/npm/bin to your path environment variable. This is a one-time operation. The target of these links will be updated to reflect any version number changes. (Note that the directory won't exist until you run a deployApp command.)
For Windows systems, these links can be created manually using the MKLINK command, which must be run as a user with permissions to create symbolic links. These manually created links will not be updated when version numbers change, so it may be just as easy to forego the symbolic link and alter your path to include the build/modules/core/.node/node* and build/modules/core/.node/npm* directories (the directory name will include the version number of the tool).
Confirm that node.js has been installed by calling
Confirm that npm has been installed by calling