Saya membuat komponen Bower pertama saya. Setelah menjalankan bower init
skrip bertanya kepada saya 'modul apa yang dipaparkan paket ini?' dengan opsi ini:
- amd
- es6
- global
- simpul
apa perbedaan antara opsi-opsi ini?
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 menggunakanglobals
, ya, tetapi baca pembaruan saya. Semoga itu bisa membantu.Awal
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 .
Pembaruan Lainnya
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"
sumber
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:
Tautan yang relevan: https://github.com/bower/spec/blob/master/json.md#moduletype
sumber