From 92d53362d4da7e19b6a7a6b1b936a0a34a17c0c9 Mon Sep 17 00:00:00 2001 From: Graham Christensen Date: Sat, 24 Mar 2018 10:47:41 -0400 Subject: Move all nixpkgs doc files in to the doc directory This makes a makefile-driven developer workflow nicer. --- doc/languages-frameworks/node.section.md | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 doc/languages-frameworks/node.section.md (limited to 'doc/languages-frameworks/node.section.md') diff --git a/doc/languages-frameworks/node.section.md b/doc/languages-frameworks/node.section.md new file mode 100644 index 000000000000..17a203ed12be --- /dev/null +++ b/doc/languages-frameworks/node.section.md @@ -0,0 +1,51 @@ +Node.js packages +================ +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. + +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`: + +```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.`. + To build against a specific Node.js version (e.g. 4.x): + `nix-build -A nodePackages_4_x.` + 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. -- cgit 1.4.1