Maison interface Web js tutoriel Npm crée un outil de ligne de commande cli

Npm crée un outil de ligne de commande cli

Apr 17, 2018 pm 04:14 PM
命令行 工具

Cette fois, je vais vous proposer Npm pour utiliser l'outil de ligne de commande cli. Quelles sont les précautions pour utiliser Npm pour utiliser l'outil de ligne de commande cli. Voici un cas pratique, jetons un coup d'œil.

Avant-propos

Si vous souhaitez écrire un plug-in npm, si vous souhaitez simplifier vos opérations via la ligne de commande, si vous êtes également un paresseux, alors cet article vaut la peine d'être lu.

L'article précédent du propriétaire du po présentait la personnalisation de son propre modèle, mais le propriétaire du po n'en est toujours pas satisfait. Dans le projet, nous devons fréquemment créer de nouvelles pages, des styles logiques et d'autres fichiers. Chaque fois, nous créons manuellement. un nouveau, puis copiez quelques codes de base. Il est très difficile d'y accéder, c'est pourquoi cet article est écrit. Ensuite, laissez le po master vous montrer étape par étape comment créer un plug-in de ligne de commande npm.

Enregistrer un compte npm

Pour publier un plug-in npm, vous devez d'abord avoir un compte npm. La démarche ne sera pas longue, je vous laisse.

Site officiel du npm

Une fois que vous avez un compte, nous générons un packagefichier de configuration via npm init, remplissons certaines de vos informations, puis vous pouvez commencer à écrire du code logique.

Écrire une entrée de commande

Tout d’abord, jetez un œil à la structure du projet

.
├── bin      //命令配置
├── README.md   //说明文档
├── index.js   //主入口
├── src      //功能文件
├── package.json //包信息
└── test     //测试用例
Copier après la connexion

Les exemples de codes de commande sont tous écrits dans le répertoire bin. Nous activons maintenant la commande dans le fichier de package du fichier de configuration et ajoutons un élément de configuration bin

 "bin": {
    "xu": "./bin/xu.js"
  },
Copier après la connexion

. Installez ensuite une dépendance, le plug-in commander écrit par TJ,

npm i commander --save
Copier après la connexion

Avec cet outil, nous pouvons facilement écrire des codes de commande

xu.js

#!/usr/bin/env node
process.title = 'xu';
require('commander')
.version(require('../package').version)
.usage('<command> [options]')
.command('generate', 'generate file from a template (short-cut alias: "g")')
.parse(process.argv)
require('./xu-generate');  >>引入
Copier après la connexion

Ce fichier peut être considéré comme un fichier d'entrée. La première ligne de code doit être ajoutée. La raison pour laquelle le script est démarré avec env est que l'interpréteur de script peut être installé dans différents répertoires sous Linux env. dans Rechercher dans le répertoire PATH du système. Dans le même temps, env spécifie également certaines variables d'environnement système . Cette façon d'écrire sert principalement à rendre votre programme applicable sur différents systèmes.

A cette étape, vous pouvez simplement tester votre propre plugin npm

$ node ./bin/xu.js
>>> 输出一些插件usage。help信息
Copier après la connexion

Concernant le commandant, vous pouvez vous rendre sur le Github de l'auteur pour en prendre connaissance au préalable. Les paramètres ne seront pas expliqués ici.

xu-generate.js

#!/usr/bin/env node
const program = require('commander');
const chalk = require('chalk')
const xu = require('../src/generate');
/**
 * Usage.
 */
program
.command('generate')
.description('quick generate your file')
.alias('g')
.action(function(type, name){
  xu.run(type, name);
});
program.parse(process.argv);
Copier après la connexion

Il s'agit de la commande de fonction, qui définit une commande de génération, .alias('g') est l'abréviation de la commande, puis .action(function(type, name){xu.run(type, name); }); renvoie une fonction, cette fonction est ce que nous devons faire pour définir cette commande.

Fonction d'écriture

./src/generate.js

Ce fichier définit quand on entre

$ xu g
Copier après la connexion

L'opération était faite.

/**
 * Created by xushaoping on 17/10/11.
 */
const fs = require('fs-extra')
const chalk = require('chalk')
exports.run = function(type, name) {
  switch (type) {
    case 'page':
      const pageFile = './src/page/' + name + '/' + name + '.vue'
      const styleFile = './src/page/' + name + '/' + name + '.less'
      fs.pathExists(pageFile, (err, exists) => {
        if (exists) {
          console.log('this file has created')
        } else {
          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.vue', pageFile, err => {
            if (err) return console.error(err)
        
            console.log(pageFile + ' has created')
          })
          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.less', styleFile, err => {
            if (err) return console.error(err)
        
            console.log(styleFile + ' has created')
          })
        }
      })
      break;
    case 'component':
      const componentFile = './src/components/' + name + '.vue'
      fs.pathExists(componentFile, (err, exists) => {
        if (exists) {
          console.log('this file has created')
        } else {
          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/component.vue', componentFile, err => {
            if (err) return console.error(err)
          
            console.log(componentFile + ' has created')
          })
        }
      })
      break;
    case 'store':
      const storeFile = './src/store/modules' + name + '.js'
      fs.pathExists(storeFile, (err, exists) => {
        if (exists) {
          console.log('this file has created')
        } else {
          fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/store.js', storeFile, err => {
            if (err) return console.error(err)
          
            console.log(storeFile + ' has created')
          })
        }
      })
      break;
    default:
      console.log(chalk.red(`ERROR: uncaught type , you should input like $ xu g page demo` ))
      console.log()
      console.log(' Examples:')
      console.log()
      console.log(chalk.gray('  # create a new page'))
      console.log('  $ xu g page product')
      console.log()
      console.log(chalk.gray('  # create a new component'))
      console.log('  $ xu g component product')
      console.log()
      console.log(chalk.gray('  # create a new store'))
      console.log('  $ xu g store product')
      console.log()
      break;
  }
};
Copier après la connexion

