The dumbest node to Nix packaging solution yet!
Status: This project has been integrated into nixpkgs as importNpmLock.
-
Map over package-lock.json packages, invoke correct fetcher
-
Update package.json & package-lock.lock to point to store paths URLs are rewritten to
file:...
dependencies that link to the Nix store. -
Run
npm install
Our configure/shell hook links individual directories inside the Nix built node_modules
directory.
This is to work around issues like nix-community/npmlock2nix#86 and that tools like vite
expects a writable node_modules.
default.nix
stdenv.mkDerivation {
pname = "my-website";
version = "0.1.0";
src = ./.;
nativeBuildInputs = [
buildNodeModules.hooks.npmConfigHook
nodejs
nodejs.passthru.python # for node-gyp
npmHooks.npmBuildHook
npmHooks.npmInstallHook
];
npmDeps = buildNodeModules.fetchNodeModules {
npmRoot = ./.;
};
}
shell.nix
pkgs.mkShell {
packages = [
buildNodeModules.hooks.linkNodeModulesHook
nodejs
];
npmDeps = buildNodeModules.buildNodeModules {
npmRoot = ./.;
inherit nodejs;
};
}