الفرق بين المراجعتين لصفحة: «Cordova/platform plugin versioning ref»

من موسوعة حسوب
لا ملخص تعديل
تحديث
 
(10 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:إدارة إصدارات المنصات والإضافات في Cordova }}</noinclude>
<noinclude>{{DISPLAYTITLE:إدارة إصدارات المنصات والإضافات في كوردوفا}}</noinclude>
[[تصنيف: Cordova]]
[[تصنيف: Cordova]]
[[تصنيف: Cordova Platform]]
[[تصنيف: Cordova Plugin]]
تتيح كوردوفا إمكانية حفظ واستعادة المنصات والإضافات. تسمح هذه الميزة للمطورين بحفظ تطبيقاتهم عند حالة سابقة واستعادتها لاحقًا دون الحاجة إلى مراجعة كل التعليمات في الشيفرة المصدرية للمنصة أو الإضافة.


منذ الإصدار 4.3.0، تتيح Cordova القدرة على حفظ واستعادة المنصات والإضافات.
عند إضافة منصة أو إضافة، ستُحفظ تفاصيل منصة التطبيق وإصدارات الإضافة تلقائيًا في الملف <code>package.json</code>. من الممكن أن تضيف منصة أو إضافة عن طريق تعديل أحد الملف <code>package.json</code> مباشرةًَ، على افتراض أنك على علمٍ بالوسوم والصيغ الصحيحة. من جهة أخرى، لا يمكن إزالة الإضافات أو المنصات بهذه الطريقة. والطريقة الموصى بها لفعل ذلك هي باستخدام سطر أوامر كوردوفا عبر كتابة الأمرين <code>cordova plugin add|remove ...‎</code> و <code>cordova platform add | remove ...</code>‎ لتجنب أية مشاكل متعلقة بالمزامنة.


تسمح هذه الميزة للمطورين بحفظ تطبيقاتهم عند حالة سابقة واستعادتها لاحقًا دون الحاجة إلى مراجعة كل التعليمات في الشيفرة المصدرية للمنصة أو الإضافة.
تُحدَّث "الاستعادة" (restore) تلقائيًا عند تنفيذ الأمر "<code>cordova prepare</code>"، عبر استخدام المعلومات المحفوظة مسبقًا في الملفين [[Cordova/config ref|<code>config.xml</code>]] و <code>package.json</code>.


عند إضافة منصة أو إضافة، ستُحفظ تفاصيل منصة التطبيق وإصدارات الإضافة تلقائيًا في الملفين <code>config.xml</code> و <code>package.json</code>. من الممكن أن تضيف منصة أو إضافة عن طريق تعديل أحد الملفين <code>package.json</code> أو <code>config.xm</code>l مباشرة، على افتراض أنك على علمٍ بالوسوم والصيغ الصحيحة. من جهة أخرى، لا يمكن إزالة الإضافات أو المنصات بهذه الطريقة. والطريقة الموصى بها لفعل ذلك هي باستخدام سطر أوامر كوردوفا عبر كتابة التعليمتين <code>cordova plugin add|remove ...‎</code> و <code>cordova platform add | remove ...‎</code> لتجنب أي مشاكل متعلقة بالمزامنة.
القدرة على الحفظ والاستعادة مفيدة جدًا للتطبيقات التي يعمل عليها فريق كبير، بحيث يركز كل عضو في الفريق على منصة أو إضافة معينة. تسهّل هذه الميزة تشارك المشروع وتقليل حجم الشيفرة البرمجية التي يجب أن يُتحقق منها في المستودع.
 
==إصدارات المنصات==
تُحدَّث "الاستعادة" (restore) تلقائيًا عند إجراء الأمر "<code>cordova prepare</code>"، عبر استخدام المعلومات المحفوظة مسبقًا في الملفين <code>config.xml</code> و <code>package.json</code>.
===حفظ المنصات===
 
القدرة على الحفظ والاستعادة مفيدة جدا للتطبيقات التي يعمل عليها فريق كبير، بحيث يركز كل عضو في الفريق على منصة أو إضافة معينة. تسهّل هذه الميزة تشارك المشروع وتقليل حجم الشيفرة البرمجية التي يجب أن تُراجَع في المستودع.
 
== إصدارات المنصات (Platform Versioning) ==
 
=== حفظ المنصات ===
يمكنك حفظ منصة معينة عبر الأمر التالي:<syntaxhighlight lang="console">
يمكنك حفظ منصة معينة عبر الأمر التالي:<syntaxhighlight lang="console">
$ cordova platform add <platform[@<version>] | directory | git_url>
$ cordova platform add <platform[@<version>] | directory | git_url>


</syntaxhighlight>بعد تنفيذ الأمر أعلاه، سيبدو الملف <code>config.xml</code> الناتج على النحو التالي:<syntaxhighlight lang="xml">
</syntaxhighlight>بعد تنفيذ الأمر أعلاه، سيبدو الملف <code>package.json</code> الناتج على النحو التالي:<syntaxhighlight lang="json">
<?xml version='1.0' encoding='utf-8'?>
"cordova": {
    ...
  "platforms": [
    <engine name="android" spec="~4.0.0" />
    "android"
    ...
  ]
</xml>
},
</syntaxhighlight>أما ملف <code>package.json</code> الناتج فهكذا سيبدو:<syntaxhighlight lang="json">
"dependencies": {
"cordova": {"platforms": ["android"]},"dependencies": {"cordova-android": "^4.0.0"}
  "cordova-android": "^8.0.0",
 
}
</syntaxhighlight>
</syntaxhighlight>تمنع الراية "<code>‎--nosave</code>" إضافة وحذف المنصات المحددة من الملف <code>package.json</code>. لمنع حفظ منصة، استخدم الأمر التالي:<syntaxhighlight lang="json">
 
