2021-01-01 17:45:43 +00:00
# Node.js {#node.js}
2018-03-24 14:47:41 +00:00
The `pkgs/development/node-packages` folder contains a generated collection of
[NPM packages ](https://npmjs.com/ ) that can be installed with the Nix package
manager.
As a rule of thumb, the package set should only provide *end user* software
packages, such as command-line utilities. Libraries should only be added to the
package set if there is a non-NPM package that requires it.
When it is desired to use NPM libraries in a development project, use the
`node2nix` generator directly on the `package.json` configuration file of the
project.
2020-05-29 17:25:11 +01:00
The package set provides support for the official stable Node.js versions.
The latest stable LTS release in `nodePackages` , as well as the latest stable
Current release in `nodePackages_latest` .
2018-03-24 14:47:41 +00:00
If your package uses native addons, you need to examine what kind of native
build system it uses. Here are some examples:
* `node-gyp`
* `node-gyp-builder`
* `node-pre-gyp`
After you have identified the correct system, you need to override your package
expression while adding in build system as a build input. For example, `dat`
2020-09-02 17:00:42 +01:00
requires `node-gyp-build` , so [we override ](https://github.com/NixOS/nixpkgs/blob/32f5e5da4a1b3f0595527f5195ac3a91451e9b56/pkgs/development/node-packages/default.nix#L37-L40 ) its expression in [`default.nix` ](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/node-packages/default.nix ):
2018-03-24 14:47:41 +00:00
```nix
2020-09-02 17:00:42 +01:00
dat = super.dat.override {
buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
meta.broken = since "12";
};
2018-03-24 14:47:41 +00:00
```
To add a package from NPM to nixpkgs:
2020-05-29 17:25:11 +01:00
1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
or remove package entries to have it included in `nodePackages` and
`nodePackages_latest` .
2018-03-24 14:47:41 +00:00
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)` .
3. Build your new package to test your changes:
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>` .
2020-05-29 17:25:11 +01:00
To build against the latest stable Current Node.js version (e.g. 14.x):
`nix-build -A nodePackages_latest.<new-or-updated-package>`
2018-03-24 14:47:41 +00:00
4. Add and commit all modified and generated files.
For more information about the generation process, consult the
[README.md ](https://github.com/svanderburg/node2nix ) file of the `node2nix`
tool.