Publier sur NPM

Vous développez un nouveau composant Astro ? Publiez-le sur NPM !

Publier un composant Astro est une excellente façon de rĂ©utiliser votre travail existant dans vos projets et de le partager avec la communautĂ© d’Astro Ă  grande Ă©chelle. Les composants Astro peuvent ĂȘtre publiĂ©s directement et installĂ©s depuis NPM, comme tout autre Paquet JavaScript.

Vous cherchez de l’inspiration ? Regardez quelques-uns de nos thĂšmes et composants prĂ©fĂ©rĂ©s issus la communautĂ© d’Astro. Vous pouvez aussi rechercher sur NPM pour voir l’ensemble du catalogue public.

Pour commencer à développer rapidement votre composant, nous avons un modÚle déjà configuré pour vous.

Terminal window
# Initialise le modÚle de composant Astro dans un nouveau répertoire
npm create astro@latest my-new-component-directory -- --template component
# yarn
yarn create astro my-new-component-directory --template component
# pnpm
pnpm create astro@latest my-new-component-directory -- --template component

Avant de se lancer, avoir une comprĂ©hension basique des sujets suivants vous sera d’une grande aide :

Pour crĂ©er un nouveau Paquet, nous vous recommandons fortement de configurer votre environnement de dĂ©veloppement pour utiliser les “Workspaces” (ou espaces de travail) dans votre projet. Cela vous permettra de dĂ©velopper votre composant avec une copie fonctionnelle d’Astro.

  • Directorymy-new-component-directory/
    • Directorydemo/
      • 
 pour les tests et les dĂ©monstrations
    • package.json
    • Directorypackages/
      • Directorymy-component/
        • index.js
        • package.json
        • 
 fichiers additionnels utilisĂ©s par le Paquet

Dans cet exemple nommé my-project, nous créons un projet avec un seul Paquet, nommé my-component, et un répertoire demo/ pour les tests et les démonstrations du composant.

Tout cela est configuré dans le fichier package.json situé dans le répertoire racine du projet.

{
"name": "my-project",
"workspaces": ["demo", "packages/*"]
}

Dans cet exemple, plusieurs Paquets peuvent ĂȘtre dĂ©veloppĂ©s ensemble depuis le rĂ©pertoire packages. Ces Paquets peuvent Ă©galement ĂȘtre rĂ©fĂ©rencĂ©s depuis demo, oĂč vous pouvez installer une copie fonctionnelle d’Astro.

Terminal window
npm init astro demo --template minimal
# yarn
yarn create astro my-new-component-directory --template minimal
# pnpm
pnpm create astro@latest my-new-component-directory -- --template minimal

Il y a deux fichiers initiaux qui constituent votre Paquet individuel : package.json et index.js.

Le fichier package.json dans le répertoire du Paquet contient toutes les informations relatives à votre projet, y compris sa description, ses dépendances, et toutes autres métadonnées du Paquet.

{
"name": "my-component",
"description": "Description du composant",
"version": "1.0.0",
"homepage": "https://github.com/owner/project#readme",
"type": "module",
"exports": {
".": "./index.js",
"./astro": "./MyAstroComponent.astro",
"./react": "./MyReactComponent.jsx"
},
"files": ["index.js", "MyAstroComponent.astro", "MyReactComponent.jsx"],
"keywords": ["astro","astro-component", "...", "..."]
}

Une courte description de votre composant pour aider les autres à comprendre ce qu’il fait.

{
"description": "Un Generateur d'éléments Astro"
}

Le format de module utilisé par Node.js et Astro pour interpréter vos fichiers index.js.

{
"type": "module"
}

Nous recommandons d’utiliser "type": "module" pour que votre fichier index.js puisse ĂȘtre utilisĂ© comme point d’entrĂ©e avec import et export.

L’url de la page d’accueil de votre projet.

{
"homepage": "https://github.com/owner/project#readme"
}

C’est une bonne façon de diriger les utilisateurs vers une dĂ©monstration, une documentation ou la page d’accueil de votre projet.

Les points d’entrĂ©e d’un Paquet lorsqu’il est importĂ© par nom.

{
"exports": {
".": "./index.js",
"./astro": "./MyAstroComponent.astro",
"./react": "./MyReactComponent.jsx"
}
}

Dans cet exemple, l’importation de my-component utilise index.js, tandis que l’importation de my-component/astro ou my-component/react utilise MyAstroComponent.astro ou MyReactComponent.jsx, respectivement.

C’est une optimisation optionnelle pour exclure les fichiers inutiles du paquet fourni aux utilisateurs via NPM. Notez que seuls les fichiers listĂ©s ici seront inclus dans votre Paquet, donc si vous ajoutez ou modifiez des fichiers nĂ©cessaires Ă  votre Paquet pour qu’il fonctionne, vous devez mettre Ă  jour cette liste en consĂ©quence.

{
"files": ["index.js", "MyAstroComponent.astro", "MyReactComponent.jsx"]
}

Une liste de mots-clés pertinents à votre composant qui sont utilisés pour aider les autres à trouver votre composant sur NPM et dans tous les autres catalogues de recherche.

Nous recommandons d’ajouter astro-component comme mot-clĂ© spĂ©cial pour maximiser sa dĂ©couverte dans l’écosystĂšme Astro.

{
"keywords": ["astro-component", "... etc", "... etc"]
}