Il y a deux nouvelles dépendances ici, à savoir la couleur de sortie de la commande et un plug-in d'opération de fichier, installé via npm.

$ npm i fs-extra --save
$ npm i chalk --save
Copier après la connexion

Ce fichier js exporte une fonction d'exécution qui sera appelée par xu-generate.js. Nous obtenons le type et le nom saisis par l'utilisateur via les paramètres, puis nous pouvons opérer en fonction du type via le module node fs (une dépendance est utilisée ici. , mais le principe est toujours fs) Copiez le fichier modèle dans votre projet.

À ce stade, nous avons terminé le développement d'une commande capable de générer rapidement le fichier modèle du projet.

Tests locaux

Le développement de packages npm n'est pas comme le développement Web. Vous pouvez le visualiser directement dans le navigateur, créer un fichier de test dans le répertoire de l'instance, puis tester le nœud. Juste pour tester notre logique. Si certaines fonctions doivent être testées après la publication, npm dispose d'une commande link qui peut se connecter à votre module local. Bien sûr, vous pouvez également la publier après. Installer le test du plug-in vous-même revient à introduire un plug-in.

Publier le package npm

Exécutez d’abord la connexion npm dans le répertoire racine du projet

$ npm login 
$ npm publish
Copier après la connexion

S'il y a une erreur ici, il se peut que vous ayez utilisé l'adresse cnpm et que vous deviez redéfinir l'entrepôt npm

 $ npm config set registry https://registry.npmjs.org/
Copier après la connexion

Ensuite, mettez à jour le package npm. Le numéro de version doit être supérieur à la dernière fois

. Post-scriptum

À ce stade, un package npm d’entrée de gamme est terminé. J'ai été très ému. Je me souviens que lorsque j'ai commencé à travailler sur le front-end, j'ai vu que les plug-ins des autres étaient vraiment bons, je pouvais les rendre si beaux avec juste une simple installation, j'ai voulu le faire ~ mais quand je l'ai fait. J'ai vu un tas de choses inconnues, j'ai immédiatement été découragé (environnement de nœud, il y a beaucoup de choses. J'ai juste copié vue-cli et j'ai vu une paire de codes. Veuillez l'ignorer si vous êtes une bonne personne)

L'apprentissage est un processus étape par étape. Sans une certaine base et une accumulation d'expérience à long terme, il est difficile d'apprendre le code source des éléments écrits par des experts. Si vous devez mâcher, c'est bien, mais l'efficacité n'est pas aussi bonne que étape par étape.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Utiliser des minuteries avec AngualrJs

Sélection du formulaire d'action ReactJS

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment optimiser les performances de Debian Readdir Comment optimiser les performances de Debian Readdir Apr 13, 2025 am 08:48 AM

Dans Debian Systems, les appels du système ReadDir sont utilisés pour lire le contenu des répertoires. Si ses performances ne sont pas bonnes, essayez la stratégie d'optimisation suivante: simplifiez le nombre de fichiers d'annuaire: divisez les grands répertoires en plusieurs petits répertoires autant que possible, en réduisant le nombre d'éléments traités par appel ReadDir. Activer la mise en cache de contenu du répertoire: construire un mécanisme de cache, mettre à jour le cache régulièrement ou lorsque le contenu du répertoire change et réduire les appels fréquents à Readdir. Les caches de mémoire (telles que Memcached ou Redis) ou les caches locales (telles que les fichiers ou les bases de données) peuvent être prises en compte. Adoptez une structure de données efficace: si vous implémentez vous-même la traversée du répertoire, sélectionnez des structures de données plus efficaces (telles que les tables de hachage au lieu de la recherche linéaire) pour stocker et accéder aux informations du répertoire

Comment Debian améliore la vitesse de traitement des données Hadoop Comment Debian améliore la vitesse de traitement des données Hadoop Apr 13, 2025 am 11:54 AM

