Publication d'un Package

Dans le but de partager votre package avec d’autres développeurs du monde entier via Yarn, vous aurez besoin au préalable de le publier.

Lorsque vous publiez un package avec Yarn, il va dans le registre npm qui est utilisé pour distribuer des packages de manière globale.

Connexion à npm

Si vous ne l’avez pas encore fait, vous devrez d’abord créer un compte npm. Une fois ceci fait, vous pourrez configurer votre nom d’utilisateur et votre email dans Yarn.

yarn link

Ceci va vous demander votre nom d’utilisateur et votre email. Cependant cela ne vous demandera pas votre mot de passe. Yarn ne stocke pas les mots de passe ou même des sessions. C’est lorsque vous allez publier ou modifier quelque chose sur npm que vous aurez besoin de saisir votre mot de passe.

Publication de votre package

Une fois que vous avez écrit tout le code de votre package, que vous l’avez testé et que vous êtes prêt à le publier, vous pouvez vous lancer :

yarn publish

D’abord, il vous sera demandé de saisir la nouvelle version à publier :

[1/4] Bumping version...
info Current version: 1.0.0
question New version: _____

Ensuite vous devrez entrer votre mot de passe npm :

[2/4] Logging in...
info npm username: votre-nom-utilisateur-npm
info npm username: votre_email@exemple.com
question npm password: ____________

Enfin, Yarn va publier votre package et détruire votre jeton de session.

[3/4] Publishing...
success Published.
[4/4] Revoking token...
success Revoked login token.
✨  Done in 10.53s.

Vous devez suivre ce processus à chaque fois que vous souhaitez publier une nouvelle version de votre package.

Accéder à votre package

Votre package devrait maintenant être disponible à https://www.npmjs.com/package/mon-nouveau-projet et vous devriez pouvoir l’installer :

yarn add mon-nouveau-projet

Vous pouvez également le voir dans le registre npm :

yarn info mon-nouveau-projet
{ name: 'mon-nouveau-projet',
  description: 'Description de Mon Nouveau Projet.',
  'dist-tags': { latest: '1.0.0' },
  versions: [ '1.0.0' ],
  maintainers: [ { name: 'Votre Nom', email: 'votre_email@exemple.com' } ],
  time:
  { modified: '2017-10-12T00:22:35+00:00',
    created: '2017-10-12T00:22:35+00:00',
    '1.0.0': '2017-10-12T00:22:35+00:00' },
  homepage: 'https://site-de-mon-nouveau-projet.com/',
  keywords: [ 'cool', 'truc', 'utile' ],
  repository:
   { url: 'https://example.com/votre-nom/mon-nouveau-projet',
     type: 'git' },
  contributors:
   [ { name: 'Votre Ami',
       email: 'son-email@exemple.com',
       url: 'http://son-site-web.com' },
     { name: 'Un Autre Ami',
       email: 'autre-email@exemple.com',
       url: 'https://autre-site-web.org' } ],
  author: { name: 'Votre Nom', email: 'votre_email@exemple.com' },
  bugs: { url: 'https://github.com/vous/mon-nouveau-projet/issues' },
  license: 'MIT',
  readmeFilename: 'README.md',
  version: '1.0.0',
  main: 'index.js',
  files: [ 'index.js', 'lib/*.js', 'bin/*.js' ],
  bin: { 'mon-nouveau-projet-cli': 'bin/mon-nouveau-projet-cli.js' },
  dist:
   { shasum: '908bc9a06fa4421e96ceda243c1ee1789b0dc763',
     tarball: 'https://registry.npmjs.org/mon-nouveau-projet/-/mon-nouveau-projet-1.0.0.tgz' },
  directories: {} }