nixpkgs/pkgs/development/node-packages
2018-03-13 00:04:44 +01:00
..
composition-v6.nix nodePackages: regenerate with node2nix 1.5.3 2018-03-13 00:04:44 +01:00
composition-v8.nix nodePackages: regenerate with node2nix 1.5.3 2018-03-13 00:04:44 +01:00
default-v6.nix
default-v8.nix
generate.sh treewide: Remove references to nodejs-4_x 2018-02-27 10:19:23 +01:00
node-env.nix nodePackages: regenerate with node2nix 1.5.3 2018-03-13 00:04:44 +01:00
node-packages-v6.json node-packages.json-diff: init at 0.5.2 2018-01-27 22:14:11 +09:00
node-packages-v6.nix nodePackages: regenerate with node2nix 1.5.3 2018-03-13 00:04:44 +01:00
node-packages-v8.json nodePackages_8_x.npm: init at 5.6.0 2018-03-01 18:21:49 +08:00
node-packages-v8.nix nodePackages: regenerate with node2nix 1.5.3 2018-03-13 00:04:44 +01:00
README.md

Node.js packages

The pkgs/development/node-packages folder contains a generated collection of NPM packages 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.

The package set also provides support for multiple Node.js versions. The policy is that a new package should be added to the collection for the latest stable LTS release (which is currently 6.x), unless there is an explicit reason to support a different release.

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 requires node-gyp-build, so we override its expression in default-v6.nix:

dat = nodePackages.dat.override (oldAttrs: {
  buildInputs = oldAttrs.buildInputs ++ [ nodePackages.node-gyp-build ];
});

To add a package from NPM to nixpkgs:

  1. Modify pkgs/development/node-packages/node-packages-v6.json to add, update or remove package entries. (Or pkgs/development/node-packages/node-packages-v4.json for packages depending on Node.js 4.x)
  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>. To build against a specific Node.js version (e.g. 4.x): nix-build -A nodePackages_4_x.<new-or-updated-package>
  4. Add and commit all modified and generated files.

For more information about the generation process, consult the README.md file of the node2nix tool.