Estoy creando mi primer componente Bower. Después de ejecutar bower initel script, me pregunta '¿qué tipos de módulos expone este paquete?' con estas opciones:
- amd
- es6
- globales
- nodo
¿Cuál es la diferencia entre estas opciones?
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 moduleTypepropiedad en el bower.jsonarchivo del paquete.
Consulte https://github.com/bower/bower/pull/934 para obtener la solicitud de extracción original.
Algunos puntos adicionales, para responder comentarios:
moduleTypepropiedad, lo que significa que las personas están técnicamente autorizadas a usar el valor que deseen, incluso angularjssi 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 moduleTypevalor 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:
es6comomoduleTypeDescargo de responsabilidad: no tengo experiencia en la vida real de la creación de módulos angularjs.
angularjsa sí mismo, podría usarglobals, sí, pero lea mi actualización. Espero que ayude.Inicial
Estoy usando
bower initpor 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 .
Otras actualizaciones
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.jsLo cambié porque prefiero usar require también dentro del navegador, así que ahora estoy usando
browserify -r ./index.js:dflow -o dist/dflow.jsy 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.browserifyatributo que uso en mi paquete.json"browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"fuente
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:
Enlace relevante: https://github.com/bower/spec/blob/master/json.md#moduletype
fuente