Estoy creando mi primer componente Bower. Después de ejecutar bower init
el 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 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 usarglobals
, sí, pero lea mi actualización. Espero que ayude.Inicial
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 .
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.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"
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