summaryrefslogtreecommitdiffstats
path: root/doc/hooks/npm-build-hook.section.md
blob: a3cda18b444926c723c48130bc60dc0b31c32da9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# 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)