Tôi đã xem bài nói chuyện của Paul Irish công bố Yeoman (www.yeoman.io), và tôi đang nối vào khái niệm chạy một môi trường xây dựng liên tục. Không phải là nội dung chờ đợi một lời mời Yeoman, tôi đã thử Grunt và Brunch. Cả hai cài đặt một cách dễ dàng, và tôi có thể nhận được các dự án mới và chạy với nỗ lực tối thiểu.Nhập dự án JavaScript hiện tại vào dự án Grunt/Brunch
Tôi không hiểu cách thức di chuyển dự án hiện có sang một trong hai nền tảng. Dự án của tôi sử dụng một không gian tên duy nhất và sử dụng hai quy ước cho các mô-đun (một cho instancing khác cho tiện ích), mỗi trong số đó được bao bọc trong các chức năng ẩn danh tự thực hiện xuất khẩu cho cá thể hoặc không gian tên.
Tôi có ít nhất 200 mô-đun và nhiều chức năng trợ giúp đơn giản hơn xuất ra không gian tên; do đó, nó không phải là ở tất cả các hiệu quả để sử dụng giao diện điều khiển để tạo ra những trong một dự án grunt/brunch và sau đó nhập khẩu từng mô-đun riêng lẻ. Hơn nữa, tôi đang sử dụng ít nhất 15 công cụ JavaScript khác nhau của bên thứ ba. Tôi không rõ cách mang những thứ này vào.
Cách hiệu quả nhất để thực hiện dự án lớn, hiện có và di chuyển nó vào Grunt/Brunch với số tiền ít nhất là tái cấu trúc và hỗ trợ cho các công cụ của bên thứ ba tùy ý?
Cập nhật: trong số hai, tôi đã tìm thấy Bữa ăn sáng một chút dễ dàng hơn để đối phó với. Nếu bạn sử dụng kho "skeleton" (có nghĩa là "template" - từ dòng lệnh {trong thư mục bạn muốn thay đổi xảy ra} thực hiện "brunch new [project_name] --sk git git: //github.com/brunch /simple-js-skeleton.git ") cho JS thuần túy, bạn sẽ có được một cấu trúc thư mục mới mà thực sự khá nhạy. Bất kỳ thứ gì bạn đưa vào thư mục 'ứng dụng' (mã của riêng bạn) hoặc 'nhà cung cấp' (bên thứ ba) sẽ được tự động biên dịch lại cho bạn khi chỉnh sửa tệp (khi bạn chạy "xem đồng hồ").
Điều này thật tuyệt, ngoại trừ. Theo tài liệu, bạn kiểm soát các kịch bản lệnh của nhà cung cấp đơn hàng được biên dịch và ghép lại với nhau từ tệp Brunch config.coffee (tệp văn bản JSON). Các thay đổi đối với tệp này dường như không có hiệu lực, do đó bạn kết thúc với điều kiện chủng tộc bên thứ 3 từ các plugin mong đợi các plugin khác.
Hơn nữa, khi bạn thả mã của riêng mình vào thư mục 'ứng dụng' được tạo tự động, bạn sẽ nhận được phiên bản mã do bạn tự động biên soạn, thời gian thực, chỉnh sửa; nhưng không thể truy cập được. Brunch làm xáo trộn đối tượng cửa sổ, vì vậy khai báo không gian tên ban đầu của tôi là window.myNameSpace không thành công và tất cả các cuộc gọi thư viện tiếp theo đến không gian tên cũng bị lỗi. Điều này có liên quan đến hệ thống mô-đun của Brunch, mà tôi không thể tìm thấy tài liệu nào.
Tôi đã giải quyết điều này bằng cách đặt lớp không gian tên của tôi trong thư mục 'nhà cung cấp', đảm bảo rằng nó được gắn vào đối tượng cửa sổ; tuy nhiên, bây giờ có một điều kiện chủng tộc: không gian tên của tôi không phải lúc nào cũng có sẵn cho tất cả các mô-đun của tôi.
Vấn đề bây giờ là thế này:
Một khi bạn đã sao chép tất cả các thư viện nội bộ và bên ngoài của bạn vào một dự án Brunch, làm thế nào để bạn cấu hình các ứng dụng để tải chúng theo một thứ tự lành mạnh?
Điều tôi không hiểu về Bữa ăn nửa buổi là nó (ít nhất dường như) yêu cầu mẫu mô-đun CommonJS. Tôi đang sử dụng một đơn giản (nhưng trong lựa chọn của tôi, mẫu không gian tên khá thanh lịch) [Xem http://stackoverflow.com/questions/9072834/auto-generate-visual-studio-vsdoc-for-javascript-library và http://jsfiddle.net/2gxYJ/1/], mà thực sự làm cho chuyển đổi sang các hệ thống mô-đun khác (RequireJS, CommonJS, AMD, vv) khá không tầm thường một khi thư viện đã trở nên lớn. Vì vậy, tôi chuyển sang Grunt không áp đặt ràng buộc thiết kế. – Christopher
Kể từ 1.4 bữa nửa buổi là bất khả tri đối với các hệ thống mô-đun, bạn thậm chí có thể vô hiệu hóa các mô-đun. –
Điều đó thật xuất sắc. Tính năng duy nhất còn thiếu sau đó là hỗ trợ JSHint. Linting như một tùy chọn xây dựng/xem sẽ là tuyệt vời. Cấu hình của Grunt cũng cung cấp cho bạn một đối tượng jshint/uglifyjs để cấu hình rõ ràng hành vi của chúng. Dù sao, vấn đề lớn nhất của tôi với bữa nửa buổi là yêu cầu mô-đun, vì vậy tôi chắc chắn sẽ cung cấp cho nó một shot. – Christopher