Antworten:
Wenn Sie es nicht wissen, ist es sehr wahrscheinlich, dass Globals die richtige Antwort für Sie ist.
In jedem Fall müssen Sie verstehen:
Diese Funktion wurde erst kürzlich in Bower eingeführt und ist noch gar nicht dokumentiert (AFAIK). Es beschreibt im Wesentlichen moduleType
, welche Zustände für welche Modultechnologie das Paket verbrauchen soll (siehe oben).
Im Moment hat es keine Auswirkung außer dem Festlegen der moduleType
Eigenschaft in der bower.json
Datei des Pakets.
Die ursprüngliche Pull-Anfrage finden Sie unter https://github.com/bower/bower/pull/934 .
Ein paar zusätzliche Punkte, um Kommentare zu beantworten:
moduleType
Grundstück AFAIK keine Validierung durchgeführt. Dies bedeutet, dass Personen technisch den Wert verwenden dürfen, den sie für das Grundstück wünschen, auch angularjs
wenn sie dazu geneigt sindnon-interoperable/proprietary moduleTypes
Elemente aufzunehmen (denken Sie an Komponisten, Winkel usw.) - was leicht verständlich ist, aber nichts hindert die Menschen wirklich daran, den moduleType
gewünschten Wert zu verwendenyui moduleType
, so dass "Ausnahmen" zu machen sind, vorausgesetzt, sie sind Teil eines konzertierten PlansWas würde ich tun, wenn ich ein Paket für einen nicht aufgeführten Paketmanager verfassen und auf bower veröffentlichen würde?
Ich würde ein es6-Modul erstellen und / patch es6-transpiler verwenden, um das benötigte Paketformat auszugeben. Dann würde ich entweder / und:
es6
alsmoduleType
Haftungsausschluss: Ich habe keine praktische Erfahrung mit der Erstellung von AngularJS-Modulen.
angularjs
sich könnte ich globals
ja verwenden, aber mein Update lesen. Hoffentlich hilft das.
Ich benutze auch bower init
zum ersten Mal.
Die Optionen sollten sich auf die verschiedenen Möglichkeiten beziehen, JavaScript-Code zu modularisieren:
define
, wie requirejs.require
.In meinem Fall habe ich einen Node.js-Modul- Dflow geschrieben, aber ich verwende browserify, um eine dist / dflow.js- Datei zu erstellen , die eine globale Dflow- Variable exportiert : Also habe ich Globals ausgewählt .
Die I - Befehl verwendet , um browserify DFlow als Fenster globales Objekt war
browserify -s dflow -e index.js -o dist/dflow.js
Habe ich es , weil ich es vorziehen , zu verwenden erfordern auch innerhalb des Browsers, so dass ich jetzt bin mit
browserify -r ./index.js:dflow -o dist/dflow.js
und so habe ich den bower.moduleType in meiner bower.json- Datei in node geändert .
Die Hauptmotivation war , dass , wenn mein Modulname einen Bindestrich, zum Beispiel meines Projekt hat Flow-Ansicht , ich muß camelize die globalen Namen in Flowview .
Dieser neue Ansatz hat zwei weitere Vorteile:
${npm_package_name}
Variablen nutzen und einmal das Skript schreiben, mit dem ich browserifiziere.Dies ist ein weiteres Thema, aber es lohnt sich wirklich zu überlegen, wie nützlich letzterer Vorteil ist: Lassen Sie mich das npm.scripts.browserify
Attribut teilen, das ich in meiner package.json verwende
"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') }; });
Nur als Referenz, genau das spezifiziert Bower in Bezug auf die Modultypen:
Der in der
main
JavaScript-Datei definierte Modultyp . Kann eine oder ein Array der folgenden Zeichenfolgen sein:
globals
: JavaScript-Modul, das mithilfe vonwindow.namespace
oderthis.namespace
Syntax zum globalen Namespace hinzugefügt wirdamd
: Mit AMD kompatibles JavaScript-Modul wie RequireJS mitdefine()
Syntaxnode
: JavaScript - Modul mit kompatibelem Knoten und Commonjs Verwendungmodule.exports
Syntaxes6
: JavaScript - Moduls mit kompatibelem ECMAScript 6 Module , verwendetexport
undimport
Syntaxyui
: JavaScript-Modul, das mit YUI-Modulen kompatibel ist undYUI.add()
Syntax verwendet
Relevanter Link: https://github.com/bower/spec/blob/master/json.md#moduletype