Cette semaine, je me prépare à lancer mon outil de ligne de commande, VShell, en production. Cette version permettra aux utilisateurs d'installer et d'utiliser VShell directement via npm sans avoir besoin de cloner et de créer le projet localement. Écrit en JavaScript avec Node.js, l'outil sera hébergé sur npm pour faciliter la distribution. Vous trouverez ci-dessous un aperçu détaillé des étapes que j'ai suivies pour réaliser cette version :
Pour assurer un build reproductible et automatisé, j'ai créé un script build.js à la racine du projet. Ce script copie tous les fichiers nécessaires dans un dossier dist, simplifiant ainsi le processus de construction.
En plus, j'ai également mis en place un script pour l'exécuter dans package.json :
"build": "node build.js"
Pour l'exécuter, il suffit de taper : npm run build sur la console
Actuellement, je voulais juste démontrer une simple construction en copiant des fichiers, mais à l'avenir, si j'implémentais avec l'interface utilisateur, je devrais alors utiliser le script de bundle de modèles comme barbeau.
Auparavant, j'oubliais souvent de mettre à jour la version du projet après avoir apporté des modifications. Pour cette version, j'ai adopté le versioning sémantique pour communiquer clairement les modifications apportées à l'API du projet.
Compte tenu des mises à jour importantes depuis la v0.0.1, j'ai défini la version sur v1.0.0 en mettant à jour le champ version dans package.json. Cette version reflète une API stable avec des modifications importantes et de nouvelles fonctionnalités.
Pour synchroniser la mise à jour de version avec les versions de GitHub, j'ai créé une balise Git pour la v1.0.0 :
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin --tags
Cela garantit que la version est correctement suivie dans le référentiel Git.
Pour publier VShell en tant que package npm, j'ai explicitement défini les fichiers à inclure dans le package en utilisant le champ files dans package.json. Cela garantit que seuls les fichiers et répertoires nécessaires sont inclus dans le package publié.
Exemple :
Pour publier VShell sur npm :
Cela a rendu VShell disponible pour les utilisateurs via npm.
GitHub Dependabot a signalé un problème de sécurité avec le cross-spawn de dépendance transitive. Comme je ne l'ai pas installé directement, j'ai utilisé :
npm ls cross-spawn
pour identifier quel paquet en dépendait. J'ai découvert qu'eslint était la source et j'ai résolu le problème en mettant à jour eslint vers la dernière version.
De plus, j'ai mis à jour le README.md pour fournir des instructions d'installation claires aux utilisateurs de npm. J'ai également amélioré le fichier CONTRIBUTING.md pour guider les contributeurs dans la configuration et l'exécution de VShell localement.
Pour améliorer la précision, j'ai intégré les commentaires du professeur David Humphrey, élargissant et clarifiant la documentation du système GROQ.
Pour rationaliser le processus de publication, j'ai ajouté une tâche à mon flux de travail GitHub Actions pour automatiser la publication npm chaque fois qu'une nouvelle balise est poussée.
Ajout du flux de travail :
git tag -a v1.0.0 -m "Release version 1.0.0" git push origin --tags
Principales caractéristiques :
Déclencheur conditionnel : La tâche de publication est déclenchée uniquement lorsqu'une balise (v*.*.*) est poussée.
Authentification npm : Utilisation d'un NPM_AUTH_TOKEN sécurisé stocké dans GitHub Secrets. Vous pouvez créer ce jeton en accédant à votre compte npm et en choisissant la section Jeton d'accès.
GitHub Release : génère automatiquement une version à l'aide de softprops/action-gh-release.
En suivant ces étapes, j'ai réussi à automatiser la publication de VShell sur npm. Les utilisateurs peuvent désormais installer et utiliser l'outil sans effort via :
npm install -g vshell
Ce processus rationalisé, associé à une gestion des versions, des dépendances et des mises à jour de la documentation appropriées, garantit une version professionnelle et conviviale de VShell.
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!