1# Node.js {#node.js} 2 3The `pkgs/development/node-packages` folder contains a generated collection of 4[NPM packages](https://npmjs.com/) that can be installed with the Nix package 5manager. 6 7As a rule of thumb, the package set should only provide *end user* software 8packages, such as command-line utilities. Libraries should only be added to the 9package set if there is a non-NPM package that requires it. 10 11When it is desired to use NPM libraries in a development project, use the 12`node2nix` generator directly on the `package.json` configuration file of the 13project. 14 15The package set provides support for the official stable Node.js versions. 16The latest stable LTS release in `nodePackages`, as well as the latest stable 17Current release in `nodePackages_latest`. 18 19If your package uses native addons, you need to examine what kind of native 20build system it uses. Here are some examples: 21 22* `node-gyp` 23* `node-gyp-builder` 24* `node-pre-gyp` 25 26After you have identified the correct system, you need to override your package 27expression while adding in build system as a build input. For example, `dat` 28requires `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): 29 30```nix 31 dat = super.dat.override { 32 buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ]; 33 meta.broken = since "12"; 34 }; 35``` 36 37To add a package from NPM to nixpkgs: 38 39 1. Modify `pkgs/development/node-packages/node-packages.json` to add, update 40 or remove package entries to have it included in `nodePackages` and 41 `nodePackages_latest`. 42 2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`. 43 3. Build your new package to test your changes: 44 `cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`. 45 To build against the latest stable Current Node.js version (e.g. 14.x): 46 `nix-build -A nodePackages_latest.<new-or-updated-package>` 47 4. Add and commit all modified and generated files. 48 49For more information about the generation process, consult the 50[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix` 51tool.