هل تبحث عن البرنامج المساعد الناخر؟ يرجى زيارة تجميع الناخر.
(لاحظ أن موقع الويب الحالي assemble.io مخصص لـ grunt-assemble. نشكرك على سعة صدرك أثناء عملنا على تحديث الموقع بوثائق لأحدث تجميع) .
(انقر فوق الأقسام التالية لتوسيعها)
(TOC تم إنشاؤه بواسطة الفعل باستخدام تخفيض السعر-toc)
التجميع عبارة عن أداة سطر أوامر وإطار عمل للمطورين للنماذج الأولية السريعة وإنشاء المواقع الثابتة وغير ذلك الكثير.
يتم استخدام التجميع من قبل آلاف المطورين والفرق في أكثر من 170 دولة! فيما يلي بعض الأمثلة على المواقع التي تم إنشاؤها باستخدام التجميع:
هل تم إنشاء موقع الويب الخاص بك أو مدونتك أو مشروعك باستخدام التجميع؟ يرجى إعلامنا بذلك!
يمكن استخدام التجميع بشكل مستقل، ولكنه يصبح أكثر قوة عند استخدامه مع المكتبات التالية:
وفيما يلي عدد قليل من الميزات التي تجمع العروض:
أضف تجميع devDependencies
الخاصة بمشروعك باستخدام npm:
$ npm install -D assemble
يجب أن تكون الآن قادرًا على تشغيل التجميع مباشرة (باستخدام node assemblefile.js
وما إلى ذلك) أو باستخدام البرامج النصية npm
. على سبيل المثال، أضف ما يلي إلى package.json:
{
"scripts" : {
"build" : " assemble "
}
}
ثم اركض
$ npm run build
يمكنك أيضًا تجميع واجهة سطر الأوامر (CLI) على مستوى العالم، والتي تضيف أمر assemble
إلى مسار النظام الخاص بك، مما يسمح بتشغيله من أي دليل.
$ npm install --global assemble
لاحظ أنه حتى إذا تم تثبيت التجميع عالميًا، فمن الممارسات الجيدة تثبيته محليًا في كل مشروع لضمان حماية مشاريعك ضد أي تغييرات محتملة قد تحدث أثناء التجميع بين دورات التطوير.
لاستخدام سطر الأوامر الخاص بـ assemble، ستحتاج إلى إضافة assemblefile.js
إلى مشروعك. أسرع طريقة للقيام بذلك هي تشغيل الأمر التالي:
$ assemble
في حالة عدم وجود assemblefile.js
في المشروع الحالي، فسوف يسألك assemble عما إذا كنت تريد إضافة واحد. إذا أجبت بنعم، فسيقوم التجميع بإنشاء ملف assembfile.js
أساسي لك.
قم بتشغيل التجميع من سطر الأوامر.
$ assemble < tasks > [options]
حدد مهمة واحدة أو أكثر مفصولة بمسافات لتشغيلها.
أمثلة
قم بتشغيل المهمة foo
$ assemble foo
قم بتشغيل المهام foo
و bar
$ assemble foo bar
الخيارات غير المتعلقة بالمهمة مسبوقة بـ --
.
أمثلة
قم بتعيين --cwd
لتشغيل assemblefile.js في دليل مختلف:
$ assemble --cwd=docs
قم بإصدار طرق عرض أثناء تحميلها وقم بتسجيلها في stderr
:
$ assemble --emit=view
شاهد المزيد من [خيارات سطر الأوامر](#خيارات سطر الأوامر)
يمكن تحديد مسارات الكائنات باستخدام التدوين النقطي للمفتاح أو القيمة في وسيطة سطر الأوامر.
بالإضافة إلى ذلك، يستخدم التجميع كائنًا موسعًا (وبعض التحليل المخصص) لتسهيل تمرير الخيارات والأوامر غير التافهة عبر سطر الأوامر. لذا فإن جميع التنسيقات التالية ممكنة.
أمثلة
القيم المنطقية:
$ assemble --foo
# { foo: true }
أزواج القيمة الرئيسية:
$ assemble --foo=bar
# { foo: 'bar' }
القيم المنطقية المتداخلة:
$ assemble --option=foo
# {options: { foo: true }}
أزواج القيمة الرئيسية المتداخلة:
$ assemble --option=foo:bar
# {options: { foo: 'bar' }}
أزواج القيمة الرئيسية المتداخلة بعمق:
$ assemble --option=foo.bar.baz:qux
# {options: foo: { bar: { baz: 'qux' }}}}
أو على الجانب الأيسر من =
:
$ assemble --option.foo.bar.baz=qux
# {options: foo: { bar: { baz: 'qux' }}}}
قم بتغيير cwd
لتشغيل assemblefile.js
، مع تحديد أي مهام لتشغيلها بشكل اختياري:
$ assemble < tasks > --cwd [directory]
مثال
لتشغيل مثال scaffolds
في الدليل examples/
، عليك إدخال:
$ assemble --cwd examples/scaffolds
إذا نجحت، في سطر الأوامر، يجب أن ترى شيئًا مثل هذا:
حدد اسم ملف التكوين لتشغيل واجهة سطر الأوامر (CLI) الخاصة بالتجميع، والاسم الافتراضي هو assemblefile.js
.
مثال
$ assemble --file assemblefile.dev.js
إنشاء تطبيق assemble
. هذه هي الوظيفة الرئيسية التي يتم تصديرها بواسطة وحدة التجميع.
بارامس
options
{Object} : قم بتمرير الخيارات الافتراضية للاستخدام بشكل اختياري.مثال
var assemble = require ( 'assemble' ) ;
var app = assemble ( ) ;
يعرض التجميع واجهة برمجة التطبيقات بالكامل من مكتبة القوالب للعمل مع القوالب ومجموعات القوالب. واجهة برمجة التطبيقات (API) أكثر شمولاً مما هو موثق هنا، راجع النماذج لمزيد من الوثائق.
القوالب والآراء
في الوثائق التالية، يشير كل من المصطلحين "قالب" و"عرض" إلى جوانب من نفس الشيء. وإليك ما يقصدونه:
template
: سلسلة قالب فعليةview
: كائن ذو خاصية content
تحتوي على سلسلة القالب. نظرًا لأن العروض هي مثيلات للفينيل، يمكنك التفكير في طريقة العرض على أنها "ملف فينيل للقوالب". قم بإنشاء مجموعة قوالب للتخزين المؤقت لطرق العرض:
app . create ( 'includes' , { viewType : 'partial' } ) ;
خيارات
cwd
{String} : الدليل الأساسي الذي سيتم استخدامه عند تحميل القوالب إلى المجموعة من الكرة الأرضية
viewType
: {String|Array} : نوع عرض واحد أو أكثر لربطه بالمجموعة
إضافة وجهات النظر
إضافة طريقة عرض إلى المجموعة:
app . include ( 'foo.md' , { contents : new Buffer ( 'this is contents' ) } ) ;
إضافة طرق عرض متعددة:
app . includes ( {
path : 'foo.md' , contents : new Buffer ( 'this is contents' ) ,
path : 'bar.md' , contents : new Buffer ( 'this is contents' ) ,
path : 'baz.md' , contents : new Buffer ( 'this is contents' )
} ) ;
// or pass a glob (optionally override `cwd` defined on `.create`)
app . includes ( '*.{md,hbs}' , { cwd : 'templates/includes' } ) ;
يتم تعريف أنواع العرض في المجموعة لتحديد كيفية التعامل مع القوالب الموجودة في المجموعة طوال [دورة العرض] [].
الأنواع المتوفرة
يدعم التجميع ثلاثة أنواع من العرض:
partial
: يمكن استخدام طرق العرض من هذا النوع كـ "عروض جزئية" (أو "طرق عرض جزئية")، والتي يمكن دمجها في طرق عرض أخرى. مفيد للمكونات أو أجزاء المستند أو المقتطفات الأخرى من التعليمات البرمجية أو المحتوى القابل لإعادة الاستخدام. يتم تمرير طرق العرض هذه إلى محركات العرض لاستخدامها كأجزاء جزئية، أو كمتغيرات في السياق إذا لم يتم دعم الأجزاء بشكل مباشر.layout
: يسمح لطرق العرض "بالتفاف" طرق العرض الأخرى (من أي نوع، بما في ذلك التخطيطات الأخرى أو الأجزاء الجزئية) باستخدام كود أو محتوى مشترك.renderable
: طرق العرض التي لها علاقة فردية مع الملفات المعروضة والتي ستكون في النهاية مرئية لمستخدم أو زائر لموقع ويب. على سبيل المثال: الصفحات أو منشورات المدونة. يتم تعيين نوع العرض renderable
تلقائيًا في حالة عدم تعيين أنواع عرض أخرى.تعريف أنواع العرض
يمكنك تحديد أنواع العرض عند إنشاء مجموعة:
app . create ( 'snippet' , { viewType : 'partial' } ) ;
أو مباشرة على خيارات المجموعة:
app . create ( 'snippet' ) ;
app . snippets . option ( 'viewType' , [ 'partial' ] ) ; // string or array
قم بتسجيل محرك القالب لتقديم طرق العرض باستخدام ext
المحدد:
app . engine ( ext , fn ) ;
بارامس
ext
{String} : امتداد الملف للملفات التي سيتم عرضها باستخدام المحركfn
{Function} : دالة غير متزامنة تتبع اصطلاحات المحرك المدمجة، وتأخذ ثلاث وسائط: str
و locals
و callback
.مثال
// this engine is already registered in assemble
app . engine ( 'hbs' , require ( 'engine-handlebars' ) ) ;
// create a custom engine
app . engine ( 'txt' , function ( str , locals , cb ) {
// render `str` with `locals`
cb ( null , str ) ;
} ) ;
يمكنك إخبار التجميع باستخدام نفس المحرك لجميع امتدادات الملفات عن طريق تعيين قيمة على options.engine
.
مثال
// use engine `hbs` for rendering all files
app . option ( 'engine' , 'hbs' ) ;
أو، إذا كنت تستخدم .renderFile، فيمكنك فرض استخدام محرك معين عن طريق تمرير اسم المحرك.
مثال
استخدم محرك hbs
لعرض كافة القوالب:
app . src ( 'templates/*.*' )
. pipe ( app . renderFile ( 'hbs' ) )
تقديم عرض مع locals
المحددين callback
.
app . render ( view , { title : 'Foo' } , function ( err , view ) {
// `view` is an object with a rendered `content` property
} ) ;
بارامس
view
{Object|String} : العرض المراد تقديمهlocals
{Object} : يتم تمرير السكان المحليين إلى محرك القالب لعرض القوالب في view
callback
{وظيفة}يقدم Assemble الطرق ذات المستوى المنخفض التالية للعمل مع نظام الملفات:
يتمتع Assemble بدعم من الدرجة الأولى لـ Vinyl-fs، لذلك يمكن استخدام أي مكون إضافي لـ gulp في خط أنابيب التجميع الخاص بك.
قم بإنشاء دفق الفينيل. يأخذ أنماط الكرة الأرضية أو مسارات الملفات إلى الملفات المصدر لقراءتها.
بارامس
glob
{String|Array} : أنماط الكرة الأرضية أو مسارات الملفات إلى الملفات المصدر.options
{Object} : الخيارات أو السكان المحليون للدمج في السياق و/أو التمرير إلى مكونات src
الإضافيةمثال
app . src ( 'src/*.hbs' ) ;
// define `src` options
app . src ( 'src/*.hbs' , { layout : 'default' } ) ;
حدد وجهة للملفات المعالجة.
بارامس
dest
{String|Function} : مسار الملف أو وظيفة إعادة التسمية.options
{Object} : الخيارات والسكان المحليون لتمريرها إلى المكونات الإضافية dest
مثال
app . dest ( 'dist/' ) ;
انسخ الملفات ذات patterns
الكرة الأرضية المحددة إلى dest
المحددة.
بارامس
patterns
{String|Array} : الأنماط الشاملة للملفات المطلوب نسخها.dest
{String|Function} : دليل الوجهة.returns
{Stream} : البث، لمواصلة المعالجة إذا لزم الأمر.مثال
app . task ( 'assets' , function ( ) {
// return, to let assemble know when the task has completed
return app . copy ( 'assets/**' , 'dist/' ) ;
} ) ;
يعرض الملفات أثناء دفعها عبر الدفق.
app . src ( '*.hbs' )
. pipe ( app . renderfile ( ) )
. pipe ( app . dest ( 'foo' ) ) ;
فرض استخدام محرك معين لعرض الملفات:
app . engine ( 'txt' , function ( str , locals , cb ) {
cb ( null , str ) ;
} ) ;
app . src ( '*.hbs' )
. pipe ( app . renderfile ( 'txt' ) ) //<= use engine `txt`
. pipe ( app . dest ( 'foo' ) ) ;
يحتوي التجميع على الطرق التالية لتشغيل المهام والتحكم في سير العمل:
تحديد مهمة ليتم تشغيلها عند استدعاء المهمة.
بارامس
name
{سلسلة} : اسم المهمةfn
{Function} : الوظيفة التي يتم استدعاؤها عند تشغيل المهمة.مثال
app . task ( 'default' , function ( ) {
app . src ( 'templates/*.hbs' )
. pipe ( app . dest ( 'site/' ) ) ;
} ) ;
تشغيل مهمة واحدة أو أكثر.
بارامس
tasks
{Array|String} : اسم المهمة أو مجموعة أسماء المهام.cb
{Function} : وظيفة رد الاتصال التي تكشف err
مثال
app . build ( [ 'foo' , 'bar' ] , function ( err ) {
if ( err ) throw err ;
console . log ( 'done!' ) ;
} ) ;
مشاهدة الملفات، وتشغيل مهمة واحدة أو أكثر عندما يتغير ملف مراقب.
بارامس
glob
{String|Array} : مسارات الملفات أو أنماط الكرة الأرضية.tasks
{المصفوفة} : المهمة (المهام) المراد مشاهدتها.مثال
app . task ( 'watch' , function ( ) {
app . watch ( 'docs/*.md' , [ 'docs' ] ) ;
} ) ;
يجب أن تعمل المكونات الإضافية من أي تطبيقات مبنية على القاعدة مع Assemble ويمكن استخدامها في assemblefile.js
الخاص بك:
baseplugin
assembleplugin
generateplugin
templatesplugin
updateplugin
verbplugin
تفضل بزيارة دليل توثيق المكونات الإضافية للتعرف على كيفية استخدام المكونات الإضافية وتأليفها ونشرها.
تواصل معنا!
هل لديك أسئلة أو اقتراحات أو ترغب في مناقشة التجميع؟ انضم إلى المحادثة على gitter أو راسلنا على twitter. يسعد فريق التجميع والمجتمع دائمًا بتقديم المساعدة!
الموقع قديم ويجري إعادة هيكلته!
موقع الويب الخاص بـ Assemble، assemble.io، يحتوي فقط على المعلومات المتعلقة بـ gulp-assemble. نحن نعمل جاهدين على تحديث الموقع بمعلومات حول الإصدار الأخير.
في هذه الأثناء، قد تجد مستندات WIP مفيدة. اختبارات الوحدة هي أيضًا أمثلة رائعة!
هل موقع التجميع محدث؟
لا، كما ذكرنا أعلاه، فهو قديم تمامًا. إذا كنت تستخدم grunt-assemble، فقد تظل بعض الوثائق الموجودة على assemble.io مفيدة. إذا كنت تستخدم الإصدار 0.6.0 من التجميع والإصدارات الأحدث، فمن المحتمل أن تكون الوثائق خاطئة في كل شيء تقريبًا.
نحن نعمل بنشاط (يوميًا) على إعادة البناء وهي أولوية عالية جدًا.
ما الفرق بين التجميع الأساسي والتجميع؟
يضيف Assemble واجهة سطر الأوامر (CLI)، وبعض مجموعات العرض المضمنة: pages
، layouts
، والأجزاء partials
، والبرامج الوسيطة لتحليل المادة الأمامية، وبعض الإعدادات الافتراضية الأساسية الأخرى التي وجدنا أن العديد من المستخدمين يتوقعونها. إذا كنت تفضل إعدادات افتراضية مختلفة، فإن التجميع الأساسي هو نقطة بداية رائعة.
إذا كنت تريد شيئًا يتعامل مع القوالب، والعرض، والمحركات، والمساعدات، والمجموعات، وما إلى ذلك، ولكنك لا تحتاج إلى تشغيل المهام أو العمل مع نظام الملفات، ففكر في استخدام القوالب بدلاً من التجميع الأساسي.
أستخدم gulp، لماذا يوصى باستخدام التجميع مباشرة، بدلاً من تشغيل التجميع باستخدام gulp؟
يمكنك تشغيل مكونات gulp الإضافية باستخدام التجميع، لكنها لن تعمل دائمًا بالعكس. هذا لأنه، كنظام بناء، يقوم التجميع بأشياء لا يفعلها gulp، مثل التعامل مع البرامج الوسيطة.
على سبيل المثال، تحتوي الأساليب .src
و .dest
الخاصة بـ assemble على معالجات برمجية وسيطة مضمنة .onStream
و .preWrite
و .postWrite
. إذا كنت لا تزال ترغب في استخدام gulp وكانت دورة البناء الخاصة بك تتضمن برامج وسيطة تتطلب هذه المعالجات، فيمكنك استخدام ملحق assemble-handle مع gulp لضمان استمرار استدعاء المعالجات حسب الحاجة.
هذه طريقة طويلة للقول، يمكنك العثور على طرق لإنجاح عملية gulp، ولكنك ستضيف فقط تبعية إضافية إلى مشروعك للقيام بالأشياء التي يقوم بها التجميع بالفعل.
ما هي العلاقة بين البلع والتجمع؟
يرجى قراءة الأسئلة الشائعة الخاصة بنا لمزيد من المعلومات.
احصل على تحديثات حول تطوير Assemble وتحدث مع مشرفي المشروع وأعضاء المجتمع.
تابع @assemblejs على تويتر.
إذا كنت تحب التجميع وترغب في التغريد عنه، فلا تتردد في ذكر @assemblejs
أو استخدام الهاشتاج #assemble
اقرأ واشترك في مدونة التجميع الرسمية.
انضم إلى غرفة Slack الرسمية.
انضم إلى المحادثة على Gitter
أخبرنا عن مشروع التجميع الخاص بك
أظهر حبك من خلال بطولة Assemble!
احصل على مساعدة في التنفيذ على StackOverflow (يُرجى استخدام علامة assemble
في الأسئلة)
Gitter ناقش التجمع معنا على Gitter
لتحقيق أقصى قدر من قابلية الاكتشاف، يجب على مطوري المكونات الإضافية استخدام الكلمة الأساسية assembleplugin
على الحزم التي تعدل أو تضيف إلى وظيفة التجميع عند التوزيع من خلال npm أو آليات التسليم المماثلة.
المساهمة
يرجى قراءة دليل المساهمة الخاص بنا إذا كنت ترغب في معرفة المزيد حول المساهمة في هذا المشروع.
قد تكون مهتمًا أيضًا بهذه المشاريع من @doowb و@jonschlinkert:
إذا لم يقم التجميع بما تحتاجه، فهناك بعض المشاريع الرائعة الأخرى مفتوحة المصدر التي قد تكون مهتمًا بها، والتي أنشأها أصدقاؤنا على GitHub (بالترتيب الأبجدي):
مولدات الموقع الثابتة
أطر المدونة
يتم تصنيف إدخالات سجل التغيير باستخدام التسميات التالية (من الاحتفاظ بسجل التغيير ):
added
: لميزات جديدةchanged
: للتغييرات في الوظائف الحاليةdeprecated
: للميزات التي كانت مستقرة سابقًا والتي تمت إزالتها في الإصدارات القادمةremoved
: للميزات المهملة التي تمت إزالتها في هذا الإصدارfixed
: لأي إصلاحات الشوائبالتصنيفات المخصصة المستخدمة في سجل التغيير هذا:
dependencies
: المطبات التبعياتhousekeeping
: إعادة تنظيم التعليمات البرمجية، أو التعديلات الطفيفة، أو التغييرات الأخرى التي لا تتناسب مع إحدى الفئات الأخرى. وأضاف
مُثَبَّت
isbinaryfile
يحاول القراءة من ملف غير موجود. التبعيات
view
بـ .toStream()
عند إنشائه بواسطة app
(مقابل مجموعة). التبعيات
مُثَبَّت
view.stat
فارغًا في بعض الحالات بعد تغيير view.path
view.base
صحيحة دائمًا في طرق العرض التي لم يتم إنشاؤها من نظام الملفات التبعيات
dest
التبعيات
list
التبعيات
التبعيات
.log()
، والتي تكشف أيضًا عن طرق إضافية، مثل .log.info()
و .log.success()
وما إلى ذلك.support/docs
، بحيث يمكن إنشاء مستندات تخفيض السعر في دليل docs
renameKey
من الأسلوب .data
. استخدم خيار namespace
بدلاً من ذلك. يتم رفع مستوى التجميع الأساسي إلى الإصدار 0.22.0 للاستفادة من الإصلاحات والتحسينات التي تم إدخالها على طرق البحث: .find
و getView
. لم يتم إجراء أي تغييرات على واجهة برمجة التطبيقات. يرجى إعلامنا في حالة حدوث تراجعات.
List
الذي تسبب في انفجار مساعدي التجميعapp.getView()
و app.find()
queue
في المجموعات. راجع التجميع الأساسي للحصول على تفاصيل إضافية.file.base
، مما يتسبب في أن يكون الدليل dest مرتبطًا بـ cwd بدلاً من الأصل الشامل في بعض الحالات.renameKey
دائمًا عند تحديده في خيارات أداة تحميل المجموعة.debug
والتعليمات البرمجية ذات الصلةnode_modules
بالكامل وإعادة تثبيت جميع التبعيات لتجنب حدوث أخطاء مثل أن isRegistered is not a function
.watch
لصالح استخدام المكون الإضافي الأساسي للمراقبة.(سجل التغيير الذي تم إنشاؤه بواسطة سجل التغيير المساعد)
طلبات السحب والنجوم مرحب بها دائمًا. بالنسبة للأخطاء وطلبات الميزات، يرجى إنشاء مشكلة.
يرجى قراءة دليل المساهمة للحصول على المشورة بشأن المشكلات المفتوحة وطلبات السحب ومعايير الترميز.
إذا لم يقم برنامج Assemble بما تحتاج إليه، فيرجى إخبارنا بذلك
يرتكب | مساهم |
---|---|
1497 | jonschlinkert |
842 | com.doowb |
11 | أندرس دي جونسون |
7 | أركيماجي |
7 | stefanwalther |
4 | أفر |
4 | بندركر |
2 | com.thegreatsunra |
2 | rauberdaniel |
2 | com.onokumus |
2 | روب لوتش |
2 | ستيفن بلاك |
2 | com.xzyfer |
2 | عين |
1 | asans |
1 | باوركا |
1 | caseyg1204 |
1 | hyzhak |
1 | com.mootari |
1 | com.criticalmash |
1 | joonasy |
1 | jordanthomas |
1 | فرايير |
1 | fender |
1 | pburchaell |
1 | com.scmorrison |
1 | com.oncletom |
1 | tylerhowarth |
1 | klokie |
جون شلينكيرت
بريان وودوارد
حقوق الطبع والنشر © 2017، جون شلينكرت. معهد ماساتشوستس للتكنولوجيا
تم إنشاء هذا الملف بواسطة الملف التمهيدي لإصدار الفعل v0.6.0 بتاريخ 27 ديسمبر 2017.