Risposte:
Se non lo sai, è molto probabile che i globi siano la risposta giusta per te.
Ad ogni modo, devi capire:
Questa funzione è stata introdotta di recente in Bower e non è ancora documentata (AFAIK). Descrive essenzialmente il moduleType
, che indica per quale tecnologia del modulo il pacchetto deve essere consumato (vedi sopra).
In questo momento, non ha alcun effetto a parte l'impostazione della moduleType
proprietà inbower.json
file del pacchetto.
Vedi https://github.com/bower/bower/pull/934 per la richiesta pull originale.
Alcuni punti aggiuntivi, per rispondere ai commenti:
moduleType
proprietà, il che significa che le persone sono tecnicamente autorizzate a utilizzare tutto il valore che desiderano, inclusoangularjs
se si sentono inclini a farlonon-interoperable/proprietary moduleTypes
(pensa compositore, angolare, ecc.) - il che è facilmente comprensibile, ma ancora una volta, nulla impedisce davvero alle persone di usare ilmoduleType
valore che desideranoyui moduleType
, quindi, ci sono "eccezioni" da fare, supponendo che facciano parte di un piano concordatoCosa farei se dovessi creare un pacchetto per un gestore di pacchetti non elencato e pubblicarlo su Bower?
Vorrei creare un modulo es6 e usare / patch es6-transpiler per produrre il formato del pacchetto di cui ho bisogno. Quindi vorrei / e:
es6
come amoduleType
Disclaimer: non ho esperienza di vita reale nella creazione di moduli angularjs.
angularjs
a se stesso, potrei usare globals
, sì, ma leggi il mio aggiornamento. Spero che aiuti.
Sto usando anche bower init
per la prima volta.
Le opzioni dovrebbero fare riferimento ai diversi modi per modulare un codice JavaScript:
define
, come requirejs.require
.Nel mio caso ho scritto un dflow del modulo Node.js ma sto usando browserify per creare un dist / dflow.js file che esporta un dflow globale var: quindi ho selezionato i globali .
Il comando che ho usato per browserify dflow come a oggetto globale della finestra era
browserify -s dflow -e index.js -o dist/dflow.js
L'ho cambiato perché preferisco usare richiedi anche all'interno del browser, quindi ora sto usando
browserify -r ./index.js:dflow -o dist/dflow.js
e così ho cambiato bower.moduleType in nodo nel mio file bower.json .
La motivazione principale è che se il nome del mio modulo ha un trattino, ad esempio la vista del flusso del mio progetto , devo camelizzare il nome globale in flowView .
Questo nuovo approccio ha altri due vantaggi:
${npm_package_name}
variabile e scrivere una volta lo script che utilizzo per navigare.Questo è un altro argomento, ma vale davvero la pena considerare quanto sia utile quest'ultimo vantaggio: fammi condividere l' npm.scripts.browserify
attributo che uso nel mio package.json
"browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"
define(function(require, exports, module) { "use strict"; module.exports = { Collection: require("./collection"), View: require('./view') }; });
Solo per riferimento, questo è esattamente ciò che specifica Bower per quanto riguarda i tipi di modulo:
Il tipo di modulo definito nel
main
file JavaScript. Può essere una o una matrice delle seguenti stringhe:
globals
: Modulo JavaScript che si aggiunge allo spazio dei nomi globale, usandowindow.namespace
othis.namespace
sintassiamd
: Modulo JavaScript compatibile con AMD, come RequireJS , utilizzando ladefine()
sintassinode
: Modulo JavaScript compatibile con nodo e CommonJS mediante lamodule.exports
sintassies6
: Modulo JavaScript compatibile con i moduli ECMAScript 6 , utilizzandoexport
eimport
sintassiyui
: Modulo JavaScript compatibile con i moduli YUI , usando laYUI.add()
sintassi
Link pertinente: https://github.com/bower/spec/blob/master/json.md#moduletype