cordova platform add <platform[@<version>] | directory | git_url> --nosave
==== أمثلة ====
* '<code>cordova platform add android</code>' => تسترد النسخة المثبتة من منصة الأندرويد، وتضيفها إلى المشروع، ثم تُحدّث الملفين <code>config.xml</code> و <code>package.json</code>.
* '<code>cordova platform add android@3.7.0</code>' => تسترد منصة الأندرويد ذات الإصدار 3.7.0 عبر مدير الحُزم npm، ثم تضيفها إلى المشروع، ثم تُحدّث الملفين <code>config.xml</code> و <code>package.json</code>.
* '<code>cordova platform add <nowiki>https://github.com/apache/cordova-android.git</nowiki></code>' => يثّبّت مدير الحُزم npm منصة كوردوفا-أندرويد (cordova-android) المحددة من مستودع git، ثم تضيف منصة الأندرويد إلى المشروع، ثم تُحدّث الملفين <code>config.xml</code> و<code>package.json</code>، وتحدد نسختها من عنوان مستودع git ‏(git-url‏).
* "<code>cordova platform add C:/path/to/android/platform</code> '=> تسترد منصة الأندرويد من المجلد المحدد، ثم تضيفها إلى المشروع، ثم تُحدّث الملفين <code>config.xml</code> و <code>package.json</code> ثم تُؤشّر (points) إلى ذلك الملف.
* '<code>cordova platform add android --nosave</code>' => تسترد إصدار منصة الأندرويد المثبتة، وتضيفها إلى المشروع، بيْد أنها لا تضيفها إلى الملفين <code>config.xml</code> أو <code>package.json</code>.
* '<code>cordova platform remove android --nosave</code>' => تزيل منصة الأندرويد من المشروع، ولكن لا تزيله من الملفين <code>config.xml</code> أو <code>package.json</code>.
 
== الحفظ الجماعي للمنصات في مشروع قائم (Mass saving platforms on an existing project) ==
إذا كان لديك مشروع موجود مسبقًا، وأردت حفظ جميع المنصات المضافة حاليًا إلى مشروعك، فيمكنك استخدام:<syntaxhighlight lang="console">
$ cordova platform save
 
</syntaxhighlight>


=== تحديث وإزالة المنصات ===
</syntaxhighlight>إليك بعض الأمثلة:
من الممكن تحديث أو حذف المنصات من الملفين <code>config.xml</code> و <code>package.json</code> عبر الأمرين "<code>cordova platform update</code>" و "<code>cordova platform remove</code>":<syntaxhighlight lang="console">
*'<code>cordova platform add android</code>' => تسترد النسخة المثبتة من منصة الأندرويد، وتضيفها إلى المشروع، ثم تُحدّث الملفّ <code>package.json</code>.
$ cordova platform update <platform[@<version>] | directory | git_url> --save
*'<code>cordova platform add android@7.1.4</code>' => تسترد منصة الأندرويد ذات الإصدار <code>7.1.4</code> عبر مدير الحُزم npm، ثم تضيفها إلى المشروع، ثم تُحدّث الملف <code>package.json</code>.
$ cordova platform remove <platform>
*'<code>cordova platform add <nowiki>https://github.com/apache/cordova-android.git</nowiki></code>' أو '<code>cordova platform add <nowiki>https://github.com/apache/cordova-android</nowiki></code>' أو '<code>cordova platform add github:apache/cordova-android</code>' => يثّبّت مدير الحُزم npm منصة كوردوفا-أندرويد (cordova-android) المحددة من مستودع git، ثم يضيف منصة الأندرويد إلى المشروع، ثم يحدّث الملف<code>package.json</code>.
</syntaxhighlight>
*"<code>cordova platform add C:/path/to/android/platform</code> '=> تسترد منصة الأندرويد من المجلد المحدد، ثم تضيفها إلى المشروع، ثم تُحدّث الملف <code>package.json</code>.
*'<code>cordova platform add android --nosave</code>' => تسترد إصدار منصة الأندرويد المثبتة، وتضيفها إلى المشروع، بيْد أنها لا تضيفه إلى الملف <code>package.json</code>.
===تحديث وإزالة المنصات===
من الممكن تحديث أو حذف المنصات من الملفين [[Cordova/config ref|<code>config.xml</code>]] و <code>package.json</code>. نفذ الأمر  التالي لتحديث منصة: <syntaxhighlight lang="console">
cordova platform update <platform[@<version>] | directory | git_url>