Les mots-clĂ©s sont Ă©galement utilisĂ©s par notre bibliothĂšque d’intĂ©gration! Voir ci-dessous pour une liste complĂšte des mots-clĂ©s que nous utilisons dans NPM.


Le point d’entrĂ©e principal du Paquet utilisĂ© lorsque votre Paquet est importĂ©.

export { default as MyAstroComponent } from './MyAstroComponent.astro';
export { default as MyReactComponent } from './MyReactComponent.jsx';

Cela vous permet de mettre plusieurs composants ensemble dans une seule interface.

Exemple : Utilisation des importations nommées

Section titled Exemple : Utilisation des importations nommées
---
import { MyAstroComponent } from 'my-component';
import { MyReactComponent } from 'my-component';
---
<MyAstroComponent />
<MyReactComponent />

Exemple : Utilisation des importations de Namespace (Espace de Noms)

Section titled Exemple : Utilisation des importations de Namespace (Espace de Noms)
---
import * as Example from 'example-astro-component';
---
<Example.MyAstroComponent />
<Example.MyReactComponent />

Exemple : Utilisation des importations individuelles

Section titled Exemple : Utilisation des importations individuelles
---
import MyAstroComponent from 'example-astro-component/astro';
import MyReactComponent from 'example-astro-component/react';
---
<MyAstroComponent />
<MyReactComponent />

DĂ©veloppement de votre Paquet

Section titled DĂ©veloppement de votre Paquet

Astro n’a pas de mode Paquet pour le dĂ©veloppement. Au lieu de cela, vous devriez utiliser un projet de dĂ©monstration pour dĂ©velopper et tester votre Paquet dans votre projet. Cela peut ĂȘtre un site web privĂ© uniquement utilisĂ© pour le dĂ©veloppement, ou un site de dĂ©monstration/documentation pour votre Paquet.

Si vous voulez extraire des composants d’un projet existant, vous pouvez aussi continuer Ă  utiliser ce projet pour dĂ©velopper vos composants maintenant extraits.

Astro ne livre actuellement pas de suites de tests. C’est quelque chose que nous aimerions aborder. (Si vous ĂȘtes intĂ©ressé·e·s pour aider, rejoignez nous dans notre Discord !)

En attendant, nos recommandations actuelles pour les tests sont :

  1. Ajoutez un répertoire de test nommé fixtures à votre répertoire demo/src/pages.
  2. Ajoutez une nouvelle page pour chaque test que vous souhaitez exécuter.
  3. Chaque page devrait inclure un usage de composant différent que vous souhaitez tester.
  4. Exécutez astro build pour construire vos fixtures, puis comparez le résultat de dist/__fixtures__/ à ce que vous attendiez.
  • Directorymy-project/demo/src/pages/__fixtures__/
    • test-name-01.astro
    • test-name-02.astro
    • test-name-03.astro

Une fois que votre Paquet est prĂȘt, vous pouvez le publier sur NPM !

Pour publier un Paquet sur NPM, utilisez la commande npm publish. Si cela Ă©choue, assurez-vous que vous vous ĂȘtes connectĂ© via npm login et que votre package.json est correct. Si cela rĂ©ussit, vous avez fini !

Notez que il n’y avait pas de Ă©tape build pour les Paquets Astro. Tous les types de fichiers que Astro supporte peuvent ĂȘtre publiĂ©s directement sans Ă©tape de construction, car nous savons que Astro supporte dĂ©jĂ  ces types de fichiers. Cela inclut tous les fichiers avec des extensions comme .astro, .ts, .jsx, et .css.

Si vous avez besoin d’un autre type de fichier qui n’est pas supportĂ© nativement par Astro, vous pouvez ajouter une Ă©tape de Build Ă  votre Paquet. Nous vous laissons cet exercice avancĂ©.

BibliothĂšque d’intĂ©grations

Section titled BibliothĂšque d’intĂ©grations

Partagez votre travail en ajoutant votre intĂ©gration Ă  notre bibliothĂšque d’intĂ©grations !

Données du fichier package.json

Section titled Données du fichier package.json

La bibliothÚque est mise à jour tous les jours automatiquement; chaque Paquet publié sur NPM avec le mot-clé astro-component est extrait.

La bibliothĂšque d’intĂ©gration lit les donnĂ©es name, description, repository, et homepage de votre package.json.

Les avatars sont une bonne façon de mettre en Ă©vidence votre marque dans la bibliothĂšque ! Une fois que votre Paquet est publiĂ©, vous pouvez crĂ©er une Issue GitHub avec votre avatar attachĂ© et nous l’ajouterons Ă  la liste.

En plus du mot-clĂ© obligatoire astro-component ou withastro, des mots-clĂ©s spĂ©ciaux sont Ă©galement utilisĂ©s pour organiser automatiquement les Paquets. Inclure n’importe quel mots-clĂ©s ci-dessous ajoutera votre intĂ©gration Ă  notre bibliothĂšque d’intĂ©grations.

CollectionMots-clés
Accessibilitéa11y, accessibility
Adapteursastro-adapter
Analyse de donnéesanalytics
CSS + UIcss, ui, icon, icons, renderer
Frameworksrenderer
Performance + SEOperformance, perf, seo, optimization

Nous vous encourageons à partager votre travail, nous apprécions vraiment de voir ce que nos talentueux Astronautes créent. Partagez ce que vous créez avec nous dans notre Discord ou mentionnez @astrodotbuild dans un Tweet !