Der Inhalt dieses Artikels besteht darin, node.js zum Erstellen von Befehlszeilentools zu verwenden. Er hat einen gewissen Referenzwert.
inquirer.js: Ein node.js-Modul, das allgemeine Befehlszeileninteraktionen kapselt. Mit diesem Modul kann problemlos eine neue Befehlszeilenanwendung erstellt werden.
shell.js: plattformübergreifendes Unix-Shell-Befehlsmodul.
Knotenversion: Da die asynchrone Methode von inquirer.js standardmäßig Promise zurückgibt, wird empfohlen, node.js>=8 zu verwenden.
Bei der Arbeit gibt es eine große Anzahl von Projekten, die getestet, kompiliert, die Versionsnummer aktualisiert, übermittelt und sogar die ausgeführten Befehle müssen Dasselbe gilt für den letzten Schritt, bevor wir online gehen. Hier verwenden wir Befehlszeilentools, um diese Schritte mit einem Klick zu automatisieren und Vorabprüfungen durchzuführen, um Fehler und Auslassungen zu verhindern.
Erstellen Sie ein neues Node.js-Projekt.
Erstellen Sie die Datei bin/my-cli.js. Das node.js-Projekt platziert normalerweise den CLI-Eintrag im bin-Verzeichnis und andere Module im lib-Verzeichnis.
Fügen Sie #!/usr/bin/env node
zum Header der Datei bin/my-cli.js hinzu.
Fügen Sie "bin": {"my-cli": "./bin/my-cli.js"},
zu package.json hinzu, um die Befehle zu deklarieren, die wir verwenden möchten.
Führen Sie npm link
im Projektstammverzeichnis aus, um einen globalen Befehl my-cli
zu erstellen.
Ändern Sie my-cli.js
leicht, fügen Sie Code hinzu console.log("I am a cli tool!")
, öffnen Sie dann die Konsole und führen Sie den Befehl my-cli
aus. Wenn Sie die Konsolenausgabe I am a cli tool!
sehen, bedeutet dies Erfolg.
Installieren Sie zunächst die beiden Hauptabhängigkeitsmodule (Informationen zur Verwendung dieser beiden Module finden Sie in der offiziellen Dokumentation)
npm install inquirer shelljs
Als nächstes implementieren Sie zunächst die Automatisierung des Testens, Aktualisierens von Versionsnummern, Erstellen und automatisches Einreichen zur Veröffentlichung
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); const { version } = await inquirer.prompt([ { type: 'list', name: 'version', message: '版本号更新方式:', choices: [ { name: `v${semver.inc(pkg.version, 'patch')}: Fix Bugs / Patch`, value: 'patch' }, { name: `v${semver.inc(pkg.version, 'minor')}: Release New Version`, value: 'minor' }, ] } ]); // 拉取最新版本 shelljs.exec('git pull'); // 运行测试 shelljs.exec('npm test'); //通过npm version更新版本号,但不自动添加git tag,而是在构建完成后由cli工具添加 shelljs.exec(`npm version ${version} --no-git-tag-version`); // 构建 shelljs.exec('npm run build'); // 提交发布代码 const nextVersion = semver.inc(pkg.version, version); shelljs.exec('git add . -A'); shelljs.exec(`git commit -m "build: v${nextVersion}"`) shelljs.exec(`git tag -a v${nextVersion} -m "build: ${nextVersion}"`); shelljs.exec("git push") shelljs.exec("git push --tags");
Weiter Fügen Sie eine Funktion zu my-cli
hinzu:
Wenn das my-cli
-Attribut des check-baidu-id
-Objekts in package.json auf true
überprüft wird, prüfen Sie, ob das config.json
-Attribut vorhanden ist des Projekts existiert baidu-id
>
if (pkg['my-cli'] && pkg['my-cli']['check-baidu-id']) { const configPath = path.join(process.cwd(), 'config.json'); if (!fs.existsSync(configPath)) { shelljs.echo('找不到config.json'); shelljs.exit(1); } const config = JSON.parse(fs.readFileSync(configPath, 'utf8')); if (!config['baidu-id']) { shelljs.echo('config.json缺少属性[baidu-id]'); shelljs.exit(1); }
Detailliertes Beispiel dafür, wie node.js die SQL Server-Datenbank erhält
Das obige ist der detaillierte Inhalt vonErstellen von Befehlszeilentools mit node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!