Cordova 5.0.0: Tôi nên cam kết những tệp nào với git?


89

Tôi sử dụng Cordova 5.0.0 và tôi có cấu trúc dự án sau:

MyProject
    - hooks
    - platforms
    - plugins
    - resources
    - www
    - config.xml

Câu hỏi của tôi bây giờ là: Tôi có thể bỏ qua thư mục nào trong số những thư mục này? Tôi hỏi nó vì tôi làm việc trên ba nền tảng khác nhau. Tôi phát triển trên linux cho android, windows cho windows phone và trên mac cho ios. Nếu tôi cam kết toàn bộ dự án, tôi luôn nhận được cảnh báo và lỗi cho các nền tảng không được hỗ trợ.

Những gì tôi muốn là một kho lưu trữ git tối giản.

Ví dụ, một vấn đề là các plugin. Khi tôi xóa thư mục plugin khỏi kho lưu trữ, tôi phải thêm chúng vào từng nền tảng đang phát triển của mình theo cách thủ công.

Một vấn đề khác là thư mục tài nguyên. Tôi tự động tạo các biểu tượng và màn hình giật gân bằng ionic. Khi bây giờ tôi cố gắng xây dựng dự án trên ios, nó đang phàn nàn về hình ảnh cho android.

Vậy tôi cần gì và có thể bỏ sót những gì?

Câu trả lời:


122

Bạn có thể bỏ qua các nền tảng và thư mục plugin miễn là bạn chưa thêm bất kỳ mã tùy chỉnh nào vào chúng.

Khi thêm plugin và nền tảng, hãy thêm --save vào lệnh. ví dụ

cordova platform add ios@3.8.0 --save

hoặc là

cordova plugin add cordova-plugin-device --save

Thao tác này sẽ lưu bản ghi các plugin và nền tảng bạn sử dụng vào tệp config.xml của mình. Khi bạn chạy cordova preparehoặc cordova buildtất cả các plugin và nền tảng của bạn được liệt kê trong config.xml sẽ được cài đặt nếu chúng chưa được cài đặt.

Bạn cũng có thể chỉ định một nền tảng đang chuẩn bị và xây dựng. Vì vậy, nếu bạn đang sử dụng máy Mac, bạn có thể kiểm tra kho lưu trữ git và chạy cordova prepare iosđể chỉ cài đặt nền tảng ios và các plugin.


Điều này cũng hoạt động cho các plugin và nền tảng hiện có. Cordova sẽ đơn giản bỏ qua cài đặt lại, nhưng sẽ thêm plugin vào tệp cấu hình.
rnevius

4
cordova buildđã không khôi phục nền tảng, nhưng cordova prepaređã làm trên Cordova 6.0.
Victor Sergienko

42
Nếu bạn quên các --savenền tảng và plugin, chỉ cần sử dụng cordova platform savecordova plugin save(lưu ý không --), và nó sẽ thêm các dòng liên quan vào của bạn config.xml.
jcaron

1
điều này làm việc tốt cho platformsnhưng không cho plugins. cordova preparesẽ không hoạt động với ít nhất plugin.xmlsrc. tôi đã từ bỏ và chỉ lưu tất cả pluginsvào git.
Jayen

6
kể từ cordova 7.0.0, hành vi mặc định đã được thay đổi thành lưu. cordova.apache.org/news/2017/05/04/cordova-7.html
Kinjal Dixit

42

Nó phụ thuộc vào các nền tảng.

Bạn có thể sử dụng ví dụ này của .gitignore và tùy chỉnh theo nhu cầu của bạn.

# Mac
.DS_Store

# iOS
platforms/ios/build/
platforms/ios/www/
platforms/ios/cordova/console.log
*.xcuserdatad

# android
platforms/android/assets/www
platforms/android/bin
platforms/android/gen
platforms/android/local.properties
platforms/android/ant-build
platforms/android/ant-gen
platforms/android/CordovaLib/ant-build
platforms/android/CordovaLib/ant-gen
platforms/android/CordovaLib/bin
platforms/android/CordovaLib/gen
platforms/android/CordovaLib/local.properties

# wp8
platforms/wp8/bin
platforms/wp8/obj
platforms/wp8/www
platforms/wp8/.staging
platforms/wp8/*.suo
platforms/wp8/*.csproj.user

# res
resources/signing

sẽ không hợp lý khi bỏ qua các nền tảng / android / res? AFAIK / understnad, chúng được tạo trong quá trình xây dựng (từ thư mục res / resources trong thư mục mẹ (dự án)).
Tomer Cagan

4
tôi đã có thể bỏ qua platforms/*/với cordova 6.3.0 và thực hiện cordova preparetrên các hệ thống khác.
Jayen

Tệp bỏ qua này dường như bao gồm rất nhiều tệp được tạo, vì vậy tôi nghĩ nó cần phải thu hẹp hơn.
Anders Lindén

1
Nó cũng nên bao gồm node_modules? Tôi đã làm.
Cameron A. Ellis

@ CameronA.Ellis Tôi cũng có node_modules. Bạn đã thêm nó? Không có cách nào để tải xuống các mô-đun nút này.
wviana

18

Bạn có thể lưu nền tảng và plugin sau đó bằng cách sử dụng các lệnh sau.

tiết kiệm hàng loạt nền tảng

$ cordova platform save

Tiết kiệm hàng loạt plugin

$ cordova plugin save

Vui lòng lưu ý rằng không có - trong các lệnh trên

Một điều nữa, sau khi tìm nạp repo trên một máy khác, bạn chỉ cần chạy lệnh sau để tự động tạo và tìm nạp các plugin và nền tảng

$ cordova prepare