==== أمثلة ====
</syntaxhighlight>لإزالة منصة، نفذ أح الأمر ين التاليين:<syntaxhighlight lang="console">
* "<code>cordova platform update android --save</code>" => فضلًا عن تحديث منصة الأندرويد إلى الإصدار المثبت، فستحدِّث هذه التعليمة مدخل <code>config.xml</code>
cordova platform remove <platform>
* "<code>cordova platform update android@3.8.0 --save</code>" => فضلًا عن تحديث منصة الأندرويد إلى الإصدار 3.8.0، ستحدث هذه التعليمة مدخل <code>config.xml</code>
cordova platform rm <platform>
* "<code>cordova platform update /path/to/android/platform --save</code>' => إضافة إلى تحديث منصة الأندرويد إلى الإصدار الموجود في المجلد المحدد، ستحدث هذه التعليمة المدخل <code>config.xml</code>
</syntaxhighlight>اطلع على الأمثلة التالية:
* <code>'cordova platform remove android'</code> => تزيل منصة الأندرويد من المشروع، وتحذف مدخلاته من الملفين <code>config.xml</code> و <code>package.json</code>.
*"<code>cordova platform update android</code>" => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار المثبت، تُحدِّث هذه التعليمة أيضًا المدخلة في الملف <code>package.json</code>.
*"<code>cordova platform update android@3.8.0</code>" => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار 3.8.0، ستحدث هذه التعليمة المدخلة في الملف <code>package.json</code>.
*"<code>cordova platform update /path/to/android/platform</code>' => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار الموجود في المجلد المحدد، ستحدث هذه التعليمة المدخلة في الملف <code>package.json</code>.
*<code>'cordova platform remove android'</code> => تزيل منصة الأندرويد من المشروع، وتحذف مدخلاته من الملف <code>package.json</code>.
'''ملاحظة''': إذا كان تعريف المنصة موجودًا في الملف <code>config.xml</code> من إصدار سابق من Cordova CLI ، فسيُزال أيضًا من <code>config.xml</code>.


== استعادة المنصات (Restoring platforms) ==
* <code>'cordova platform remove android'</code> => تزيل منصة الأندرويد من المشروع، ولكن لا تحذفها من الملف <code>package.json</code>.
تُستعاد المنصات تلقائيًا من الملفين <code>package.json</code> و <code>config.xml</code> عند إجراء الأمر '<code>cordova prepare</code>'. يُفترض بعد إجراء ذلك الأمر أن يحتوي الملفان <code>package.json</code> و <code>config.xml</code> على منصات وإصدارات متطابقة.


إن أضفت منصة دون تحديد الإصدار أو المجلد أو عنوان مستودع git، فسيُثبَّت الإصدار الموجود في الملف <code>package.json</code> أو <code>config.xml</code> في حال العثور عليه. وفي حالة وجود تعارض، يُعطى <code>package.json</code> الأسبقية على <code>config.xml</code>.
===استعادة المنصات (Restoring platforms)===
تُستعاد المنصات تلقائيًا من الملفين <code>package.json</code> (و [[Cordova/config ref|<code>config.xml</code>]]) عند تنفيذ الأمر '<code>cordova prepare</code>'. في حال تعريف منصة في كلا الملفين،  فالأولوية للتعريف الموجود في الملف <code>package.json</code>.


=== أمثلة ===
بعد تنفيذ عملية التحضير (<code>prepare</code>)، فأي منصة مُستعادة من <code>config.xml</code> ستحدّث الملف <code>package.json</code> ليعكس القيم المأخوذة من <code>config.xml</code>.


==== <u>مثال 1</u> ====
إن أضفت منصة دون تحديد الإصدار أو المجلد أو عنوان مستودع جيت (<code><version | folder | git_url></code>)، فسيُثبَّت الإصدار الموجود في الملف <code>package.json</code> أو [[Cordova/config ref|<code>config.xml</code>]] في حال العثور عليه. وفي حالة وجود تعارض، يُعطى الملف <code>package.json</code> الأسبقية على الملف [[Cordova/config ref|<code>config.xml</code>]].
لنفترض أن ملف <code>config.xml</code> يحتوي على المدخلات التالية:<syntaxhighlight lang="xml">
====أمثلة====
لنفترض أن الملف <code>config.xml</code> يحتوي على المدخلات التالية:<syntaxhighlight lang="xml">
<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
     ...
     ...
     <engine name="android" spec="3.7.0" />
     <engine name="android" spec="7.1.4" />
     ...
     ...
</xml>
</xml>
</syntaxhighlight>إذا أجريْت الأمر '<code>cordova platform add android</code>' (دون أن تحدد الإصدار أو المجلد أو عنوان مستودع git)، فستُثبّت المنصة 'android@3.7.0' (يُستخلص الإصدار من <code>config.xml</code>).
</syntaxhighlight>إذا نُفِّذ الأمر '<code>cordova platform add android</code>' (دون تحديد الإصدار أو المجلد أو عنوان مستودع git)، فستُثبّت المنصة '<code>android@7.1.4</code>'.


==== <u>مثال 2</u> ====
المثال التالي يوضح قواعد الأسبقية في استعادة المنصات. لنفترض أن الملف [[Cordova/config ref|<code>config.xml</code>]] يحتوي على المنصة والإصدار التاليين:<syntaxhighlight lang="xml">
مثال يوضح قواعد الأسبقية في استعادة المنصات.
<engine name="android" spec=“7.4.1” />


