11 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Learn Some Gulp Basics | تعلم بعض أساسيات Gulp |
غولب يمكنه فعل الكثير . هذا مجرد لمحة عامة عن الأساسيات. بمجرد فهمك لذلك ، يمكنك إضافة المزيد إلى Gulp بنفسك. لقد كانت وثائق الحزم المختلفة التي استخدمتها رائعة ولدينا أيضًا منتدى رائع على FreeCodeCamp مستعد للمساعدة في أي مشروع.
ما هو غالب؟
غالب هو عداء جافا سكريبت / مهمة. هل تستخدم Jade ، ولكنك تحتاج إلى HTML؟ ساس ، ولكن بحاجة إلى CSS؟ القهوة ، ولكن تحتاج إلى جافا سكريبت؟ أو ربما ترغب فقط في تجميع و / أو تقليل ما لديك بالفعل؟ يمكن لـ Gulp القيام بكل ذلك بسهولة ، لذا لن تضطر إلى العودة إلى المحطة بعد كل تغيير بسيط.
لماذا استخدام Gulp؟
نحن نستخدم الكثير من CodePen على FreeCodeCamp. يتيح CodePen استخدام المعالجات التمهيدية دون الحاجة إلى القيام بأي شيء آخر. يمكنك عرض النسخة المترجمة إذا تم استخدام المعالج الأولي. يبدو مختلفا كثيرا. يمكنك إنشاء مشروع في React على CodePen ، اختر Babel كـ المعالج المسبق لـ JavaScript وكل شيء سيعمل. إذا كنت ستقوم بهذا المشروع نفسه محليًا دون معالجة كل شيء ، فلن تحصل على ما كنت تتوقعه. هذا هو المكان الذي يأتي فيه غلب.
كيف أستخدم Gulp؟
مرة أخرى ، هذه مجرد نظرة عامة على الأساسيات. ستتم معالجة النظرة العامة إلى Sass إلى CSS ، وتسوية وتقليل أوراق الأنماط والنصوص ، وتطبيق ساعة Gulp. تحتاج إلى تثبيت Node و NPM على جهاز الكمبيوتر الخاص بك قبل القيام بأي شيء. على الأرجح لديك هذا بالفعل ، ولكن أدخل node -v و npm -v في الطرفية الخاصة بك للتحقق.
-
التغيير إلى دليل المشروع وتشغيل
npm initفي المحطة.-
هذا يخلق ملف
package.jsonفي دليل العمل. -
وسيكون هذا أيضًا وقتًا مناسبًا لتشغيل
node_modules/touch .gitignoreفي المحطة وإضافةnode_modules/إلى الملف ، لذلك لن تدفع جميع هذه الحزم إلى GitHub.
-
-
تشغيل
npm install --save-dev gulp gulp-concat gulp-minify-css gulp-rename gulp-sass gulp-uglifyin the terminal. قد يستغرق هذا بضع دقائق حتى تنتهي.-
هذا يقوم بتثبيت 6
node_modulesمختلفة. يمكنك إلقاء نظرة على ملفpackage.jsonومشاهدة كل هذهdevDependenciesالمدرجة ضمنdevDependenciesوفي مجلدnode_modulesومشاهدة كل حزمة قمت بتثبيتها. -
gulp-concatهو وصل الأنماط والكتابات،gulp-minify-cssهو تصغير CSS،gulp-renameهي لإعادة تسمية الملف،gulp-sassهو ساس لCSS، وgulp-uglifyهو تصغير JS.
-
-
قم بتشغيل
touch gulpfile.jsفي المحطة.- أنت الآن جاهز للبدء.
-
ستحتاج إلى طلب جميع الملفات التي حفظتها للتو. تفعل هذا في
gulpfile.js.
` 'use strict';
var gulp = require('gulp');
var concat = require('gulp-concat');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var sass = require('gulp-sass');
var uglify = require('gulp-uglify');
`
-
نحن بحاجة إلى البدء في مكان ما ، لذلك ساس إلى CSS أولا؟ هنا سنقوم بمعالجة Sass إلى CSS ، وتقليل CSS ، وإعادة تسمية الملف.
-
اسم المهمة
sass(أكثر على ذلك لاحقا). -
في الدليل الحالي ، نبحث عن مجلد باسم
assets، ثم مجلد باسمscss، ثم ملفًا باسمmain.scss. -
نقوم بمعالجة Sass إلى CSS والتسجيل في حالة حدوث خطأ.
-
يتم تصغير CSS. هذا هو مجرد التخلص من كل تلك الخطوط والفضاء الإضافي. لا يحتاج الكمبيوتر إلى تلك الملفات لقراءة الملف ويقلل بشكل كبير من حجم الملف.
-
نظرًا لتخفيض حجم الملف الآن ، فمن المنطقي إعادة تسميته.
.min.css. -
الخطوة الأخيرة هي حفظ ملف
main.min.cssمكان ما ، وسوف يكون في الدليل الحالي إلى مجلد باسمpublic، ثم مجلد باسمcss.
-
gulp.task('sass', function() { return gulp.src('./assets/scss/main.scss') .pipe(sass().on('error', sass.logError)) .pipe(minifyCss({compatibility: 'ie8'})) .pipe(rename('main.min.css')) .pipe(gulp.dest('./public/css')); });
-
الآن يمكننا الحصول على المزيد من الأشياء في Gulp ومحاولة تجميع جميع ملفات النص البرمجي. ماذا لو كان لديك برنامج نصي واحد فقط الآن ، لذلك ليس لديك أي شيء لسلسلته؟ ربما تخلص من بعض من CDNs لديك وجعلها مخطوطات. لكنك ستحصل على مشاريع أكبر لها العديد من النصوص.
-
يرجى ملاحظة أنني لا أغطي خرائط المصدر. أعتقد أن هذه هي الخطوة التالية بعد هذه النظرة الأساسية ، لذا انظر إليها بمجرد فهمك لما تفعله هنا.
-
يتم تسمية المهام الحالية
concatScriptsوminifyScripts. -
هذا هو نفس الهيكل الأساسي مثل
sass. تتم إضافة جميع الملفات إلىgulp.src، لكن علينا أولاً حفظ هذا الملف المتسلسل قبل أن يصبح بالإمكان تصغيره. -
يسمى
uglifyجافا سكريبت بالإزالةuglify. -
هل تلاحظ
['concatScripts]بعدminifyScripts؟ وهذا يعنيconcatScriptsسيتم تشغيلconcatScriptsفعليًا في كل مرة نحاول فيها تشغيلminifyScripts.
-
` gulp.task('concatScripts', function() { return gulp.src([ './assets/js/script-1.js', './assets/js/script-2.js', './assets/js/script-3.js' ]) .pipe(concat('app.js')) .pipe(gulp.dest('./assets/js')); });
gulp.task('minifyScripts', ['concatScripts'], function() {
return gulp.src('assets/js/app.js')
.pipe(uglify())
.pipe(rename('app.min.js'))
.pipe(gulp.dest('public/app/js'));
});
`
-
يمكنك الآن الذهاب إلى محطة واكتب في
gulp sassو / أوgulp minifyScripts. هذا سيدير كل واحد ، لكننا نريد أن نجعل الأمر أسهل علينا. سنقوم بإنشاء بنية افتراضية ، حتى نتمكن من إدخالgulpفي المحطة. سنقوم أيضاً بإضافةgulp watch، لذلك عندما تقوم بحفظ ملف مدرج في الساعة ، فإنه سيعمل ما قلته لتشغيله.-
لقد صنعنا مهمة تسمى
build. هذا مشابه جدًا لـminifyScriptsنظرًا لوجود مصفوفة فيه. كلما ندخلgulp buildفي محطة فستعملsassوminifyScripts(الذي يمتد في الواقعconcatScriptsأولا). -
لقد أجرينا أيضًا مهمة تسمى
watch. هذه هي مهمة وقت التوقف. في المحطة تقوم بتشغيلgulp watch. ستبقى Gulp مفتوحة على المحطة ، لذا ربما تريد تشغيلها في علامة تبويب أخرى. كلما يتم تحديث الملفات وحفظها فيscssمجلد مع.scssتمديدsassسيتم تشغيل المهمة. ونفس الشيء بالنسبة لملف فيjsمجلد مع.jsالتمديد، ولكنconcatScriptsوminifyScriptsسيتم تشغيل. -
المهمة الأخيرة هي
default. يمكنك فقط تشغيل أداةgulpفي الوحدة الطرفية وستعمل على تشغيل المهمةdefault. وdefaultمهمة هنا تدعو لbuildالمهمة، التي تدير فقط كل المهام لدينا على الصفحة.
-
` gulp.task('build', ['sass', 'minifyScripts']);
gulp.task('watch', function() {
gulp.watch('./assets/scss/**/*.scss', ['sass']);
gulp.watch('./assets/js/**/*.js', ['minifyScripts']);
});
gulp.task('default', ['build']);
`
هذا ما يجب أن يبدو عليه ملف gulpfile.js النهائي gulpfile.js :
` 'use strict';
var gulp = require('gulp');
var concat = require('gulp-concat');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var sass = require('gulp-sass');
var uglify = require('gulp-uglify');
gulp.task('sass', function() {
return gulp.src('./assets/scss/main.scss')
.pipe(sass().on('error', sass.logError))
.pipe(minifyCss({compatibility: 'ie8'}))
.pipe(rename('main.min.css'))
.pipe(gulp.dest('./public/css'));
});
gulp.task('concatScripts', function() {
return gulp.src([
'./assets/js/script-1.js',
'./assets/js/script-2.js',
'./assets/js/script-3.js'
])
.pipe(concat('app.js'))
.pipe(gulp.dest('./assets/js'));
});
gulp.task('minifyScripts', ['concatScripts'], function() {
return gulp.src('assets/js/app.js')
.pipe(uglify())
.pipe(rename('app.min.js'))
.pipe(gulp.dest('public/app/js'));
});
gulp.task('build', ['sass', 'minifyScripts']);
gulp.task('watch', function() {
gulp.watch('./assets/scss/**/*.scss', ['sass']);
gulp.watch('./assets/js/**/*.js', ['minifyScripts']);
});
gulp.task('default', ['build']);
`