Để tham khảo thêm, hãy truy cập các liên kết bên dưới. https://cordova.apache.org/docs/en/latest/platform_plugin_versaction_ref/#mass-saving-platforms-on-an-existing-project

Lời khuyên của Cordova : Luôn tham khảo tài liệu chính thức trước bất kỳ điều gì khác để có được giải pháp phù hợp.



4

Hầu hết các câu trả lời khác là 2/3 tuổi.

Cập nhật năm 2019:

# remove extension less files
*
!/**/
!*.*

# intermediate files
node_modules/
build/
obj/
Debug/
bin/
package-lock.json
.vs
.gradle
.idea
*.exe

# res
**/resources/signing

# project specific
**/dist/
**/all.min.js

# ========== Cordova - platforms
# android
# platforms/android/app/src/main/assets
# platforms/android/app/src/main/AndroidManifest.xml
# platforms/android/app/src/main/res/drawable-*
# platforms/android/app/src/main/res/mipmap-*
# platforms/android/app/src/main/res/xml/config.xml
# browser
# platforms/browser/app/src/main/assets
# platforms/browser/config.xml
# platforms/browser/www
#
# ========== Cordova - plugins - remove all except json & xml
# plugins/**/.DS_Store
# plugins/**/*.cs
# plugins/**/*.h
# plugins/**/*.java
# plugins/**/*.js
# plugins/**/*.m
# plugins/**/*.map
# plugins/**/*.md
# plugins/**/*.modulemap
# plugins/**/*.ts
# plugins/**/LICENSE
# plugins/**/NOTICE
# plugins/**/*.gradle
# plugins/**/tests/

Như bạn có thể thấy, tôi đã nhận xét hầu hết các dòng (tất cả các dòng bắt đầu bằng #). Điều này là do tôi gặp phải sự cố với các thay đổi phiên bản plugin và quyết định biết điều gì đang xảy ra với các bản cập nhật plugin. Về cơ bản tất cả các tệp nền tảng & plugin đều có trong commit, giờ cuộc sống của tôi đã yên bình.

2019:
Tôi đã tuyên bố với điều này .

Sau khi phát triển và xuất bản ứng dụng, nó trở thành bên dưới:
(Nếu bạn đi chệch hướng bên dưới, hãy bình luận bên dưới, chúng ta có thể học hỏi lẫn nhau)

# remove extension less files
*
!/**/
!*.*

# intermediate files
node_modules/
build/
obj/
Debug/
bin/
package-lock.json
.vs
.gradle
.idea
*.exe

# Cordova - platforms
platforms

# Cordova - plugins - remove all except json & xml
plugins/**/.DS_Store
plugins/**/*.cs
plugins/**/*.h
plugins/**/*.java
plugins/**/*.js
plugins/**/*.m
plugins/**/*.map
plugins/**/*.md
plugins/**/*.modulemap
plugins/**/*.ts
plugins/**/LICENSE
plugins/**/NOTICE
plugins/**/*.gradle
plugins/**/tests/

# res
**/resources/signing

# project specific
**/dist/
**/all.min.js

1
Bạn có thể chỉ cần làm plugins/*sau đó !plugins/**/*.json!plugins/**/*.xml
Z. Khullah.

tôi cũng đã nhìn thấy được nên không bỏ qua gói-lock
Z. Khullah

@ z-khullah trong liên kết được cung cấp, "Tùy chọn bỏ qua plugin Git nhái" được đưa ra vì đôi khi chúng tôi thay đổi mã trong chúng, vì vậy không thể bỏ qua tất cả các tệp. Lý tưởng nhất là chúng ta có thể bỏ qua, nhưng có những đề xuất trực tuyến do các vấn đề trong plugin, đặc biệt là với tư cách là một người mới tham gia, nó sẽ giúp ích. package-lock thay đổi 10 giây hoặc 20 dòng mỗi khi một số cài đặt plugin thay đổi, vì vậy đây cũng là điều mà chúng tôi không muốn xem xét mã, cũng bởi tệp khóa đi, chúng tôi không có bất kỳ vấn đề nào cho đến bây giờ, nó được tạo từ gói. json. Hy vọng rằng sẽ giúp đưa ra quan điểm của chúng tôi.
Manohar Reddy Poreddy

Có nhưng mẫu cũng làm điều tương tự, chỉ với ít dòng hơn. Đối với package-lock, nó giúp gỡ lỗi vì nó hiển thị cấu trúc node_modules chính xác, nhưng có, tôi nghĩ nó là tùy chọn
Z. Khullah 12/03 '19


3

Tôi đã làm theo các bước sau:

  • tạo dự án cordova

  • thêm nền tảng

  • thêm plugin

Trước khi xây dựng dự án, tôi cam kết và đẩy các tệp đã tạo. Sau khi tôi xây dựng dự án và kiểm tra các tệp mới được tạo. Tôi có những thứ này để thêm vào .gitignore:

/platforms/android/gradlew.bat

/ platform / android / build

/ platform / android / gradle

/ platform / android / libs

/platforms/android/gradlew.bat

/ platform / android / CordovaLib / build

/platforms/android/.gradle


0

Tôi thêm vào danh sách Niko:

# IntelliJ IDEA files
*.iml
.idea

#windows
Thumbs.db
Desktop.ini

*.sw[mnpcod]
*.log
*.tmp
*.tmp.*
log.txt

2
Chúng thường tốt để bỏ qua, không dành riêng cho Cordova (giống như .DS_Storecâu trả lời của Niko cũng không có).
Jari Keinänen

Những điều này có lẽ nên được giải quyết trong một gitignore toàn cầu , không phải một cấp độ dự án.
bdesham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.