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
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.
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.
Créer un nouveau projet Node.js.
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.
Ajoutez #!/usr/bin/env node
à l'en-tête du fichier bin/my-cli.js.
Ajoutez "bin": {"my-cli": "./bin/my-cli.js"},
à package.json pour déclarer les commandes que nous souhaitons utiliser.
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.
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
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");
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); }
Exemple détaillé de la façon dont node.js obtient la base de données SQL Server
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!