Jawaban:
Jika Anda tidak tahu, kemungkinan besar global adalah jawaban yang tepat untuk Anda.
Bagaimanapun, Anda perlu memahami:
Fitur ini diperkenalkan baru-baru ini dalam bower dan belum didokumentasikan sama sekali (AFAIK). Ini pada dasarnya menggambarkan moduleType
, yang menyatakan untuk teknologi modul apa paket dimaksudkan untuk dikonsumsi (lihat di atas).
Saat ini, Ini tidak memiliki efek apa pun selain mengatur moduleType
properti dalam bower.json
file paket.
Lihat https://github.com/bower/bower/pull/934 untuk permintaan tarik asli.
Beberapa poin tambahan, untuk menjawab komentar:
moduleType
properti - yang berarti bahwa orang secara teknis diizinkan untuk menggunakan nilai apa pun yang mereka inginkan untuk itu, termasuk angularjs
jika mereka merasa cenderung untuk melakukannyanon-interoperable/proprietary moduleTypes
(berpikir komposer, sudut, dll) - yang mudah dimengerti, tapi sekali lagi, tidak ada yang benar-benar mencegah orang dari menggunakan moduleType
nilai yang mereka inginkanyui moduleType
, jadi, ada "pengecualian" yang harus dibuat, dengan asumsi mereka adalah bagian dari rencana bersamaApa yang akan saya lakukan jika saya membuat paket untuk manajer paket yang tidak terdaftar dan menerbitkannya di bower?
Saya akan membuat modul es6, dan menggunakan / patch es6-transpiler untuk menampilkan format paket yang saya butuhkan. Maka saya akan / dan:
es6
sebagai amoduleType
Penafian: Saya tidak memiliki pengalaman nyata membuat modul angularjs.
angularjs
dalam dirinya sendiri, saya mungkin menggunakan globals
, ya, tetapi baca pembaruan saya. Semoga itu bisa membantu.
Saya menggunakan bower init
untuk pertama kalinya juga.
Opsi harus merujuk pada berbagai cara untuk memodulasi beberapa kode JavaScript:
define
, seperti requirejs.require
.Dalam kasus saya, saya menulis modul Node.js dflow tapi saya menggunakan browserify untuk membuat file dist / dflow.js yang mengekspor var aliran global : jadi saya memilih global .
Perintah yang saya gunakan untuk menjelajah dflow sebagai objek jendela global adalah
browserify -s dflow -e index.js -o dist/dflow.js
Saya mengubahnya karena saya lebih suka menggunakan harus juga di dalam browser, jadi sekarang saya menggunakan
browserify -r ./index.js:dflow -o dist/dflow.js
dan jadi saya mengubah bower.moduleType ke node di file bower.json saya .
Motivasi utama adalah bahwa jika nama modul saya memiliki tanda hubung, misalnya tampilan alur proyek saya , saya perlu menyamarkan nama global dalam flowView .
Pendekatan baru ini memiliki dua manfaat lain:
${npm_package_name}
variabel dan menulis begitu skrip yang saya gunakan untuk menjelajah.Ini adalah topik lain, tetapi, sangat layak bagi Anda untuk mempertimbangkan bagaimana manfaatnya bermanfaat bagi yang terakhir: izinkan saya berbagi npm.scripts.browserify
atribut yang saya gunakan di package.json saya
"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') }; });
Hanya untuk referensi, inilah yang ditentukan bower terkait jenis modul:
Jenis modul yang ditentukan dalam
main
file JavaScript. Dapat berupa satu atau array dari string berikut:
globals
: Modul JavaScript yang menambah namespace global, menggunakanwindow.namespace
atauthis.namespace
sintaksisamd
: Modul JavaScript kompatibel dengan AMD, seperti RequireJS , menggunakandefine()
sintaksnode
: Modul JavaScript kompatibel dengan node dan CommonJS menggunakanmodule.exports
sintakses6
: Modul JavaScript kompatibel dengan modul ECMAScript 6 , menggunakanexport
danimport
sintaksisyui
: Modul JavaScript kompatibel dengan Modul YUI , menggunakanYUI.add()
sintaks
Tautan yang relevan: https://github.com/bower/spec/blob/master/json.md#moduletype