From 635395b9cc946d8c8f1851b5c4dc6210fb54e400 Mon Sep 17 00:00:00 2001 From: Joshua Potter Date: Sun, 3 Dec 2023 19:38:47 -0700 Subject: [PATCH] Discourage dev dependencies in package.json. --- specs/nodejs/runner | 10 ++++---- specs/nodejs/template/flake.nix | 3 +++ specs/nodejs/template/package-lock.json | 20 +++++---------- specs/nodejs/template/package.json | 4 +-- specs/phoenix/assets/node-packages.nix | 21 ++++++++++++--- specs/phoenix/assets/package-lock.json | 34 ++++++++++--------------- specs/phoenix/assets/package.json | 15 ++++++++--- 7 files changed, 59 insertions(+), 48 deletions(-) diff --git a/specs/nodejs/runner b/specs/nodejs/runner index 379c83f..3bfdc1c 100755 --- a/specs/nodejs/runner +++ b/specs/nodejs/runner @@ -43,7 +43,8 @@ trap cleanup EXIT cp -r template/* "$BUILD" # Copy over the CommonJS module responsible for validating the given NAME. -cp validate.cjs "$BUILD" +mkdir "$BUILD"/bs.nodejs +cp validate.cjs "$BUILD"/bs.nodejs # Explicitly set permissions on all copied files. find "$BUILD" -type f -execdir chmod 644 {} + @@ -51,9 +52,8 @@ find "$BUILD" -type d -execdir chmod 755 {} + # Validate the provided name is usable. nix develop "$BUILD" --command bash -c \ - "cd $BUILD && - npm install validate-npm-package-name && - node validate.cjs" + "npm --prefix $BUILD/bs.nodejs install validate-npm-package-name && + node $BUILD/bs.nodejs/validate.cjs" # Replace the placeholder name found in the template files. sed -i "s//$NAME/g" "$BUILD/flake.nix" @@ -70,4 +70,4 @@ nix develop "$BUILD" --command bash -c \ # ============================================================ # Success! Copy contents to target directory. -cp -r "$BUILD"/!(node_modules|validate.cjs) "$OUT" +cp -r "$BUILD"/!(bs.nodejs) "$OUT" diff --git a/specs/nodejs/template/flake.nix b/specs/nodejs/template/flake.nix index 07e6aba..42f29b4 100644 --- a/specs/nodejs/template/flake.nix +++ b/specs/nodejs/template/flake.nix @@ -28,6 +28,9 @@ src = ./.; npmDepsHash = ""; + # Needed to properly invoke npm run build. + nativeBuildInputs = [ pkgs.typescript ]; + installPhase = '' mkdir $out cp dist/index.js $out diff --git a/specs/nodejs/template/package-lock.json b/specs/nodejs/template/package-lock.json index 0bd0272..72fbf5e 100644 --- a/specs/nodejs/template/package-lock.json +++ b/specs/nodejs/template/package-lock.json @@ -8,22 +8,14 @@ "name": "", "version": "0.1.0", "license": "ISC", - "devDependencies": { - "typescript": "^5.3.2" + "dependencies": { + "lodash": "^4.17.21" } }, - "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" } } } diff --git a/specs/nodejs/template/package.json b/specs/nodejs/template/package.json index dcf0a60..15d92ba 100644 --- a/specs/nodejs/template/package.json +++ b/specs/nodejs/template/package.json @@ -11,7 +11,7 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": { - "typescript": "^5.3.2" + "dependencies": { + "lodash": "^4.17.21" } } diff --git a/specs/phoenix/assets/node-packages.nix b/specs/phoenix/assets/node-packages.nix index 5578ff9..04c6385 100644 --- a/specs/phoenix/assets/node-packages.nix +++ b/specs/phoenix/assets/node-packages.nix @@ -3,14 +3,29 @@ {nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: let - sources = {}; + sources = { + "lodash-4.17.21" = { + name = "lodash"; + packageName = "lodash"; + version = "4.17.21"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"; + sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="; + }; + }; + }; args = { - name = ""; - packageName = ""; + name = "blah"; + packageName = "blah"; version = "0.1.0"; src = ./.; + dependencies = [ + sources."lodash-4.17.21" + ]; buildInputs = globalBuildInputs; meta = { + description = ""; + license = "ISC"; }; production = true; bypassCache = true; diff --git a/specs/phoenix/assets/package-lock.json b/specs/phoenix/assets/package-lock.json index 0330f7c..1c0f531 100644 --- a/specs/phoenix/assets/package-lock.json +++ b/specs/phoenix/assets/package-lock.json @@ -1,36 +1,28 @@ { - "name": "", + "name": "blah", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "", + "name": "blah", "version": "0.1.0", - "devDependencies": { - "typescript": "^5.3.2" + "license": "ISC", + "dependencies": { + "lodash": "^4.17.21" } }, - "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" } }, "dependencies": { - "typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", - "dev": true + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" } } } diff --git a/specs/phoenix/assets/package.json b/specs/phoenix/assets/package.json index aab2688..019dcfb 100644 --- a/specs/phoenix/assets/package.json +++ b/specs/phoenix/assets/package.json @@ -1,8 +1,17 @@ { "name": "", "version": "0.1.0", - "devDependencies": { - "typescript": "^5.3.2" + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc", + "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"", + "test": "echo \"Error: no test specified\" && exit 1" }, - "private": true + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.21" + } }