لنفترض أن ملف <code>config.xml</code> يحتوي على المنصة والإصدار التاليين:<syntaxhighlight lang="xml">
</syntaxhighlight>ولنفترض أن الملف <code>package.json</code> يحتوي على المنصة والإصدار التاليين:<syntaxhighlight lang="json">
<engine name="android" spec=“1.0.0” ></div>
"cordova": {
 
  "platforms": [
</syntaxhighlight>ولنفترض أن <code>package.json</code> يحتوي المنصة والإصدار التاليين:<syntaxhighlight lang="json">
    "android"
"cordova": {"platforms": ["android"]},"dependencies": {"cordova-android": "4.0.0"}
  ]
 
},
</syntaxhighlight>عند إجراء الأمر <code>prepare</code>، تُعطى محتويات <code>package.json</code> الأسبقية، وسيُحدّث كلا الملفين <code>config.xml</code> و <code>package.json</code> حتى يشيرا إلى نفس المنصات والمتغيرات. لاحظ كيف استُبدل في الملف <code>config.xml</code> الإصدار 4.0.0 (من <code>package.json</code>) بالإصدار (1.0.0).
"dependencies": {
 
  "cordova-android": "^8.0.0"
بعد إجراء الأمر '<code>cordova prepare</code>'، سيبدو ملف <code>config.xml</code> الناتج كالتالي:<syntaxhighlight lang="xml">
}
<engine name="android" spec=“4.0.0” ></div>
</syntaxhighlight>عند تنفيذ الأمر <code>prepare</code>، تُعطى محتويات الملف <code>package.json</code> الأسبقية على [[Cordova/config ref|<code>config.xml</code>]]، وسيُثبت الإصدار <code>4.0.0</code>.
 
==إصدارات الإضافات (Plugin Versioning)==
</syntaxhighlight>فيما سيبدو ملف <code>package.json</code> الناتج كالتالي:<syntaxhighlight lang="json">
أوامر الإضافة هي مرآة لأوامر المنصة.
"cordova": {"platforms": ["android",]},"dependencies": {"cordova-android": "4.0.0"}
===حفظ الإضافات===
 
لحفظ إضافة، يمكنك تنفيذ الأمر التالي:<syntaxhighlight lang="console">
</syntaxhighlight>
 
== إصدارات الإضافات (Plugin Versioning) ==
(أوامر الإضافة هي مرآة لأوامر المنصة)
 
=== حفظ الإضافات ===
لحفظ إضافة، يمكنك إجراء الأمر التالي:<syntaxhighlight lang="console">
$ cordova plugin add <plugin[@<version>] | directory | git_url>
$ cordova plugin add <plugin[@<version>] | directory | git_url>


</syntaxhighlight>بعد إجراء الأمر أعلاه، سيبدو ملف <code>config.xml</code> الناتج كالتالي:<syntaxhighlight lang="xml">
</syntaxhighlight>بعد تنفيذ الأمر أعلاه، سيبدو الملف <code>package.json</code> الناتج كالتالي:<syntaxhighlight lang="json">
<?xml version='1.0' encoding='utf-8'?>
"cordova": {
    ...
  "plugins": [
    <plugin name="cordova-plugin-console" spec="~1.0.0" />
    "cordova-plugin-device"
    ...
  ]
</xml>
},
</syntaxhighlight>وسيبدو ملف <code>package.json</code> الناتج كالتالي:<syntaxhighlight lang="json">
"devDependencies": {
"cordova": {"plugins": ["cordova-plugin-console"]},"dependencies": {"cordova-plugin-console": "^1.0.0"}
  "cordova-plugin-device": "^1.0.0"
 
}
</syntaxhighlight>تمنع الراية "‎<code>--nosave</code>" إضافة وحذف الإضافات المحددة من الملفين <code>config.xml</code> و <code>package.json</code>.
</syntaxhighlight>تمنع الراية "‎<code>--nosave</code>" إضافة وحذف الإضافات المحددة من الملف <code>package.json</code>. لمنع حفظ إضافة معينة، يمكنك تنفيذ الأمر التالي:<syntaxhighlight lang="console">
 
لمنع حفظ إضافة معينة، يمكنك إجراء الأمر التالي:<syntaxhighlight lang="console">
$ cordova plugin add <plugin[@<version>] | directory | git_url> --nosave
$ cordova plugin add <plugin[@<version>] | directory | git_url> --nosave


</syntaxhighlight>
</syntaxhighlight>إليك بعض الأمثلة التالية:
 
