diff --git a/lib/cli.js b/lib/cli.js index 01dba5b..ae8713b 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -2,7 +2,7 @@ let { readConfig } = require("./config"); let { abort, repr } = require("./util"); -let parseArgs = require("minimist"); +let { parseArgs } = require("node:util"); let HELP = ` Usage: @@ -27,27 +27,55 @@ Options: serve generated files via HTTP with live reloading `.trim(); -exports.parseCLI = async function parseCLI(argv = process.argv.slice(2), help = HELP) { - argv = parseArgs(argv, { - boolean: ["watch", "fingerprint", "sourcemaps", "compact"], - alias: { - c: "config", - w: "watch", - h: "help" +exports.parseCLI = async function parseCLI() { + let { values } = parseArgs({ + options: { + help: { + type: "boolean", + short: "h", + default: false + }, + config: { + type: "string", + short: "c" + }, + watch: { + type: "boolean", + short: "w", + default: false + }, + fingerprint: { + type: "boolean", + default: false + }, + sourcemaps: { + type: "boolean", + default: false + }, + compact: { + type: "boolean", + default: false + }, + serve: { + type: "string" + }, + liveserve: { + type: "string" + } } }); - if(argv.help) { - abort(help, 0); + if(values.help) { + abort(HELP, 0); } let options = { - watch: argv.watch, - fingerprint: argv.fingerprint, - sourcemaps: argv.sourcemaps, - compact: argv.compact, - serve: argv.serve, - liveserve: argv.liveserve + watch: values.watch, + fingerprint: values.fingerprint, + sourcemaps: values.sourcemaps, + compact: values.compact, + serve: values.serve, + liveserve: values.liveserve }; if(options.watch && options.fingerprint) { // for convenience @@ -56,6 +84,6 @@ exports.parseCLI = async function parseCLI(argv = process.argv.slice(2), help = } let rootDir = process.cwd(); - let { referenceDir, config } = await readConfig(rootDir, argv.config); + let { referenceDir, config } = await readConfig(rootDir, values.config); return { referenceDir, config, options }; }; diff --git a/package.json b/package.json index 0d8e2e1..2241296 100644 --- a/package.json +++ b/package.json @@ -20,22 +20,19 @@ "faucet": "bin/faucet" }, "scripts": { - "test": "npm-run-all --parallel lint test:unit", - "test:unit": "mocha test/test_*.js", - "lint": "eslint --cache lib bin/* test test/bin/* && echo ✓" + "test": "npm run lint && npm run test:unit", + "test:unit": "node --test ./test/test_*.js", + "lint": "eslint --cache ./lib ./bin/* ./test ./test/bin/* && echo ✓" }, "engines": { "node": ">= 18" }, "dependencies": { "browserslist": "~4.22.1", - "minimist": "~1.2.7", "nite-owl": "~5.0.5" }, "devDependencies": { "eslint-config-fnd": "^1.13.0", - "mocha": "^10.2.0", - "npm-run-all": "^4.1.5", "release-util-fnd": "^3.0.0" } } diff --git a/test/test_manager.js b/test/test_manager.js index 9966e48..9ae62c2 100644 --- a/test/test_manager.js +++ b/test/test_manager.js @@ -1,7 +1,7 @@ -/* global describe, before, after, it */ "use strict"; let { AssetManager } = require("../lib/manager"); +let { describe, it, before, after } = require("node:test"); let path = require("path"); let assert = require("assert"); diff --git a/test/test_manifest.js b/test/test_manifest.js index e175209..07856ff 100644 --- a/test/test_manifest.js +++ b/test/test_manifest.js @@ -1,7 +1,7 @@ -/* global describe, before, after, it */ "use strict"; let { Manifest } = require("../lib/manifest"); +let { describe, it, before, after } = require("node:test"); let path = require("path"); let assert = require("assert"); diff --git a/test/test_plugins.js b/test/test_plugins.js index 104631d..637b3ab 100644 --- a/test/test_plugins.js +++ b/test/test_plugins.js @@ -1,7 +1,7 @@ -/* global describe, before, after, it */ "use strict"; let { pluginsByBucket, _determinePlugins } = require("../lib/plugins"); +let { describe, it, before, after } = require("node:test"); let path = require("path"); let assert = require("assert"); @@ -187,12 +187,12 @@ describe("plugin resolution", () => { })); }); - it("balks at invalid package identifiers", () => { - assert.rejects(async () => { + it("balks at invalid package identifiers", async () => { + await assert.rejects(async () => { return _determinePlugins(["faucet-pipeline-yummy"]); }, /exit 1/); - assert.rejects(() => { + await assert.rejects(() => { return _determinePlugins([{ // NB: local configuration must not be comprehensive to ensure // plugin is loaded @@ -202,8 +202,8 @@ describe("plugin resolution", () => { }, /exit 1/); }); - it("balks at duplicate configuration keys", () => { - assert.rejects(() => { + it("balks at duplicate configuration keys", async () => { + await assert.rejects(() => { return _determinePlugins([{ key: "dummy", bucket: "static", @@ -216,34 +216,35 @@ describe("plugin resolution", () => { }, /exit 1/); }); - it("balks at invalid plugins", () => { - assert.rejects(() => { + it("balks at invalid plugins", async () => { + await assert.rejects(() => { return _determinePlugins(["faucet-pipeline-invalid-a"]); }, /exit 1/); - assert.rejects(() => { + await assert.rejects(() => { return _determinePlugins(["faucet-pipeline-invalid-b"]); }, /exit 1/); - assert.rejects(() => { + await assert.rejects(() => { return _determinePlugins(["faucet-pipeline-invalid-c"]); }, /exit 1/); }); - it("balks at invalid buckets", () => { + it("balks at invalid buckets", async () => { let plugin = { key: "dummy", plugin: () => {} }; - ["static", "scripts", "styles", "markup"].forEach(bucket => { + const buckets = ["static", "scripts", "styles", "markup"]; + for(let bucket of buckets) { plugin.bucket = bucket; - assert.doesNotReject(() => { + await assert.doesNotReject(async () => { return _determinePlugins([plugin]); }, /exit 1/); - }); + } plugin.bucket = "dummy"; - assert.rejects(() => { + await assert.rejects(async () => { return _determinePlugins([plugin]); }, /exit 1/); }); diff --git a/test/test_runner.js b/test/test_runner.js index bf5a621..8a20d0f 100644 --- a/test/test_runner.js +++ b/test/test_runner.js @@ -1,7 +1,7 @@ -/* global describe, it */ "use strict"; let { SerializedRunner } = require("../lib/util/runner"); +let { describe, it } = require("node:test"); let { strictEqual: assertSame, deepStrictEqual: assertDeep } = require("assert"); describe("watch mode", () => { diff --git a/test/test_server.js b/test/test_server.js index e7f77a4..35467e1 100644 --- a/test/test_server.js +++ b/test/test_server.js @@ -1,7 +1,7 @@ -/* global describe, before, after, it */ "use strict"; let { _parseHost } = require("../lib/server"); +let { describe, it, before, after } = require("node:test"); let assert = require("assert"); let assertSame = assert.strictEqual; diff --git a/test/test_util.js b/test/test_util.js index 06f06e0..cad64c9 100644 --- a/test/test_util.js +++ b/test/test_util.js @@ -1,8 +1,8 @@ -/* global describe, it */ "use strict"; let { generateFingerprint } = require("../lib/util"); let { FileFinder } = require("../lib/util/files/finder"); +let { describe, it } = require("node:test"); let path = require("path"); let assert = require("assert");