···6869each tool has an abstraction to just build the node_modules (dependencies) directory. you can always use the stdenv.mkDerivation with the node_modules to build the package (symlink the node_modules directory and then use the package build command). the node_modules abstraction can be also used to build some web framework frontends. For an example of this see how [plausible](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix) is built. mkYarnModules to make the derivation containing node_modules. Then when building the frontend you can just symlink the node_modules directory
70000000000000000000000000000000000000000000000000000071## Tool specific instructions {#javascript-tool-specific}
7273### node2nix {#javascript-node2nix}
···6869each tool has an abstraction to just build the node_modules (dependencies) directory. you can always use the stdenv.mkDerivation with the node_modules to build the package (symlink the node_modules directory and then use the package build command). the node_modules abstraction can be also used to build some web framework frontends. For an example of this see how [plausible](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix) is built. mkYarnModules to make the derivation containing node_modules. Then when building the frontend you can just symlink the node_modules directory
7071+## javascript packages inside nixpkgs {#javascript-packages-nixpkgs}
72+73+The `pkgs/development/node-packages` folder contains a generated collection of
74+[NPM packages](https://npmjs.com/) that can be installed with the Nix package
75+manager.
76+77+As a rule of thumb, the package set should only provide _end user_ software
78+packages, such as command-line utilities. Libraries should only be added to the
79+package set if there is a non-NPM package that requires it.
80+81+When it is desired to use NPM libraries in a development project, use the
82+`node2nix` generator directly on the `package.json` configuration file of the
83+project.
84+85+The package set provides support for the official stable Node.js versions.
86+The latest stable LTS release in `nodePackages`, as well as the latest stable
87+Current release in `nodePackages_latest`.
88+89+If your package uses native addons, you need to examine what kind of native
90+build system it uses. Here are some examples:
91+92+- `node-gyp`
93+- `node-gyp-builder`
94+- `node-pre-gyp`
95+96+After you have identified the correct system, you need to override your package
97+expression while adding in build system as a build input. For example, `dat`
98+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):
99+100+```nix
101+ dat = super.dat.override {
102+ buildInputs = [ self.node-gyp-build pkgs.libtool pkgs.autoconf pkgs.automake ];
103+ meta.broken = since "12";
104+ };
105+```
106+107+To add a package from NPM to nixpkgs:
108+109+1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
110+ or remove package entries to have it included in `nodePackages` and
111+ `nodePackages_latest`.
112+2. Run the script: `cd pkgs/development/node-packages && ./generate.sh`.
113+3. Build your new package to test your changes:
114+ `cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
115+ To build against the latest stable Current Node.js version (e.g. 14.x):
116+ `nix-build -A nodePackages_latest.<new-or-updated-package>`
117+4. Add and commit all modified and generated files.
118+119+For more information about the generation process, consult the
120+[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
121+tool.
122+123## Tool specific instructions {#javascript-tool-specific}
124125### node2nix {#javascript-node2nix}
-51
doc/languages-frameworks/node.section.md
···1-# Node.js {#node.js}
2-3-The `pkgs/development/node-packages` folder contains a generated collection of
4-[NPM packages](https://npmjs.com/) that can be installed with the Nix package
5-manager.
6-7-As a rule of thumb, the package set should only provide *end user* software
8-packages, such as command-line utilities. Libraries should only be added to the
9-package set if there is a non-NPM package that requires it.
10-11-When 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
13-project.
14-15-The package set provides support for the official stable Node.js versions.
16-The latest stable LTS release in `nodePackages`, as well as the latest stable
17-Current release in `nodePackages_latest`.
18-19-If your package uses native addons, you need to examine what kind of native
20-build system it uses. Here are some examples:
21-22-* `node-gyp`
23-* `node-gyp-builder`
24-* `node-pre-gyp`
25-26-After you have identified the correct system, you need to override your package
27-expression while adding in build system as a build input. For example, `dat`
28-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):
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-37-To 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-49-For more information about the generation process, consult the
50-[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
51-tool.