CodeSampleX

Exemplo

commander 15.0.0: Parse command line options with commander without touching process.argv

Amostra verificada para npm commander 15.0.0: Parse command line options with commander without touching process.argv. O contrato rodou em node 22 · linux…

sha256:ae82f374c5cce645bfa0fbd914f1f675540b81131e60b0b93130f5caa6b74638

Esta rede oferece uma coisa: uma amostra que compila. Ela a executou em um sandbox e guardou o recibo assinado. Não classifica nem garante nada — se o mesmo código compila onde você está, ela não mediu. Quantas chaves de assinatura distintas enviaram um recibo de contrato aprovado. Uma é só o autor; mais de uma significa que outra pessoa também o compilou. Uma chave é gerada por conta própria e não tem identidade registrada por trás, então conta chaves, não pessoas. MIT-0

Evidência de execução

O ambiente declarado e as execuções assinadas ficam separados, para você ver exatamente o que esta amostra executou e onde.

Base da evidência
Contrato assinado aprovado
Recibos de verificação
3
Chaves de assinatura que o compilaram
3
Ambiente declarado node 22 linux x64 node 22 npm

Ambientes das execuções de verificação

Ambiente Contrato Etapas Execução
node 22 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-13
node 22 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1
2026-08-17
node 22 · linux alpine/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · node-typescript@1node:22-alpine@sha256:c610fcdfb1d5…
2026-09-08

Caso

HOW
Objetivo
Parse command line options with commander without touching process.argv
Pacotes
Símbolos
  • Command
  • program.option
  • program.parse
Ambiente
node 22
Criado
2026-08-13T15:19:24Z

Contrato

  1. build a Command with a value option, a flag and a default
  2. parse an explicit argument array with from: user
  3. assert values, flags and defaults land in opts()
  4. assert positional arguments are still reachable

Arquivos

  • csx.json
  • package-lock.json
  • package.json
  • src/index.mjs
  • test/contract.mjs

Baixar o artefato de código-fonte (tar.gz)

Código-fonte

csx.json
{"case":{"caseId":"case:sha256:12b9ee4f453ffcb914628f2a8bda58849d2ef93510e12c01d9971b548155205f","constraints":{"moduleSystem":"esm","runtime":"node"},"contract":["build a Command with a value option, a flag and a default","parse an explicit argument array with from: user","assert values, flags and defaults land in opts()","assert positional arguments are still reachable"],"goal":"Parse command line options with commander without touching process.argv","kind":"HOW","packages":["pkg:npm/commander@15.0.0"],"schemaVersion":1,"symbols":["Command","program.option","program.parse"]},"contractCommand":["node","test/contract.mjs"],"environment":{"arch":"x64","ecosystem":"npm","executionContext":"node","moduleSystem":"esm","os":"linux","packageManager":"npm","runtime":"node","runtimeVersion":"22","schemaVersion":1},"license":"MIT-0","packages":["pkg:npm/commander@15.0.0"],"schemaVersion":1,"symbols":["Command","program.option","program.parse"],"verifierAdapter":"node-typescript@1"}
package-lock.json
{
  "name": "csx-sample-commander-parse-options",
  "version": "1.0.0",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "csx-sample-commander-parse-options",
      "version": "1.0.0",
      "license": "MIT-0",
      "dependencies": {
        "commander": "15.0.0"
      }
    },
    "node_modules/commander": {
      "version": "15.0.0",
      "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz",
      "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==",
      "license": "MIT",
      "engines": {
        "node": ">=22.12.0"
      }
    }
  }
}
package.json
{
  "name": "csx-sample-commander-parse-options",
  "version": "1.0.0",
  "private": true,
  "type": "module",
  "license": "MIT-0",
  "dependencies": {
    "commander": "15.0.0"
  }
}
src/index.mjs
import { Command } from 'commander';

// parse(argv) expects a full node argv (argv[0] node, argv[1] script).
// Passing your own array without { from: 'user' } silently eats the first
// two entries — the classic "my first option disappeared" report.
export function parseArgs(argv) {
  const program = new Command();
  program
    .name('csx-demo')
    .argument('[target]', 'what to build', 'all')
    .option('-p, --port <number>', 'port to listen on', '3000')
    .option('-v, --verbose', 'verbose output')
    .exitOverride(); // throw instead of calling process.exit in a library
  program.parse(argv, { from: 'user' });
  return { options: program.opts(), args: program.args };
}
test/contract.mjs
import { strict as assert } from 'node:assert';
import { parseArgs } from '../src/index.mjs';

const explicit = parseArgs(['--port', '8080', '--verbose', 'server']);
assert.equal(explicit.options.port, '8080');
assert.equal(explicit.options.verbose, true);
assert.deepEqual(explicit.args, ['server']);

const defaults = parseArgs([]);
assert.equal(defaults.options.port, '3000'); // declared default
assert.equal(defaults.options.verbose, undefined);
console.log('CONTRACT PASS: commander parsed an explicit argv with from: user');

Seeder de origem

anonymous