Cli: [FEATURE] standard de configuration pour tous les packages

Créé le 15 mai 2020  ·  2Commentaires  ·  Source: npm/cli

Je ne sais pas si cela est faisable ou si cela appartient au référentiel Node.js.

Quoi / Pourquoi

Il existe souvent des cas où certaines dépendances nécessitent des configurations de build spécifiques pour fonctionner correctement dans un environnement global (par exemple).

Cette configuration peut être une configuration Babel, une configuration Webpack ou quelque chose de personnalisé juste pour ce package.

Dans l'état actuel des choses, il n'existe aucun moyen normalisé de configurer les packages.

Certaines personnes utilisent une convention où elles placent un champ dans package.json nommé d'après le package, et un package peut le lire. Mais cela ne semble pas assez standard.

Lorsque

Lorsqu'un package a besoin d'une configuration personnalisée pour l'exécution ou le temps de construction.

Comment

Il arrive parfois que JavaScript ait besoin d'étapes de construction pour certains cas. Cette fonctionnalité de configuration aurait une option facultative « construire les dépendances » qui peut être transmise à n'importe quel package (qu'ils construisent des modules natifs ou transpilent simplement JavaScript vers une forme inférieure).

Selon la configuration, un paquet peut avoir besoin de certaines dépendances dont il n'aurait pas besoin autrement (par exemple des dépendances de construction).

Ainsi, le système de packages serait suffisamment intelligent, en ce sens que si un utilisateur a une certaine configuration de package, il peut déterminer les dépendances supplémentaires à installer.

Peut-être que cette fonctionnalité doit simplement être étendue du système de module natif existant au système JavaScript global (d'une manière facile à utiliser, les modules natifs sont délicats).

Cela pourrait également être très utile pour des choses comme les dépendances facultatives. Il serait facile, avec config, de spécifier qu'une bibliothèque utilise (par exemple) three au lieu de babylonjs . Cela entraînerait l'installation de la dépendance appropriée. C'est similaire aux dépendances entre pairs, mais plus facile, et un package donné qui dépend de deps facultatifs aurait un moyen standard d'accéder à l'API de configuration de manière fiable pour déterminer si certaines conditions sont spécifiées (c'est actuellement délicat, et toute traversée de cystom de node_modules est non- standard dans ces cas).

Comportement actuel

  • n / A

Comportement prévisible

  • couvert ci-dessus à un niveau élevé

Autre exemple, parfois les consommateurs de packages ont besoin de consommer la source du package au lieu de la sortie compilée habituelle afin de compiler le code de différentes manières (généralement pour moi, j'ai envie de le faire avec Webpack).

En général, il y a des problèmes avec ce genre de choses, que NPM ne fournit jusqu'à présent aucun moyen commun de gérer.

Qui

auteurs de packages et leurs utilisateurs

Les références

  • n / A
Enhancement

Commentaire le plus utile

Cette fonctionnalité sera incroyable car parfois les développeurs rencontrent beaucoup de difficultés pour résoudre ce genre de problèmes.

Tous les 2 commentaires

Cette fonctionnalité permettrait aux auteurs de packages, d'une manière standard, d'ajouter des fonctionnalités à leurs packages où ils peuvent dire "Oh, vous voulez que le CSS soit externe au lieu d'être intégré aux fichiers de package habituels, pas de problème, ajoutez simplement ce- et-une telle option dans la configuration de votre projet, alors ce package exclura automatiquement tout CSS de sa sortie", puis étant donné cette configuration standard, l'auteur du package peut utiliser Webpack, Babel ou tout autre outil souhaité pour obtenir le résultat.

En ce sens, tous les packages auraient un moyen standard de permettre aux utilisateurs de leur communiquer des options, où les options peuvent dicter d'autres ensembles de dépendances ou d'étapes de génération, quels que soient les fichiers source ou les outils de génération utilisés par le package.

Il y aurait une configuration du côté utilisateur, mais de telles options seraient mappées à la configuration du côté package qui dicterait les dépendances (et donc les outils de construction) à exécuter pendant l'installation, ou similaire.

Je pouvais voir la plupart des packages expédier la sortie du code source par défaut et certains utilisateurs la personnaliser.

Il arrive souvent que le meilleur moyen de compiler le code source TypeScript, avec des fonctionnalités complètes qui ne sont autrement pas limitées par le fichier de déclaration émis , consiste à envoyer le code source TypeScript brut et à le transpiler côté consommateur. Une convention de configuration aiderait grandement à cela.

TypeScript proclame que les consommateurs ne devraient jamais transpiler la source TypeScript, mais ils ont creusé un trou dans lequel cela peut être une nécessité en raison de ce problème lié. Je ne l'utilise que comme un exemple où une norme de configuration pourrait être d'une grande utilité.

Cette fonctionnalité sera incroyable car parfois les développeurs rencontrent beaucoup de difficultés pour résoudre ce genre de problèmes.

Cette page vous a été utile?
0 / 5 - 0 notes