Respuestas:
Si no lo sabe, es muy probable que los globales sean la respuesta correcta para usted.
De cualquier manera, debes entender:
Esta característica se introdujo recientemente en Bower y aún no está documentada (AFAIK). Básicamente, describe el moduleType
, que establece para qué tecnología de módulo se debe consumir el paquete (ver arriba).
En este momento, no tiene ningún efecto aparte de establecer la moduleType
propiedad en el bower.json
archivo del paquete.
Consulte https://github.com/bower/bower/pull/934 para obtener la solicitud de extracción original.
Algunos puntos adicionales, para responder comentarios:
moduleType
propiedad, lo que significa que las personas están técnicamente autorizadas a usar el valor que deseen, incluso angularjs
si se sienten inclinadas a hacerlonon-interoperable/proprietary moduleTypes
(piense compositor, angular, etc.), lo cual es fácilmente comprensible, pero una vez más, nada impide que las personas usen el moduleType
valor que desean.yui moduleType
, por lo tanto, hay que hacer "excepciones", suponiendo que sean parte de un plan concertado¿Qué haría si tuviera que crear un paquete para un administrador de paquetes no incluido en la lista y publicarlo en Bower?
Autorizaría un módulo es6 y usaría / patch es6-transpiler para generar el formato de paquete que necesito. Entonces yo / y:
es6
comomoduleType
Descargo de responsabilidad: no tengo experiencia en la vida real de la creación de módulos angularjs.
angularjs
a sí mismo, podría usar globals
, sí, pero lea mi actualización. Espero que ayude.
Estoy usando bower init
por primera vez también.
Las opciones deben referirse a las diferentes formas de modularizar algún código JavaScript:
define
, como requirejs.require
.En mi caso, escribí un módulo dflow Node.js pero estoy usando browserify para crear un archivo dist / dflow.js que exporta un dflow global var: así que seleccioné globals .
El comando que utilicé para buscar el flujo de datos como un objeto global de ventana era
browserify -s dflow -e index.js -o dist/dflow.js
Lo cambié porque prefiero usar require también dentro del navegador, así que ahora estoy usando
browserify -r ./index.js:dflow -o dist/dflow.js
y entonces cambié bower.moduleType a nodo en mi archivo bower.json .
La principal motivación fue que si el nombre de mi módulo tiene un guión, por ejemplo , la vista de flujo de mi proyecto , necesito camelizar el nombre global en flowView .
Este nuevo enfoque tiene otros dos beneficios:
${npm_package_name}
variable y escribir una vez que utilizo el script para navegador.Este es otro tema, pero realmente vale la pena que consideres cómo es útil el último beneficio: déjame compartir el npm.scripts.browserify
atributo que uso en mi paquete.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 como referencia, esto es precisamente lo que Bower especifica con respecto a los tipos de módulos:
El tipo de módulo definido en el
main
archivo JavaScript. Puede ser una o una matriz de las siguientes cadenas:
globals
: Módulo de JavaScript que se agrega al espacio de nombres global, usandowindow.namespace
othis.namespace
sintaxisamd
: Módulo de JavaScript compatible con AMD, como RequireJS , utilizandodefine()
sintaxisnode
: Módulo de JavaScript compatible con el nodo y CommonJS utilizandomodule.exports
sintaxises6
: Módulo JavaScript compatible con módulos ECMAScript 6 , usoexport
yimport
sintaxisyui
: Módulo JavaScript compatible con módulos YUI , utilizandoYUI.add()
sintaxis
Enlace relevante: https://github.com/bower/spec/blob/master/json.md#moduletype