1Node.js packages 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 also provides support for multiple Node.js versions. The policy 16is that a new package should be added to the collection for the latest stable LTS 17release (which is currently 8.x), unless there is an explicit reason to support 18a different release. 19 20If your package uses native addons, you need to examine what kind of native 21build system it uses. Here are some examples: 22 23* `node-gyp` 24* `node-gyp-builder` 25* `node-pre-gyp` 26 27After you have identified the correct system, you need to override your package 28expression while adding in build system as a build input. For example, `dat` 29requires `node-gyp-build`, so we override its expression in `default-v8.nix`: 30 31```nix 32dat = nodePackages.dat.override (oldAttrs: { 33 buildInputs = oldAttrs.buildInputs ++ [ nodePackages.node-gyp-build ]; 34}); 35``` 36 37To add a package from NPM to nixpkgs: 38 39 1. Modify `pkgs/development/node-packages/node-packages-v8.json` to add, update 40 or remove package entries. (Or `pkgs/development/node-packages/node-packages-v10.json` 41 for packages depending on Node.js 10.x) 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 a specific Node.js version (e.g. 10.x): 46 `nix-build -A nodePackages_10_x.<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.