Cet article examine comment améliorer l'efficacité du traitement des données Hadoop sur les systèmes Debian. Les stratégies d'optimisation couvrent les mises à niveau matérielle, les ajustements des paramètres du système d'exploitation, les modifications de configuration de Hadoop et l'utilisation d'algorithmes et d'outils efficaces. 1. Le renforcement des ressources matérielles garantit que tous les nœuds ont des configurations matérielles cohérentes, en particulier en faisant attention aux performances du CPU, de la mémoire et de l'équipement réseau. Le choix des composants matériels de haute performance est essentiel pour améliorer la vitesse de traitement globale. 2. Réglage des paramètres JVM: Ajustez dans le fichier hadoop-env.sh

Comment utiliser les journaux Nginx pour améliorer la vitesse du site Web Comment utiliser les journaux Nginx pour améliorer la vitesse du site Web Apr 13, 2025 am 09:09 AM

L'optimisation des performances du site Web est inséparable à partir d'une analyse approfondie des journaux d'accès. Le journal Nginx enregistre les informations détaillées des utilisateurs visitant le site Web. L'utilisation intelligente de ces données peut efficacement améliorer la vitesse du site Web. Cet article présentera plusieurs méthodes d'optimisation des performances du site Web basées sur les journaux Nginx. 1. Analyse et optimisation du comportement des utilisateurs. En analysant le journal NGINX, nous pouvons acquérir une compréhension approfondie du comportement des utilisateurs et faire une optimisation ciblée en fonction de ceci: Identification IP d'accès à haute fréquence: Trouvez l'adresse IP avec la fréquence d'accès la plus élevée, et optimiser la configuration des ressources du serveur pour ces adresses IP, telles que l'augmentation de la bande passante ou l'amélioration de la vitesse de réponse du contenu spécifique. Analyse du code d'état: analyser la fréquence des différents codes d'état HTTP (tels que 404 erreurs), trouver des problèmes dans la navigation du site Web ou la gestion du contenu et procéder

Méthode d'installation du certificat de Debian Mail Server SSL Méthode d'installation du certificat de Debian Mail Server SSL Apr 13, 2025 am 11:39 AM

Les étapes pour installer un certificat SSL sur le serveur de messagerie Debian sont les suivantes: 1. Installez d'abord la boîte à outils OpenSSL, assurez-vous que la boîte à outils OpenSSL est déjà installée sur votre système. Si ce n'est pas installé, vous pouvez utiliser la commande suivante pour installer: Sudoapt-getUpDaSuDoapt-getInstallOpenSSL2. Générer la clé privée et la demande de certificat Suivant, utilisez OpenSSL pour générer une clé privée RSA 2048 bits et une demande de certificat (RSE): OpenSS

Comment Debian Readdir s'intègre à d'autres outils Comment Debian Readdir s'intègre à d'autres outils Apr 13, 2025 am 09:42 AM

La fonction ReadDir dans le système Debian est un appel système utilisé pour lire le contenu des répertoires et est souvent utilisé dans la programmation C. Cet article expliquera comment intégrer ReadDir avec d'autres outils pour améliorer sa fonctionnalité. Méthode 1: combinant d'abord le programme de langue C et le pipeline, écrivez un programme C pour appeler la fonction readdir et sortir le résultat: # include # include # include # includeIntmain (intargc, char * argv []) {dir * dir; structDirent * entrée; if (argc! = 2) {

Comment Debian OpenSSL empêche les attaques de l'homme au milieu Comment Debian OpenSSL empêche les attaques de l'homme au milieu Apr 13, 2025 am 10:30 AM

Dans Debian Systems, OpenSSL est une bibliothèque importante pour le chiffrement, le décryptage et la gestion des certificats. Pour empêcher une attaque d'homme dans le milieu (MITM), les mesures suivantes peuvent être prises: utilisez HTTPS: assurez-vous que toutes les demandes de réseau utilisent le protocole HTTPS au lieu de HTTP. HTTPS utilise TLS (Protocole de sécurité de la couche de transport) pour chiffrer les données de communication pour garantir que les données ne sont pas volées ou falsifiées pendant la transmission. Vérifiez le certificat de serveur: vérifiez manuellement le certificat de serveur sur le client pour vous assurer qu'il est digne de confiance. Le serveur peut être vérifié manuellement via la méthode du délégué d'URLSession

Comment recycler des packages qui ne sont plus utilisés Comment recycler des packages qui ne sont plus utilisés Apr 13, 2025 am 08:51 AM

Cet article décrit comment nettoyer les packages logiciels inutiles et libérer l'espace disque dans le système Debian. Étape 1: Mettez à jour la liste des packages Assurez-vous que votre liste de packages est à jour: SudoaptupDate Étape 2: Afficher les packages installés Utilisez la commande suivante pour afficher tous les packages installés: DPKG - GETT-Selections | Grep-Vdeinstall Étape 3: Identifier les packages de redondance Utilisez l'outil d'aptitude pour trouver des packages qui ne sont plus nécessaires. L'aptitude fournira des suggestions pour vous aider à supprimer en toute sécurité les packages: SudoaptitudEsearch '~ Pimportant' Cette commande répertorie les balises

Comment apprendre Debian Syslog Comment apprendre Debian Syslog Apr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

See all articles