*'<code>'''cordova plugin add cordova-plugin-device'''</code>' => يسترد هذا الأمر النسخة المثبتة من الإضافة <code>cordova-plugin-device</code>، ثم يضيفها إلى المشروع، ثم يُحدِّث الملف <code>package.json</code>.
==== أمثلة ====
*'<code>'''cordova plugin add cordova-plugin-device@2.0.1'''</code>' => يسترد الإضافة <code>cordova-plugin-device</code> ذات الإصدار <code>2.0.1</code> عبر مدير الحُزم npm، ويضيفها إلى المشروع، ثم يُحدّث الملف <code>package.json</code>.
* '<code>cordova plugin add cordova-plugin-console</code>' => يسترد هذا الأمر النسخة المثبتة من الإضافة <code>console</code>، ثم يضيفها إلى المشروع، ثم يُحدِّث الملفين <code>config.xml</code> و <code>package.json</code>.
*<code>'<nowiki/>'''cordova plugin add <nowiki>https://github.com/apache/cordova-plugin-device</nowiki>'''</code>' أو ''''<code>cordova plugin add github:apache/cordova-plugin-device</code>'''<nowiki/>'  => يُثبت مديرُ الحزم npm الإضافةَ <code>cordova-plugin-device</code> من مستودع git، ويضيفها إلى المشروع، ثم يُحدّث الملف <code>package.json</code>.
* '<code>cordova plugin add cordova-plugin-console@0.2.13</code>' => يسترد إضافة الأندرويد ذات الإصدار 0.2.13 عبر مدير الحُزم npm، ويضيفها إلى المشروع، ثم يُحدّث الملفين <code>config.xml</code> و <code>package.json</code>.
*'<code>cordova plugin add C: / path / to / console / plugin</code>' => يستعيد الإضافة <code>cordova-plugin-device</code> من المجلد المحدد، ويضيفها إلى المشروع، ثم يُحدّث الملف<code>package.json</code>.
* <code>'plugin cordova add <nowiki>https://github.com/apache/cordova-plugin-console.git</nowiki></code>' => يُثبت مديرُ الحزم npm الإضافةَ المحددة من مستودع git، ويضيفها إلى المشروع، ثم يُحدّث الملفين <code>config.xml</code> و <code>package.json</code> ويستخلص رقم الإصدار من عنوان مستودع git ‏(git-url) المحدد.
===الحفظ الجماعي للإضافات في مشروع قائم===
* '<code>cordova plugin add C: / path / to / console / plugin</code>' => يستعيد الإضافة <code>console</code> من المجلد المحدد، ويضيفها إلى المشروع، ثم يُحدّث <code>config.xml</code> و <code>package.json</code> ويشير (points) إلى المجلد.
إن كان لديك مشروع موجود مسبقًا، وكنت ترغب في حفظ جميع الإضافات المضافة حاليًا إلى المشروع، فيمكنك استخدام الأمر التالي:<syntaxhighlight lang="console">
 
=== الحفظ الجماعي للإضافات في مشروع موجود (Mass saving plugins on an existing project) ===
إن كان لديك مشروع موجود مسبقًا، وكنت ترغب في حفظ جميع الإضافات المضافة حاليًا إلى المشروع، فيمكنك استخدام:<syntaxhighlight lang="console">
$ cordova plugin save
$ cordova plugin save


