Khi tôi bắt đầu một dự án M2 mới, điều đầu tiên tôi sẽ làm là cài đặt lõi thông qua trình soạn thảo:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Bây giờ tôi có thể viết (các) mô-đun tùy chỉnh và chủ đề của mình bên dưới app/code
. Sau đó tôi sẽ thêm thư mục của tôi composer.*
và toàn bộ app/code
vào VCS của tôi. Cho đến nay mọi thứ đều ổn.
Giả sử bây giờ tôi muốn sử dụng một số công cụ xây dựng cho dự án của mình, giả sử Grunt hoặc Gulp.
Nếu tôi cam kết
Gruntfile.js
, cái này sẽ bị ghi đè bởimagento/magento2-base
gói khi tôi chạycomposer install
sau khi tôi nhân bản repo.Nếu tôi cam kết
gulpfile.js
, tôi thực sự không thể xác định các phụ thuộc của mình trong mộtpackage.json
, bởi vì nó cũng sẽ bị ghi đè bởimagento/magento2-base
.Nếu tôi quyết định sử dụng thiết lập Grunt của Magento và muốn tùy chỉnh nó bằng cách chỉnh sửa các tệp trong
/dev/tools/grunt
(ví dụthemes.js
), tôi không thể vì những thay đổi của tôi sẽ bị ghi đè bởimagento/magento2-base
.
Tôi hiểu rằng bạn thực sự không thể làm gì nhiều trong tài liệu gốc của bạn. Tất nhiên có rất nhiều giải pháp cho vấn đề này:
- Tôi có thể chạy
git checkout -
ngay sau khi cài đặt để thiết lập lại các tập tin của riêng mình - Tôi có thể lưu trữ các tập tin xây dựng của mình trong một thư mục chuyên dụng,
/build
ví dụ - Tôi có thể sử dụng một công cụ xây dựng khác, như Phing, Ant hoặc Rake (các nhà phát triển của tôi sẽ không vui lắm đâu)
- Tôi có thể thay thế
magento/magento2-base
bằng gói tùy chỉnh có ánh xạ tùy chỉnh cho các tệp lõi (không thực sự tối ưu nhưng này, đó là một tùy chọn)
Cá nhân tôi không thích tất cả các tùy chọn này, vì vậy tôi muốn biết liệu có cách nào ưu tiên hay tốt hơn để đạt được những gì tôi đang cố gắng thực hiện.
Có ai có cùng một vấn đề? Làm thế nào bạn giải quyết nó? Làm thế nào để bạn cấu trúc dự án của bạn theo VCS?
CẬP NHẬT
Một điểm bổ sung liên quan đến việc thiết lập dự án. Trong các thử nghiệm của tôi, tôi nhận thấy rằng trình cài đặt trình soạn thảo Magento có cờ ghi đè tệp:
"extra": {
"magento-force": "override"
}
Nó được xử lý nội bộ như một boolean nếu tôi không nhầm, vì vậy tôi đã cố gắng đặt nó false
để bỏ qua ghi đè. Khi tôi chạy composer install
cài đặt của tôi không thành công vì tập tin đã có sẵn. Về cơ bản, nếu tôi không để Magento ghi đè các tệp của mình, tôi không thể cài đặt nó.
Mục đích của lá cờ này là gì? Có phải nó chỉ giả sử để thực hiện một kiểm tra cho tôi? Thành thật đối với tôi không có ý nghĩa gì, nhưng có lẽ ai đó có thể làm sáng tỏ chủ đề này.
Gruntfile.js
, gulpfile.js
và package.json
vấn đề được giải quyết. Vấn đề này được đề cập trong câu hỏi này vẫn còn áp dụng đối với Magento 2 phiên bản mới hơn khi bạn cần phải thay đổi themes.js
, index.php
hoặc .htaccess
ví dụ.