Tworzę swój pierwszy komponent Bower. Po uruchomieniu bower init
skryptu pojawia się pytanie „jakie rodzaje modułów udostępnia ten pakiet?” z tymi opcjami:
- amd
- es6
- globals
- węzeł
jaka jest różnica między tymi opcjami?
Jeśli nie wiesz, to całkiem prawdopodobne, że globals jest właściwą odpowiedzią dla Ciebie.
Tak czy inaczej, musisz zrozumieć:
Ta funkcja została wprowadzona bardzo niedawno w altanie i nie jest jeszcze w ogóle udokumentowana (AFAIK). Zasadniczo opisuje on moduleType
, który określa, dla jakiej technologii modułowej pakiet ma zostać zużyty (patrz wyżej).
W tej chwili nie ma to żadnego wpływu poza ustawieniem moduleType
właściwości w bower.json
pliku pakietu.
Zobacz https://github.com/bower/bower/pull/934, aby uzyskać oryginalne żądanie ściągnięcia.
Kilka dodatkowych punktów, aby odpowiedzieć na komentarze:
moduleType
nieruchomości - co oznacza, że ludzie mogą technicznie korzystać z dowolnej wartości, w tym, angularjs
jeśli chcą, aby to zrobićnon-interoperable/proprietary moduleTypes
(myślę kompozytora, kątowe, etc) - co jest zrozumiałe, ale po raz kolejny, nic naprawdę powstrzymuje ludzi od korzystania z moduleType
wartości chcąyui moduleType
, więc należy wprowadzić „wyjątki”, zakładając, że są częścią uzgodnionego planuCo bym zrobił, gdybym miał napisać paczkę dla menedżera paczek niewymienionego na liście i opublikować ją na altanie?
Chciałbym napisać moduł es6 i użyć / patch es6-transpiler, aby wyświetlić wymagany format pakietu. Potem albo / i:
es6
jakomoduleType
Oświadczenie: Nie mam doświadczenia w pisaniu modułów angularjs.
angularjs
samo w sobie, mogę użyćglobals
, tak, ale przeczytaj moją aktualizację. Mam nadzieję, że to pomaga.Inicjał
używam
bower init
po raz pierwszy.Opcje powinny odnosić się do różnych sposobów modularyzacji niektórych kodów JavaScript:
define
, podobnie jak wymagania.require
.W moim przypadku napisałem dflow modułu Node.js, ale używam Browserify do utworzenia pliku dist / dflow.js , który eksportuje globalny dflow var: więc wybrałem globals .
Inne aktualizacje
Komenda, której użyłem do przeglądania dflow jako globalnego obiektu okna, była
browserify -s dflow -e index.js -o dist/dflow.js
Zmieniłem to, ponieważ wolę używać wymagają również w przeglądarce, więc teraz używam
browserify -r ./index.js:dflow -o dist/dflow.js
i dlatego zmieniłem bower.moduleType na node w moim pliku bower.json .
Główną motywacją było to, że jeśli nazwa mojego modułu ma myślnik, na przykład podgląd projektu , muszę przekształcić nazwę globalną w flowView .
To nowe podejście ma dwie inne zalety:
${npm_package_name}
zmiennej i napisać raz skrypt, którego używam do przeglądania.To kolejny temat, ale naprawdę warto zastanowić się, jak użyteczna jest ta druga korzyść: pozwól mi udostępnić
npm.scripts.browserify
atrybut, którego używam w pakiecie.json."browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"
źródło
define(function(require, exports, module) { "use strict"; module.exports = { Collection: require("./collection"), View: require('./view') }; });
Dla porównania, właśnie to określa altana w odniesieniu do typów modułów:
Odpowiedni link: https://github.com/bower/spec/blob/master/json.md#moduletype
źródło