Yanıtlar:
Eğer bilmiyorsanız, büyük olasılıkla küreseller sizin için doğru cevaptır.
Her iki durumda da, şunu anlamanız gerekir:
Bu özellik çok yakın zamanda piyasaya sürüldü ve henüz belgelenmedi (AFAIK). Temel olarak moduleType
, paketin hangi modül teknolojisinin tüketilmesi gerektiğini belirten (yukarıda bakınız).
Şu anda, paketin dosyasında moduleType
özelliği ayarlamak dışında herhangi bir etkisi yoktur bower.json
.
Orijinal çekme isteği için https://github.com/bower/bower/pull/934 adresine bakın .
Yorumları yanıtlamak için birkaç ek nokta:
moduleType
vasıta insanlar teknik olarak onlar, bunun için de dahil olmak üzere istediğiniz değeri ne olursa olsun kullanımına izin verildiğini - mülk angularjs
bunu yapmak için eğimli düşünüyorsanıznon-interoperable/proprietary moduleTypes
(düşünmek besteci, açısal, vs.) - kolayca anlaşılabilir, ama yine hiçbir şey gerçekten kullanarak yapmalarının önüne moduleType
istedikleri değeriyui moduleType
, bu nedenle, uyumlu bir planın parçası oldukları varsayılarak, yapılacak "istisnalar" vardır.Listelenmemiş bir paket yöneticisi için bir paket yazarsam ve onu bower'da yayınlasaydım ne yapardım?
Bir es6 modülü yazar ve ihtiyacım olan paket formatını çıktılamak için / patch es6-transpiler kullanırım. Sonra ya / ve:
es6
a kadarmoduleType
Feragatname: Angularjs modüllerini yazma konusunda gerçek yaşam deneyimim yok.
angularjs
başına gelince globals
, evet, ama güncellememi okuyabilirim. Umarım yardımcı olur.
Ben de bower init
ilk kez kullanıyorum .
Seçenekler, bazı JavaScript kodlarını modüle etmenin farklı yollarına atıfta bulunmalıdır:
define
gibi, gereksinimler gibi.require
.Benim durumumda bir Node.js modül dflow yazdım ama global dflow var ihraç bir dist / dflow.js dosyası oluşturmak için browserify kullanıyorum : böylece globals seçtim .
Bir pencere genel nesnesi olarak dflow'a göz atmak için kullandığım komut
browserify -s dflow -e index.js -o dist/dflow.js
Değiştirdim çünkü tarayıcıda da gereksinimi kullanmayı tercih ediyorum , bu yüzden şimdi kullanıyorum
browserify -r ./index.js:dflow -o dist/dflow.js
ve bu yüzden değişti bower.moduleType için düğüm benim de bower.json dosyası.
Ana motivasyon, eğer modül adımda bir çizgi varsa, örneğin proje akış görünümüm varsa , flowView'de global adı devretmem gerekiyordu .
Bu yeni yaklaşımın iki avantajı daha vardır:
${npm_package_name}
browserify için kullandığınız komut dosyası bir kez değişken yararlanabilir ve yazabilirsiniz.Bu başka bir konudur, ancak ikinci faydasının ne kadar yararlı olduğunu düşünmenize gerçekten değer: paketimdenpm.scripts.browserify
kullandığım özelliği paylaşmama izin verin.
"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') }; });
Sadece referans olarak, bower'ın modül tipleri ile ilgili olarak tam olarak belirttiği şey budur:
main
JavaScript dosyasında tanımlanan modülün türü . Aşağıdaki dizelerden biri veya bir dizi olabilir:
globals
:window.namespace
Veyathis.namespace
sözdizimini kullanarak genel ad alanına eklenen JavaScript modülüamd
: Sözdizimi kullanan AMD ile uyumlu RequireJS gibi JavaScript modülüdefine()
node
: Sözdizimi kullanarak düğüm ve CommonJS ile uyumlu JavaScript modülümodule.exports
es6
: JavaScript ile uyumlu modülü ECMAScript'e 6 modüllerini kullanarak,export
veimport
söz dizimiyui
: Sözdizimi kullanan YUI Modülleri ile uyumlu JavaScript modülüYUI.add()
İlgili bağlantı: https://github.com/bower/spec/blob/master/json.md#moduletype