"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Créez et publiez une bibliothèque npm, avec TypeScript et Semantic Versioning

Créez et publiez une bibliothèque npm, avec TypeScript et Semantic Versioning

Publié le 2024-11-07
Parcourir:612

? Écrire et publier un code minimal

Pour publier une bibliothèque sur npm, vous aurez besoin de :

  1. Un compte npm ; vous pouvez vous inscrire ici.

  2. Votre code en tant que projet ; c'est-à-dire que vous avez un package.json dans votre répertoire de code, dont le nom et la version sont spécifiés. Notez que vous pouvez générer ce fichier via :

npm init
  1. Un index.js dans votre projet. N'oubliez pas que vous devez exporter votre fonction pour permettre aux utilisateurs de l'importer.

Remarque : Si votre script n'est pas nommé index.js et placé à la racine du projet, vous devez spécifier la propriété "main" dans package.json. Voir cette réponse pour plus d'informations.

Et si le nom a été pris sur npm, vous pouvez ajouter un préfixe comme @name-or-org/your-lib; c'est ce que font la plupart des autres bibliothèques de nos jours.

Vous pouvez consulter mon exemple minimal pour référence, mais je pense que vous pouvez écrire quelque chose de plus cool que cela.

Create and publish an npm library, with TypeScript and Semantic Versioning

Enfin, publiez-le avec la commande CLI :

npm publish

Create and publish an npm library, with TypeScript and Semantic Versioning

Remarque aux personnes qui définissent le nom du package avec un préfixe : Il DOIT être votre nom d'utilisateur npm ou le nom de votre organisation que vous avez enregistré sur npm. Par exemple, je peux utiliser @remi_guan comme préfixe mais pas les autres.

De plus, vous devez exécuter npmpublish --access public, car npm pense que vous souhaitez publier un package privé, qui est une fonctionnalité payante.

Cette sortie signifie que l'opération a réussi. Toutefois, si vous rencontrez des problèmes, vous pouvez effectuer une recherche sur Google pour résoudre le problème. Et voici comment vous pouvez utiliser votre propre bibliothèque :

Create and publish an npm library, with TypeScript and Semantic Versioning

Si vous avez suivi ce guide, essayez plutôt votre propre bibliothèque.

J'ai également trouvé que @backendbro propose un guide beaucoup plus détaillé que celui-ci, si vous souhaitez en savoir plus.

Après avoir publié votre code, lorsque vous souhaitez mettre à jour le code, vous pouvez réexécuter npm submit. Cependant, avant la publication, vous devez mettre à jour la propriété de version de package.json et vous conformer au contrôle de version sémantique.

Je vous suggère de l'essayer ! Pouvez-vous publier la version 1.0.1 ou 1.1.0 de votre bibliothèque et l'utiliser dans un autre projet comme ce que je viens de faire ? Pouvez-vous savoir comment mettre à jour la version de votre bibliothèque npm ?

? Utiliser TypeScript

Cette bibliothèque que nous avons créée jusqu'à présent n'est pas moderne, elle manque de déclaration de type afin que les personnes qui utilisent votre bibliothèque ne puissent pas être mises en évidence lors de la saisie. De plus, les gens utilisent couramment TypeScript avec la syntaxe ECMAScript. Pour en savoir plus sur la différence : Modules Node.js : CommonJS vs ECMAScript par Saisathish

Mais je vais ignorer la configuration détaillée de TypeScript dans cet article. Il existe de nombreux bons tutoriels pour apprendre à initialiser un projet TypeScript, comme « Comment développer une bibliothèque Typescript » d'inapeace0.

Encore plus loin, vous pouvez utiliser un référentiel TypeScript de modèles comme alexjoverm/typescript-library-starter qui a déjà intégré de nombreux outils modernes, meilleures pratiques, etc.

Je vais juste mentionner quelques notes importantes si vous publiez une bibliothèque TypeScript :

  1. Construisez avant de publier. Si vous devez le publier publiquement, les personnes disposant de l'environnement Node.js le plus courant ne peuvent exécuter que des fichiers .js. Vous devez donc compiler votre code avec tsc, rollup (ou vite, qui utilise rollup) ou webpack ; tout le monde va bien.

Vous devez pointer correctement vers le fichier compilé en utilisant les propriétés de module, main ou d'entrée dans package.json. Utiliser un modèle et les apprendre un par un est un bon choix. Encore une fois, alexjoverm/typescript-library-starter les a bien spécifiés.

  1. Inclure un fichier .d.ts. Pour la même raison, l'utilisateur doit également accéder aux signatures de type.

Mais si vous êtes sûr que votre bibliothèque fonctionnera sur Deno, Bun ou ts-node, vous pouvez ignorer mes directives ci-dessus car elles prennent en charge l'exécution native du code TypeScript.

Veuillez essayer de suivre un guide pour créer une bibliothèque TypeScript et la publier sur npm. C'est toujours aussi simple, comme le premier exemple. Vous devriez le tester avec un autre projet en utilisant la syntaxe d'importation, et vous pourrez voir des astuces de type avec un IDE.

Avec TypeScript, je peux écrire ma bibliothèque dans cette syntaxe :

Create and publish an npm library, with TypeScript and Semantic Versioning

Et après la publication, je peux l'installer et l'importer, et voir les astuces de type grâce à TypeScript.

Create and publish an npm library, with TypeScript and Semantic Versioning

✨ Versionnement sémantique

Il existe un problème courant mais légèrement avancé qui attend d'être résolu : chaque fois que nous mettons à jour notre package, nous devons modifier le code de version.

C'est ennuyeux, surtout si vous mettez fréquemment à jour votre code.

Cependant, il existe des outils pour vous aider.

  • libération sémantique : entièrement automatique ; vous pouvez l'intégrer dans GitHub CI pour mettre à jour automatiquement le code de version et publier sur npm chaque fois que vous mettez à jour votre code sur GitHub.
  • release-it : vous aide également à augmenter la version, mais c'est simple à utiliser (pas besoin de connaissances en CI) ; en attendant, vous ne le configurez pas de manière entièrement automatisée.

Create and publish an npm library, with TypeScript and Semantic Versioning

J'ai utilisé ChatGPT pour générer ce résumé comparant les deux outils. Pour les nouveaux codeurs, je vous suggère d'essayer de le publier, mais la version sémantique est également pratique si vous savez comment l'intégrer à CI.

Dans cet article, je vais vous montrer comment utiliser release-it, eh bien, après avoir modifié le projet, exécutez simplement ceci dans votre projet :

npx release-it

Et choisissez s'il s'agit d'un changement mineur ou d'un changement majeur, alors vous avez terminé !

Create and publish an npm library, with TypeScript and Semantic Versioning


Résumé

Alors voilà ! Nous avons parcouru la publication d'une simple bibliothèque npm, sa mise à jour et même l'utilisation de TypeScript pour la rendre plus moderne et plus robuste. N'oubliez pas de :

  • Exportez vos fonctions correctement pour que d'autres puissent les utiliser.
  • Mettez à jour vos numéros de version suite au versioning sémantique.
  • Envisagez d'utiliser TypeScript pour une meilleure sécurité des types et une meilleure expérience de développement.
  • Automatisez vos versions avec des outils comme release-it ou semantic-release pour gagner du temps.

Essayez-le ! Publiez votre propre bibliothèque, mettez-la à jour et découvrez ce que cela fait de contribuer à l'écosystème npm. Bon codage !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/remi-guan/create-and-publish-an-npm-library-with-typescript-and-semantic-versioning-9l?1 En cas de violation, veuillez contacter study_golang@163 .comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3