LibMan (pour Library Manager) est un gestionnaire de librairies front-end disponible avec la version 15.8 de Visual Studio 2017
On avait déjà nuget, npm, yarn, bower alors on pourrait se demander quel est l’intérêt d’un énième gestionnaire de package ?
LibMan répond à un besoin bien spécifique : Comment faire quand on a un projet Web, et qu’on a besoin de bibliothèque front-end comme jquery ou bootstrap ? NPM et Yarn sont les plus répendu actuellement car ils sont très utiles quand on utilise webpack pour inclure plein de packages dans un bundle. Mais quand on juste besoin de jquery, écrire une config webpack ou un script de compilation c’est un peu compliqué pour pas grand-chose. Bower est maintenant déprécié. Nuget est un gestionnaire de package .NET, il contient également des bibliothèques javascript mais elles n’y sont pas toutes ou ne sont parfois pas à jours.
Le plus souvent ce qu’on fait c’est installer le package npm de jquery ou bootstrap pour ensuite le copier à la main les fichiers dans le répertoire de librairy js de mon projet. Mais ça ne nous permet pas de changer la version de la bibliothèque utilisée via le gestionnaire de package.
C’est pour répondre à ce besoin que Microsoft a introduit LibMan avec la version 15.8 de Visual Studio 2017. LibMan est un gestionnaire de bibliothèques coté client utilisant par défaut cdnjs comme source.
Pour utiliser LibMan depuis Visual Studio il suffit de faire un click droit sur un projet -> Add -> Client Side Library
Visual Studio affiche alors une fenêtre nous proposant de choisir une bibliothèque et sa version depuis une source.
On doit ensuite choisir le répertoire de destination dans lequel on veut que la bibliothèque soit copiée. On peut également choisir quels fichiers inclure, ce qui est utile pour jqueryui par exemple si on ne veut pas inclure tous les thèmes proposés.
Visual Studio va ensuite télécharger cette bibliothèque dans le répertoire indiqué, et pour les projets .NET Framework il va inclure les fichiers téléchargés dans le csproj. Les bibliothèques installées par LibMan sont donc automatiquement incluses dans les déploiements.
Ces fichiers ne comportent pas de numéros de version dans leur nom. On peut donc gérer les mises à jour de ces packages facilement.
L’utilisation de LibMan va générer un fichier libman.json à la racine du projet qui liste l’ensemble des bibliothèques installées (comme un package.json de npm ou le packages.config de nuget). Et il va automatiquement télécharger les bibliothèques référencées dans ce fichier. On peut donc choisir de ne pas inclure les répertoires d’installation de ces bibliothèques dans notre source contrôle et laisser LibMan récupérer automatiquement la bonne version de ces bibliothèques sur chaque poste de développeur ou serveur de build.
Exemple de libman.json :
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"provider": "cdnjs",
"library": "jquery@3.3.1",
"destination": "wwwroot/lib/jquery/"
}
]
}
Si on utilise Visual Code ou une vielle version de Visual Studio on n’a pas accès à l’interface graphique de LibMan, mais on peut quand même l’utiliser en lignes de commandes.
On peut installer le libman cli depuis le dotnet cli :
dotnet tool install -g Microsoft.Web.LibraryManager.Cli
Ce qui nous donne accès à la commande libman qui s’utilise comme on s’y attend :
Comme avec Visual Studio, lors de l’installation on peut choisir le répertoire de destination.
Installation de bootstrap par libman cli (la bibliothèque se nomme twitter-bootstrap sur cdnjs)
Libman propose cdnjs comme source par défaut, mais il est possible d’en utiliser d’autres.
Les autres sources possibles sont unpkg qui propose tous les packages de npm. Et la source filesystem qui permet d’utiliser un répertoire (local ou réseau) comme source de package.
On peut donc utiliser LibMan avec un répertoire partagé si on souhaite s’assurer que tous nos projets utilisent la même version de certaines bibliothèques.
On peut sélectionner la source d’installation avec libman cli en utilisant le paramètre –provider, ou depuis l’interface de Visual Studio, ou en le spécifiant dans le libman.json
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "\\\\SharedFolder\\lib\\jquery",
"provider": "filesystem",
"destination": "wwwroot/lib/jquery/"
},
{
"library": "bootstrap@4.1.3",
"provider": "unpkg",
"destination": "wwwroot/lib/bootstrap"
}
]
}
Comme on peut le voir ci-dessus, dans le cas de la source filesystem, le nom de package est le chemin d’accès au répertoire contenant les fichiers que l’on souhaite installer.
LibMan est un petit gestionnaire de packages, il ne va pas remplacer npm ou nugget, mais il s’avère bien pratique dans certains cas.
Commentaires :
Aucun commentaires pour le moment
Laissez un commentaire :