Maison  >  Article  >  interface Web  >  Création d'outils de ligne de commande à l'aide de node.js

Création d'outils de ligne de commande à l'aide de node.js

不言
不言original
2018-04-10 17:04:451443parcourir

Le contenu de cet article est d'utiliser node.js pour créer des outils de ligne de commande. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer


Instructions de l'outil

  • inquirer.js : Un module node.js qui encapsule les interactions courantes en ligne de commande. Ce module peut facilement créer une nouvelle application en ligne de commande.

  • shell.js : module de commande shell unix multiplateforme.

  • Version du nœud : Puisque la méthode asynchrone de inquirer.js renvoie Promise par défaut, il est recommandé d'utiliser node.js>=8.

Objectif

Au travail, il y a un grand nombre de projets qui doivent être testés, compilés, mis à jour le numéro de version, soumis, et même les commandes exécutées sont les idem dans la dernière étape avant de se connecter. Ici, nous utilisons des outils de ligne de commande pour automatiser ces étapes en un seul clic et effectuer des vérifications préalables pour éviter les erreurs et les omissions.

Préparer

  1. Créer un nouveau projet Node.js.

  2. Créez le fichier bin/my-cli.js Le projet node.js place généralement l'entrée cli dans le répertoire bin et les autres modules dans le répertoire lib.

  3. Ajoutez #!/usr/bin/env node à l'en-tête du fichier bin/my-cli.js.

  4. Ajoutez  "bin": {"my-cli": "./bin/my-cli.js"}, à package.json pour déclarer les commandes que nous souhaitons utiliser.

  5. Exécutez npm link dans le répertoire racine du projet pour créer une commande globale my-cli.

Modifiez légèrement my-cli.js, ajoutez le code console.log("I am a cli tool!"), puis ouvrez la console et exécutez la commande my-cli Si vous voyez la sortie de la console I am a cli tool!, cela signifie succès.

Installer les dépendances

Installez d'abord les deux modules de dépendances principaux (merci de vous référer à la documentation officielle pour l'utilisation de ces deux modules)

npm install inquirer shelljs

Automatiser le processus de construction et de publication

Ensuite, implémentez d'abord l'automatisation des tests, la mise à jour des numéros de version, la construction et la soumission automatique pour publication

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

Ajouter de nouvelles fonctionnalités : vérification de la configuration

Suivant Ajouter une fonction à my-cli :

Lorsque l'attribut my-cli de l'objet check-baidu-id dans package.json est vérifié comme étant true, vérifiez si l'attribut config.json du projet existe 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);
  }
La dernière étape

Un programme cli aussi simple a été implémenté. Il automatise le processus de construction et de publication et effectue des vérifications de configuration avant la construction et la publication.

Dans les projets réels, afin d'améliorer la stabilité du programme, il est également nécessaire d'ajouter des fonctions telles que vérifier si package.json existe dans le projet en cours, empêcher les erreurs d'analyse json et confirmer avant l'exécution. Pour plus de détails, consultez l’exemple de code.

Exemple de code

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

Conclusion

Bien que les fonctions ci-dessus utilisent le shell Il peut être implémenté, mais l'écriture de code n'est pas si pratique et rapide, et une fois que des problèmes complexes seront rencontrés, il sera très difficile de les implémenter à l'aide du shell, et la maintenance est également un problème.

PS. En fait, vous pouvez également utiliser Python. Pour Ubuntu, c'est un avantage que le système soit livré avec Python. Il peut être utilisé directement sur le serveur sans installer d'environnement. un module Inquirer.

Recommandations associées :

Exemple détaillé de la façon dont node.js obtient la base de données SQL Server

Système de modules Node.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn