94 lines
1.8 KiB
Markdown
94 lines
1.8 KiB
Markdown
# npmHooks.npmBuildHook {#npm-build-hook}
|
|
|
|
Hook for building packages that use npm. Can be used in multi-language environments.
|
|
|
|
## Examples {#npm-build-hook-snippet}
|
|
|
|
:::{.example #npm-build-hook-example-snippet}
|
|
|
|
# Using `npmHooks`
|
|
|
|
```nix
|
|
{
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
fetchNpmDeps,
|
|
npmHooks,
|
|
nodejsInstallExecutables,
|
|
nodejsInstallManuals,
|
|
nodejs,
|
|
}:
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "some-npm-project";
|
|
version = "1.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "JohnNpm";
|
|
repo = "SomeProject";
|
|
tag = finalAttrs.version;
|
|
hash = "...";
|
|
};
|
|
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
nodejs
|
|
nodejsInstallExecutables
|
|
nodejsInstallManuals
|
|
npmHooks.npmConfigHook
|
|
npmHooks.npmBuildHook
|
|
npmHooks.npmInstallHook
|
|
];
|
|
|
|
npmBuildScript = "build";
|
|
|
|
npmBuildFlags = [
|
|
"--prod"
|
|
];
|
|
|
|
npmFlags = [
|
|
"--ignore-scripts"
|
|
];
|
|
|
|
npmDeps = fetchNpmDeps {
|
|
inherit (finalAttrs) src;
|
|
hash = "...";
|
|
};
|
|
|
|
makeWrapperArgs = [
|
|
"--set"
|
|
"NODE_ENV"
|
|
"production"
|
|
];
|
|
|
|
meta = {
|
|
description = "npm project";
|
|
};
|
|
})
|
|
```
|
|
:::
|
|
|
|
## Variables controlling `npmBuildHook` {#npm-build-hook-variables}
|
|
|
|
### `npmBuildHook` Exclusive Variables {#npm-build-hook-exclusive-variables}
|
|
|
|
#### `npmBuildScript` {#npm-build-hook-script}
|
|
|
|
Controls the script ran to build the npm package within the `package.json` file.
|
|
Required to be set, usually to `build`, but can vary between packages.
|
|
|
|
#### `npmBuildFlags` {#npm-build-hook-flags}
|
|
|
|
Controls the arguments to the {command}`npm run $npmBuildScript` command.
|
|
|
|
#### `dontNpmBuild` {#npm-build-hook-dont}
|
|
|
|
Disables `npmBuildHook` when enabled
|
|
|
|
### Honored Variables {#npm-build-hook-honored-variables}
|
|
|
|
The following variables are honored by the `npmBuildHook`.
|
|
|
|
- [`npmWorkspace`](#javascript-buildNpmPackage-npmWorkspace)
|
|
- [`npmFlags`](#javascript-buildNpmPackage-npmFlags)
|