Câu trả lời:
Nếu bạn không biết, rất có thể toàn cầu là câu trả lời phù hợp với bạn.
Dù bằng cách nào, bạn cần hiểu:
Tính năng này đã được giới thiệu rất gần đây trong Bower và chưa được ghi nhận (AFAIK). Về cơ bản moduleType
, nó mô tả , trong đó nêu rõ công nghệ mô-đun mà gói được sử dụng là gì (xem ở trên).
Ngay bây giờ, nó không có bất kỳ ảnh hưởng nào ngoài việc đặt thuộc moduleType
tính trong bower.json
tệp của gói.
Xem https://github.com/bower/bower/pull/934 để biết yêu cầu kéo ban đầu.
Một vài điểm bổ sung, để trả lời bình luận:
moduleType
tài sản - điều đó có nghĩa là mọi người về mặt kỹ thuật được phép sử dụng bất kỳ giá trị nào họ muốn cho nó, bao gồm cả angularjs
nếu họ cảm thấy có xu hướng làm như vậynon-interoperable/proprietary moduleTypes
(nghĩ nhà soạn nhạc, góc cạnh, vv) - đó là dễ hiểu, nhưng một lần nữa, không có gì thực sự ngăn chặn người sử dụng các moduleType
giá trị mà họ muốnyui moduleType
, vì vậy, có những "ngoại lệ" được đưa ra, giả sử chúng là một phần của kế hoạch phối hợpTôi sẽ làm gì nếu tôi là tác giả của một gói cho người quản lý gói không được liệt kê và xuất bản nó trên Bower?
Tôi sẽ tạo ra một mô-đun es6 và sử dụng / vá es6-transpiler để xuất định dạng gói tôi cần. Sau đó, tôi sẽ / và:
es6
làm phiên bảnmoduleType
Tuyên bố miễn trừ trách nhiệm: Tôi không có kinh nghiệm thực tế về các mô-đun angularjs.
angularjs
mình, tôi có thể sử dụng globals
, vâng, nhưng đọc bản cập nhật của tôi. Mong rằng sẽ giúp.
Tôi cũng đang sử dụng bower init
lần đầu tiên.
Các tùy chọn nên tham khảo các cách khác nhau để mô đun hóa một số mã JavaScript:
define
, như requestjs.require
.Trong trường hợp của tôi, tôi đã viết một module Node.js dflow nhưng tôi đang sử dụng browserify để tạo ra một dist / dflow.js tập tin đó xuất khẩu một toàn cầu dflow var: vì vậy tôi chọn globals .
Lệnh tôi đã sử dụng để trình duyệt luồng như một đối tượng toàn cầu của cửa sổ là
browserify -s dflow -e index.js -o dist/dflow.js
Tôi đã thay đổi vì tôi thích sử dụng yêu cầu bên trong trình duyệt, vì vậy bây giờ tôi đang sử dụng
browserify -r ./index.js:dflow -o dist/dflow.js
và vì vậy tôi đã thay đổi bower.moduleType thành nút trong tệp bower.json của mình .
Động lực chính là nếu tên mô-đun của tôi có một dấu gạch ngang, ví dụ dự án của tôi dòng chảy-view , tôi cần phải camelize tên toàn cầu trong flowView .
Cách tiếp cận mới này có hai lợi ích khác:
${npm_package_name}
biến và viết một khi tập lệnh tôi sử dụng để trình duyệt.Đây là một chủ đề khác, nhưng, nó thực sự đáng để bạn xem xét nó hữu ích như thế nào về lợi ích sau: hãy để tôi chia sẻ npm.scripts.browserify
thuộc tính tôi sử dụng trong gói.json của mình
"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') }; });
Chỉ để tham khảo, đây chính xác là những gì Bower chỉ định liên quan đến các loại mô-đun:
Loại mô-đun được xác định trong
main
tệp JavaScript. Có thể là một hoặc một mảng của các chuỗi sau:
globals
: Mô-đun JavaScript thêm vào không gian tên toàn cầu, sử dụngwindow.namespace
hoặcthis.namespace
cú phápamd
: Mô-đun JavaScript tương thích với AMD, như RequireJS , sử dụngdefine()
cú phápnode
: Mô-đun JavaScript tương thích với nút và CommonJS bằngmodule.exports
cú phápes6
: Mô-đun JavaScript tương thích với các mô-đun ECMAScript 6 , sử dụngexport
vàimport
cú phápyui
: Mô-đun JavaScript tương thích với Mô-đun YUI , sử dụngYUI.add()
cú pháp
Liên kết có liên quan: https://github.com/bower/spec/blob/master/json.md#moduletype