</syntaxhighlight>
</syntaxhighlight>
===إزالة الإضافات===
من الممكن حذف الإضافات من الملفين [[Cordova/config ref|<code>config.xml</code>]] و <code>package.json</code> عبر استعمال أحد الأمرين التاليين:<syntaxhighlight lang="console">
cordova plugin remove <plugin>
cordova plugin rm <plugin>
</syntaxhighlight>انطر مثلًا إلى الأمر التالي:
*'<code>'''cordova plugin remove cordova-plugin-device'''</code>' => يزيل الإضافة <code>cordova-plugin-devic</code>e من المشروع ويحذف مدخلاتها من الملف <code>package.json</code>.
'''ملاحظة''': إذا كان تعريف الإضافة موجودًا في الملف <code>config.xml</code> من إصدار سابق من سطر أوامر كوردوفا ، فسيُزال أيضًا من <code>config.xml</code>.


=== إزالة الإضافات ===
===استعادة الإضافات (Restoring plugins)===
من الممكن حذف الإضافات من الملفين <code>config.xml</code> و <code>package.json</code> عبر الأمر '<code>cordova plugin remove</code>':<syntaxhighlight lang="console">
تٌستعاد الإضافات تلقائيًا من الملفين <code>package.json</code> و [[Cordova/config ref|<code>config.xml</code>]] عند تنفيذ الأمر '<code>cordova prepare</code>'. وفي حال كانت الإضافة مُعرَّفة في كلا الملفين، فستكون الأولوية للملف <code>package.json</code>.
$ cordova plugin remove <plugin>


</syntaxhighlight>
بعد تنفيذ الأمر <code>prepare</code>، فأي إضافة مُستعادة من [[Cordova/config ref|<code>config.xml</code>]] ستُحدِّث الملف <code>package.json</code> ليعكس القيم المأخوذة من [[Cordova/config ref|<code>config.xml</code>]].


==== <u>مثال</u> ====
إن أضفت إضافة دون تحديد الإصدار أو المجلد أو عنوان المستودع git، فسيُستخلص الإصدار المراد تثبيته من الملف <code>package.json</code> أو [[Cordova/config ref|<code>config.xml</code>]]، وفي حال وجود تعارض، سيُعطى الملف <code>package.json</code> الأسبقية على [[Cordova/config ref|<code>config.xml</code>]].
* '<code>cordova plugin remove cordova-plugin-console</code>' => يزيل الإضافة <code>console</code> من المشروع ويحذف مدخلاتها من الملفين <code>config.xml</code> و <code>package.json</code>.
====أمثلة====
 
لنفترض أن الملف <code>config.xml</code> يحتوي على المدخلات التالية:<syntaxhighlight lang="xml">
=== استعادة الإضافات (Restoring plugins) ===
تٌستعاد الإضافات تلقائيًا من الملفين <code>package.json</code> و <code>config.xml</code> عند إجراء الأمر '<code>cordova prepare</code>'.
 
يُفترض بعد إجراء الأمر prepare أن يحتوي الملفان package.json و config.xml على إضافات وإصدارات متطابقة.
 
إن أضفت إضافة دون تحديد الإصدار أو المجلد أو عنوان المستودع git، فسيُستخلص الإصدار المراد تثبيته من الملف <code>package.json</code> أو <code>config.xml</code>، في حال العثور عليه. وفي حال وجود تعارض، سيُعطى الملف <code>package.json</code> الأسبقية على <code>config.xml</code>.
 
==== أمثلة ====
 
===== <u>مثال 1</u> =====
لنفترض أن ملف <code>config.xml</code> يحتوي على المدخلات التالية:<syntaxhighlight lang="xml">
<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
     ...
     ...
     <plugin name="cordova-plugin-console" spec="0.2.11" />
     <plugin name="cordova-plugin-device" spec="2.0.1" />
     ...
     ...
</ xml>
</ xml>
</syntaxhighlight>إذا قمت بإجراء الأمر "<code>Cordova plugin add cordova-plugin-console</code>" (دون أن تحدّد الإصدار أو المجلد أو عنوان مستودع git)، فستُثبت الإضافة "<code>cordova-plugin-console@0.2.11</code>" (يُستخلص الإصدار من <code>config.xml</code>).
</syntaxhighlight>إذا نفَّذت الأمر "<code>cordova plugin add cordova-plugin-device</code>" دون أت تحدّد الإصدار أو المجلد أو عنوان مستودع git، فستُثبت الإضافة "<code>cordova-plugin-device@2.0.1</code>".


===== <u>مثال 2</u> =====
يوضح المثال التالي قواعد الأسبقية في استعادة الإضافات.
مثال يوضح قواعد الأسبقية في استعادة الإضافات.


لنفترض أن الملف <code>config.xml</code> يحتوي على الإضافة والإصدار التاليين:<syntaxhighlight lang="xml">
لنفترض أن الملف [[Cordova/config ref|<code>config.xml</code>]] يحتوي على الإضافة والإصدار التاليين:<syntaxhighlight lang="xml">
<plugin name="cordova-plugin-splashscreen"></div>
<plugin name="cordova-plugin-splashscreen"></div>


</syntaxhighlight>ولنفترض أن الملف <code>package.json</code> يحتوي على الإضافة والإصدار التاليين:<syntaxhighlight lang="json">
</syntaxhighlight>ولنفترض أن الملف <code>package.json</code> يحتوي على الإضافة والإصدار التاليين:<syntaxhighlight lang="json">
"cordova": {"plugins": {"cordova-plugin-splashscreen" : {} } },"dependencies": {"cordova-plugin-splashscreen": "1.0.0"}
"cordova": {
 
  "plugins": [
</syntaxhighlight>عند إجراء الأمر <code>prepare</code>، تُعطى الأسبقية لمحتويات <code>package.json</code>، ويُحدّث الملفان <code>config.xml</code> و <code>package.json</code> بحيث يحتويان على إضافات ومتغيرات متطابقة. لاحظ كيف أُضيف الإصدار الموجود في <code>package.json‏</code> (1.0) إلى الملف <code>config.xml</code>.
    "cordova-plugin-splashscreen"
 
  ]
بعد إجراء الأمر '<code>cordova prepare</code>'، سيبدو الملف <code>config.xml</code> الناتج كالتالي:<syntaxhighlight lang="xml">
},
<plugin name="cordova-plugin-splashscreen" spec="1.0.0"></div>
"devDependencies": {
 
  "cordova-plugin-splashscreen": "1.0.0"
</syntaxhighlight>وسيبدو ملف <code>package.json</code> كالتالي:<syntaxhighlight lang="json">
}
"cordova": {"plugins": {"cordova-plugin-splashscreen" : {} } },"dependencies": {"cordova-plugin-splashscreen": "1.0.0"}
</syntaxhighlight>عند تنفيذ الأمر <code>prepare</code>، تُعطى الأسبقية لمحتويات الملف <code>package.json</code>، ويُثبت الإصدار <code>1.0</code>.
 
== انظر أيضًا ==
</syntaxhighlight>
* [[Cordova/android upgrade|ترقية أندرويد]].
* [[Cordova/plugins|دليل تطوير الإضافات]].
* [[Cordova/privacy|إدارة الخصوصية]].


== مصادر ==
==مصادر==
* [https://cordova.apache.org/docs/en/latest/platform_plugin_versioning_ref/index.html صفحة إدارة إصدارات المنصات والإضافات في توثيق كوردوفا الرسمي.]
*[https://cordova.apache.org/docs/en/latest/platform_plugin_versioning_ref/index.html صفحة Platforms and Plugins Version Management في توثيق كوردوفا الرسمي.]

المراجعة الحالية بتاريخ 15:58، 30 نوفمبر 2020

تتيح كوردوفا إمكانية حفظ واستعادة المنصات والإضافات. تسمح هذه الميزة للمطورين بحفظ تطبيقاتهم عند حالة سابقة واستعادتها لاحقًا دون الحاجة إلى مراجعة كل التعليمات في الشيفرة المصدرية للمنصة أو الإضافة.

عند إضافة منصة أو إضافة، ستُحفظ تفاصيل منصة التطبيق وإصدارات الإضافة تلقائيًا في الملف package.json. من الممكن أن تضيف منصة أو إضافة عن طريق تعديل أحد الملف package.json مباشرةًَ، على افتراض أنك على علمٍ بالوسوم والصيغ الصحيحة. من جهة أخرى، لا يمكن إزالة الإضافات أو المنصات بهذه الطريقة. والطريقة الموصى بها لفعل ذلك هي باستخدام سطر أوامر كوردوفا عبر كتابة الأمرين cordova plugin add|remove ...‎ و cordova platform add | remove ...‎ لتجنب أية مشاكل متعلقة بالمزامنة.

تُحدَّث "الاستعادة" (restore) تلقائيًا عند تنفيذ الأمر "cordova prepare"، عبر استخدام المعلومات المحفوظة مسبقًا في الملفين config.xml و package.json.

القدرة على الحفظ والاستعادة مفيدة جدًا للتطبيقات التي يعمل عليها فريق كبير، بحيث يركز كل عضو في الفريق على منصة أو إضافة معينة. تسهّل هذه الميزة تشارك المشروع وتقليل حجم الشيفرة البرمجية التي يجب أن يُتحقق منها في المستودع.

إصدارات المنصات

حفظ المنصات

يمكنك حفظ منصة معينة عبر الأمر التالي:

$ cordova platform add <platform[@<version>] | directory | git_url>

بعد تنفيذ الأمر أعلاه، سيبدو الملف package.json الناتج على النحو التالي:

"cordova": {
  "platforms": [
    "android"
  ]
},
"dependencies": {
  "cordova-android": "^8.0.0",
}

تمنع الراية "‎--nosave" إضافة وحذف المنصات المحددة من الملف package.json. لمنع حفظ منصة، استخدم الأمر التالي:

cordova platform add <platform[@<version>] | directory | git_url> --nosave

إليك بعض الأمثلة:

  • 'cordova platform add android' => تسترد النسخة المثبتة من منصة الأندرويد، وتضيفها إلى المشروع، ثم تُحدّث الملفّ package.json.
  • 'cordova platform add android@7.1.4' => تسترد منصة الأندرويد ذات الإصدار 7.1.4 عبر مدير الحُزم npm، ثم تضيفها إلى المشروع، ثم تُحدّث الملف package.json.
  • 'cordova platform add https://github.com/apache/cordova-android.git' أو 'cordova platform add https://github.com/apache/cordova-android' أو 'cordova platform add github:apache/cordova-android' => يثّبّت مدير الحُزم npm منصة كوردوفا-أندرويد (cordova-android) المحددة من مستودع git، ثم يضيف منصة الأندرويد إلى المشروع، ثم يحدّث الملفpackage.json.
  • "cordova platform add C:/path/to/android/platform '=> تسترد منصة الأندرويد من المجلد المحدد، ثم تضيفها إلى المشروع، ثم تُحدّث الملف package.json.
  • 'cordova platform add android --nosave' => تسترد إصدار منصة الأندرويد المثبتة، وتضيفها إلى المشروع، بيْد أنها لا تضيفه إلى الملف package.json.

تحديث وإزالة المنصات

من الممكن تحديث أو حذف المنصات من الملفين config.xml و package.json. نفذ الأمر التالي لتحديث منصة:

cordova platform update <platform[@<version>] | directory | git_url>

لإزالة منصة، نفذ أح الأمر ين التاليين:

cordova platform remove <platform>
cordova platform rm <platform>

اطلع على الأمثلة التالية:

  • "cordova platform update android" => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار المثبت، تُحدِّث هذه التعليمة أيضًا المدخلة في الملف package.json.
  • "cordova platform update android@3.8.0" => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار 3.8.0، ستحدث هذه التعليمة المدخلة في الملف package.json.
  • "cordova platform update /path/to/android/platform' => بالإضافة إلى تحديث منصة الأندرويد إلى الإصدار الموجود في المجلد المحدد، ستحدث هذه التعليمة المدخلة في الملف package.json.
  • 'cordova platform remove android' => تزيل منصة الأندرويد من المشروع، وتحذف مدخلاته من الملف package.json.

ملاحظة: إذا كان تعريف المنصة موجودًا في الملف config.xml من إصدار سابق من Cordova CLI ، فسيُزال أيضًا من config.xml.

  • 'cordova platform remove android' => تزيل منصة الأندرويد من المشروع، ولكن لا تحذفها من الملف package.json.

استعادة المنصات (Restoring platforms)

تُستعاد المنصات تلقائيًا من الملفين package.jsonconfig.xml) عند تنفيذ الأمر 'cordova prepare'. في حال تعريف منصة في كلا الملفين، فالأولوية للتعريف الموجود في الملف package.json.

بعد تنفيذ عملية التحضير (prepare)، فأي منصة مُستعادة من config.xml ستحدّث الملف package.json ليعكس القيم المأخوذة من config.xml.

إن أضفت منصة دون تحديد الإصدار أو المجلد أو عنوان مستودع جيت (<version | folder | git_url>)، فسيُثبَّت الإصدار الموجود في الملف package.json أو config.xml في حال العثور عليه. وفي حالة وجود تعارض، يُعطى الملف package.json الأسبقية على الملف config.xml.

أمثلة

لنفترض أن الملف config.xml يحتوي على المدخلات التالية:

<?xml version='1.0' encoding='utf-8'?>
    ...
    <engine name="android" spec="7.1.4" />
    ...
</xml>

إذا نُفِّذ الأمر 'cordova platform add android' (دون تحديد الإصدار أو المجلد أو عنوان مستودع git)، فستُثبّت المنصة 'android@7.1.4'. المثال التالي يوضح قواعد الأسبقية في استعادة المنصات. لنفترض أن الملف config.xml يحتوي على المنصة والإصدار التاليين:

<engine name="android" spec=“7.4.1” />

ولنفترض أن الملف package.json يحتوي على المنصة والإصدار التاليين:

"cordova": {
  "platforms": [
    "android"
  ]
},
"dependencies": {
  "cordova-android": "^8.0.0"
}

عند تنفيذ الأمر prepare، تُعطى محتويات الملف package.json الأسبقية على config.xml، وسيُثبت الإصدار 4.0.0.

إصدارات الإضافات (Plugin Versioning)

أوامر الإضافة هي مرآة لأوامر المنصة.

حفظ الإضافات

لحفظ إضافة، يمكنك تنفيذ الأمر التالي:

$ cordova plugin add <plugin[@<version>] | directory | git_url>

بعد تنفيذ الأمر أعلاه، سيبدو الملف package.json الناتج كالتالي:

"cordova": {
  "plugins": [
    "cordova-plugin-device"
  ]
},
"devDependencies": {
  "cordova-plugin-device": "^1.0.0"
}

تمنع الراية "‎--nosave" إضافة وحذف الإضافات المحددة من الملف package.json. لمنع حفظ إضافة معينة، يمكنك تنفيذ الأمر التالي:

$ cordova plugin add <plugin[@<version>] | directory | git_url> --nosave

إليك بعض الأمثلة التالية:

  • 'cordova plugin add cordova-plugin-device' => يسترد هذا الأمر النسخة المثبتة من الإضافة cordova-plugin-device، ثم يضيفها إلى المشروع، ثم يُحدِّث الملف package.json.
  • 'cordova plugin add cordova-plugin-device@2.0.1' => يسترد الإضافة cordova-plugin-device ذات الإصدار 2.0.1 عبر مدير الحُزم npm، ويضيفها إلى المشروع، ثم يُحدّث الملف package.json.
  • 'cordova plugin add https://github.com/apache/cordova-plugin-device' أو 'cordova plugin add github:apache/cordova-plugin-device' => يُثبت مديرُ الحزم npm الإضافةَ cordova-plugin-device من مستودع git، ويضيفها إلى المشروع، ثم يُحدّث الملف package.json.
  • 'cordova plugin add C: / path / to / console / plugin' => يستعيد الإضافة cordova-plugin-device من المجلد المحدد، ويضيفها إلى المشروع، ثم يُحدّث الملفpackage.json.

الحفظ الجماعي للإضافات في مشروع قائم

إن كان لديك مشروع موجود مسبقًا، وكنت ترغب في حفظ جميع الإضافات المضافة حاليًا إلى المشروع، فيمكنك استخدام الأمر التالي:

$ cordova plugin save

إزالة الإضافات

من الممكن حذف الإضافات من الملفين config.xml و package.json عبر استعمال أحد الأمرين التاليين:

cordova plugin remove <plugin>
cordova plugin rm <plugin>

انطر مثلًا إلى الأمر التالي:

  • 'cordova plugin remove cordova-plugin-device' => يزيل الإضافة cordova-plugin-device من المشروع ويحذف مدخلاتها من الملف package.json.

ملاحظة: إذا كان تعريف الإضافة موجودًا في الملف config.xml من إصدار سابق من سطر أوامر كوردوفا ، فسيُزال أيضًا من config.xml.

استعادة الإضافات (Restoring plugins)

تٌستعاد الإضافات تلقائيًا من الملفين package.json و config.xml عند تنفيذ الأمر 'cordova prepare'. وفي حال كانت الإضافة مُعرَّفة في كلا الملفين، فستكون الأولوية للملف package.json.

بعد تنفيذ الأمر prepare، فأي إضافة مُستعادة من config.xml ستُحدِّث الملف package.json ليعكس القيم المأخوذة من config.xml.

إن أضفت إضافة دون تحديد الإصدار أو المجلد أو عنوان المستودع git، فسيُستخلص الإصدار المراد تثبيته من الملف package.json أو config.xml، وفي حال وجود تعارض، سيُعطى الملف package.json الأسبقية على config.xml.

أمثلة

لنفترض أن الملف config.xml يحتوي على المدخلات التالية:

<?xml version='1.0' encoding='utf-8'?>
    ...
    <plugin name="cordova-plugin-device" spec="2.0.1" />
    ...
</ xml>

إذا نفَّذت الأمر "cordova plugin add cordova-plugin-device" دون أت تحدّد الإصدار أو المجلد أو عنوان مستودع git، فستُثبت الإضافة "cordova-plugin-device@2.0.1".

يوضح المثال التالي قواعد الأسبقية في استعادة الإضافات.

لنفترض أن الملف config.xml يحتوي على الإضافة والإصدار التاليين:

<plugin name="cordova-plugin-splashscreen"></div>

ولنفترض أن الملف package.json يحتوي على الإضافة والإصدار التاليين:

"cordova": {
  "plugins": [
    "cordova-plugin-splashscreen"
  ]
},
"devDependencies": {
  "cordova-plugin-splashscreen": "1.0.0"
}

عند تنفيذ الأمر prepare، تُعطى الأسبقية لمحتويات الملف package.json، ويُثبت الإصدار 1.0.

انظر أيضًا

مصادر