Je crée mon premier composant Bower. Après avoir exécuté bower init
, le script me demande "quels types de modules ce paquet expose-t-il?" avec ces options:
quelle est la différence entre ces options?
Si vous ne le savez pas, il est fort probable que globals soit la bonne solution pour vous.
De toute façon, vous devez comprendre:
Cette fonctionnalité a été introduite très récemment dans bower et n’a pas encore été documentée (autant que je sache). Il décrit essentiellement la moduleType
, qui indique pour quelle technologie de module le paquet est destiné à être consommé (voir ci-dessus).
Pour l'instant, cela n'a pas d'effet mis à part la définition de la propriété moduleType
dans le fichier bower.json
du paquet.
Voir https://github.com/bower/bower/pull/934 pour la demande d'extraction d'origine.
Quelques points supplémentaires, pour répondre aux commentaires:
moduleType
- ce qui signifie que les personnes sont techniquement autorisées à utiliser la valeur de leur choix, y compris angularjs
si elles sont enclines à le faire.non-interoperable/proprietary moduleTypes
(pense compositeur, angulaire, etc.) supplémentaire - ce qui est facilement compréhensible, mais encore une fois, rien n'empêche vraiment les gens d'utiliser le moduleType
valeur qu'ils veulentyui moduleType
, donc il y a des "exceptions" à faire, en supposant qu'elles soient partie d'un plan concertéQue ferais-je si je créais un package pour un gestionnaire de packages non répertorié et le publiais sur bower?
Je voudrais créer un module es6 et utiliser/patch es6-transpiler pour afficher le format de paquet dont j'ai besoin. Alors je voudrais soit/et:
es6
comme moduleType
Avertissement: Je n'ai pas d'expérience réelle dans la création de modules angularjs.
J'utilise aussi bower init
pour la première fois.
Les options doivent faire référence aux différentes manières de modulariser du code JavaScript:
define
, comme requirejs.require
.Dans mon cas, j'ai écrit un module Node.js dflow mais j'utilise browserify pour créer un fichier dist/dflow.js qui exporte un fichier global dflow var: donc j'ai sélectionné globals .
La commande que j'avais l'habitude d'explorer dflow en tant qu'objet global window était
browserify -s dflow -e index.js -o dist/dflow.js
J'ai changé parce que je préfère utiliser require également dans le navigateur, alors maintenant j'utilise
browserify -r ./index.js:dflow -o dist/dflow.js
et ainsi j'ai changé le bower.moduleType en noeud dans mon fichier bower.json.
La motivation principale était que si mon nom de module a un tiret, par exemple mon projet flow-view , je dois caméliser le nom global dans flowView =.
Cette nouvelle approche présente deux autres avantages:
${npm_package_name}
et écrire une fois le script que j'utilise pour naviguer.C’est un autre sujet, mais il vaut vraiment la peine de considérer l’utilité de ce dernier avantage: laissez-moi partager l’attribut npm.scripts.browserify
que j’utilise dans mon package.json
"browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"
Juste pour référence, c’est précisément ce que bower précise concernant les types de modules:
Type de module défini dans le fichier JavaScript
main
. Peut être une ou un tableau des chaînes suivantes:
globals
: module JavaScript qui ajoute à l'espace de nom global en utilisant la syntaxewindow.namespace
outhis.namespace
AMD
: module JavaScript compatible avec AMD, comme RequireJS , utilisant la syntaxedefine()
node
: module JavaScript compatible avec noeud et CommonJS utilisant la syntaxemodule.exports
es6
: module JavaScript compatible avec modules ECMAScript 6 , utilisant la syntaxeexport
etimport
yui
: module JavaScript compatible avec modules YUI , à l'aide de la syntaxeYUI.add()
Lien pertinent: https://github.com/bower/spec/blob/master/json.md#moduletype