Aller au contenu principal

Introduction

Prérequis

Ce projet est un monorepo, il utilise lerna pour gérer les dépendances entre les modules.

Les modules développés se trouvent dans le dossier packages.

Installation

Premièrement, il faut installer les dépendances :

reactic
$ npm install

Afin de pouvoir développer les modules, et les utiliser dans une application locale, il faut lier les librairies en développement :

reactic
$ sudo npm run link:all

Cela va permettre de créer un lien symbolique entre le dossier courant et le dossier global des modules (/usr/local/lib/node_modules)

Développement

Afin d'utiliser l'un des modules dans une application locale, il faut maintenant lier le module.

Premièrement, il faut installer le projet :

$ npm install

Il faut ensuite lier le ou les modules nécessaires :

$ npm link @creatic/reactic-utils
danger

Cette commande doit être effectuée sur une version de npm < 7. Ceci est dû à un bug sur npm link depuis cette version : https://github.com/npm/cli/issues/2339

attention

Cette commande crée des node_modules dans les sous-dossiers du monorepo (app-1, packages, etc.). Il faut les supprimer.

$ reactic clean:submodules

Vous pouvez maintenant utiliser le module dans votre application locale.

danger

Lorsque vous développez un module, veillez à ne pas faire de dépendances circulaires. Vérifiez bien les import et les export de vos modules.

Création d'un module

Il faut créer un dossier dans le dossier packages, respectant la structure suivante :

packages
└── my-module
├── README.md
├── package.json
├── src
│ └── index.ts
└── tsconfig.json
info

Le fichier index.ts doit contenir des exports, correspondant à ce qui doit être exporté par le module.

Si c'est un module typescript, il faut ajouter dans le fichier racine tsconfig.json, une reference au module:

{
"references": [
{
"path": "./packages/my-module"
}
]
}

Publication

danger

Les linters doivent être passés avant de publier, le cas échéant, la publication ne doit pas être effectuée.

Afin de publier, il faut tout d'abord monter la version de tous les paquets :

reactic
$ npm run version
info

Avant la publication, il faut commiter les montés de versions des paquets.

Ensuite, il faut builder les différents modules :

reactic
$ npm run build:all

Puis, publier les paquets :

reactic
$ npm run publish
danger

Il faut obligatoirement builder les modules avant de les publier. Le script 'npm run publish' effectue un build des modules avant de les publier.

Troubleshooting

Lors de la construction des modules, j'ai une erreur de type Cannot find module 'react-router-dom' or its corresponding type declarations.

Il faut supprimer tous les node_modules, lancer la commande npm install, puis relancer la commande de build.