Heim  >  Artikel  >  Web-Frontend  >  Erstellen von Befehlszeilentools mit node.js

Erstellen von Befehlszeilentools mit node.js

不言
不言Original
2018-04-10 17:04:451379Durchsuche

Der Inhalt dieses Artikels besteht darin, node.js zum Erstellen von Befehlszeilentools zu verwenden. Er hat einen gewissen Referenzwert.


Tool-Anweisungen

  • 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.

Ziel

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.

Vorbereiten

  1. Erstellen Sie ein neues Node.js-Projekt.

  2. 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.

  3. Fügen Sie #!/usr/bin/env node zum Header der Datei bin/my-cli.js hinzu.

  4. Fügen Sie  "bin": {"my-cli": "./bin/my-cli.js"}, zu package.json hinzu, um die Befehle zu deklarieren, die wir verwenden möchten.

  5. 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.

Abhängigkeiten installieren

Installieren Sie zunächst die beiden Hauptabhängigkeitsmodule (Informationen zur Verwendung dieser beiden Module finden Sie in der offiziellen Dokumentation)

npm install inquirer shelljs

Automatisieren Sie den Build- und Release-Prozess

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");

Neue Funktionen hinzufügen: Konfigurationsprüfung

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);
  }
Der letzte Schritt

So ein einfaches CLI-Programm wurde implementiert. Es automatisiert den Build- und Release-Prozess und führt Konfigurationsprüfungen vor dem Erstellen und Release durch.

Um die Stabilität des Programms zu verbessern, müssen in tatsächlichen Projekten auch Funktionen hinzugefügt werden, z. B. die Überprüfung, ob package.json im aktuellen Projekt vorhanden ist, die Verhinderung von JSON-Analysefehlern und die Bestätigung vor der Ausführung. Einzelheiten finden Sie im Beispielcode.

Beispielcode

Adresse: https://github.com/Aturan/node-cli-example

Fazit

Obwohl die oben genannten Funktionen eine Shell verwenden Es kann implementiert werden, aber das Schreiben von Code ist nicht so bequem und schnell, und sobald komplexere Probleme auftreten, ist es sehr mühsam, sie mithilfe der Shell zu implementieren, und auch die Wartung ist ein Problem.

Ps.: Für Ubuntu ist es ein Vorteil, dass das System direkt auf dem Server verwendet werden kann, ohne dass eine Umgebung installiert werden muss ein Inquirer-Modul.

Verwandte Empfehlungen:

Detailliertes Beispiel dafür, wie node.js die SQL Server-Datenbank erhält

Node.js-Modulsystem

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn