Estou criando meu primeiro componente Bower. Depois de executar bower init
o script, pergunto-me 'que tipos de módulos este pacote expõe?' com estas opções:
- amd
- es6
- globais
- nó
qual é a diferença entre essas opções?
Se você não sabe, é bem provável que os globais sejam a resposta certa para você.
De qualquer forma, você precisa entender:
Esse recurso foi introduzido muito recentemente no caramanchão e ainda não está documentado (AFAIK). Descreve essencialmente o moduleType
, que indica para qual tecnologia de módulo o pacote deve ser consumido (veja acima).
No momento, ele não tem nenhum efeito além de definir a moduleType
propriedade no bower.json
arquivo do pacote.
Consulte https://github.com/bower/bower/pull/934 para obter a solicitação de recebimento original.
Alguns pontos adicionais, para responder aos comentários:
moduleType
propriedade - o que significa que as pessoas têm permissão técnica para usar o valor que desejarem, inclusive angularjs
se se sentirem inclinadas a fazê-lo.non-interoperable/proprietary moduleTypes
(pense em compositor, angular etc.) - o que é facilmente compreensível, mas, novamente, nada realmente impede as pessoas de usarem o moduleType
valor que desejamyui moduleType
, portanto, existem "exceções" a serem feitas, supondo que elas façam parte de um plano concertadoO que eu faria se fosse o autor de um pacote para um gerenciador de pacotes não listado e o publicasse no bower?
Eu criaria um módulo es6 e usaria / patch es6-transpiler para gerar o formato de pacote necessário. Então eu / /:
es6
comomoduleType
Isenção de responsabilidade: não tenho experiência na vida real na criação de módulos angularjs.
angularjs
ele, eu poderia usarglobals
sim, mas ler minha atualização. Espero que ajude.Inicial
Também estou usando
bower init
pela primeira vez.As opções devem se referir às diferentes maneiras de modularizar algum código JavaScript:
define
, como requirejs.require
.No meu caso, escrevi um dflow do módulo Node.js., mas estou usando o browserify para criar um arquivo dist / dflow.js que exporta uma var do dflow global : portanto, selecionei globais .
Outras atualizações
O comando que eu usei para procurar o dflow como um objeto global da janela foi
browserify -s dflow -e index.js -o dist/dflow.js
Eu mudei porque eu prefiro usar o exigir também dentro do navegador, então agora estou usando
browserify -r ./index.js:dflow -o dist/dflow.js
e então mudei o bower.moduleType para nó no meu arquivo bower.json .
A principal motivação foi que, se o nome do meu módulo tiver um traço, por exemplo , a visualização do fluxo do meu projeto , eu preciso camelizar o nome global no flowView .
Essa nova abordagem tem dois outros benefícios:
${npm_package_name}
variável e escrever assim que o script usado para navegar.Este é outro tópico, mas vale a pena considerar como é útil o último benefício: deixe-me compartilhar o
npm.scripts.browserify
atributo que uso no meu package.json"browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"
fonte
define(function(require, exports, module) { "use strict"; module.exports = { Collection: require("./collection"), View: require('./view') }; });
Apenas para referência, é exatamente isso que o caramanchão especifica em relação aos tipos de módulos:
Link relevante: https://github.com/bower/spec/blob/master/json.md#moduletype
fonte