בחלק זה של "אוטומציה עם Gulp", נלמד כיצד לקחת קבצי SCSS או קבצי Less ולקמפל אותם לקובץ CSS אחד. שימו לב, שלב זה אינו תלוי בשלב הקודם.
אנו נחלק את מאמר זה לשני חלקים, חלק ראשון יהיה לגבי SCSS והשני יהיה לגבי Less, אתם מוזמנים לקפוץ לחלק במאמר שרלוונטי אליכם.

קמפול קבצי SCSS

שלב ראשון – התקנת סיפריות

החלק הראשון הוא כמובן התקנת הסיפריות אשר אחראיות לקמפל את קבצי ה-SCSS. נפתח את הטרמינל וננווט לתיקייה בה מצא הקובץ package.json ונריץ את הפקודה הבאה:

npm install --save-dev gulp-sass gulp-concat

שלב שני – יצירת משימה

כעת אנו צריכים ליצור את המשימה אשר תקמפל את קבצי ה-SCSS, לכן נפתח את הקובץ gulpfile.js ונחליף את התוכן שלו בקוד הבא:

/**
 * Automation with Gulp
 */

// Dependencies
var gulp = require( 'gulp' );
var scss = require( 'gulp-sass' );
var concat = require( 'gulp-concat' );

// Variables
var SCSS_SRC = '__src/scss/**/*.scss';
var SCSS_DIST = 'assets/css';

// Tasks
gulp.task( 'build-scss', function() {

  return gulp
          .src( SCSS_SRC )
          .pipe( scss( {
            outputStyle: 'compressed'
          } ) )
          .pipe( concat( 'styles.min.css' ) )
          .pipe( gulp.dest( SCSS_DIST ) );

} );

כעת במידה ונריץ את הפקודה gulp build-scss המשימה תקח את קבצי ה-SCSS שלנו, תקמפל אותם ותאחד אותם לקובץ CSS אחד דחוס.

שימו לב!
שימוש ב-concat הוא לא חובה, מכיוון שניתן ליצור קבצי SCSS עם תחילית _ ואז לעשות להם @import אך לא תמיד עושים קובץ SCSS אחד ראשי.

קמפול קבצי Less

שלב ראשון – התקנת סיפריות

החלק הראשון הוא כמובן התקנת הסיפריות אשר אחראיות לקמפל את קבצי ה-Less. נפתח את הטרמינל וננווט לתיקייה בה מצא הקובץ package.json ונריץ את הפקודה הבאה:

npm install --save-dev gulp-less gulp-concat gulp-clean-css

שלב שני – יצירת משימה

כעת אנו צריכים ליצור את המשימה אשר תקמפל את קבצי ה-Less, לכן נפתח את הקובץ gulpfile.js והחליף את התוכן שלו בקוד הבא:

/**
 * Automation with Gulp
 */

// Dependencies
var gulp = require( 'gulp' );
var less = require( 'gulp-less' );
var concat = require( 'gulp-concat' );
var minifyCSS = require( 'gulp-clean-css' );

// Variables
var LESS_SRC = '__src/less/**/*.less';
var LESS_DIST = 'assets/css';

// Tasks
gulp.task( 'build-less', function() {

  return gulp
          .src( LESS_SRC )
          .pipe( less() )
          .pipe( minifyCSS() )
          .pipe( concat( 'styles.min.css' ) )
          .pipe( gulp.dest( LESS_DIST ) );

} );

בשונה מ-SCSS, כאשר משתמשים ב-Less עלינו להשתמש בסיפרייה נוספת על מנת לדחוס את קובץ ה-CSS אשר מיוצר ע״י Less.

סיכום

בחלק זה בסדרה, למדנו איך לקמפל ולדחוס קבצי SCSS ו-Less לקובץ CSS אחד דחוס. בחלק הבא בסדרה, נלמד איך לאחד ולדחוס קבצי JS ואיך לייצר Sourcemaps לקבצים דחוסים.

    כתיבת תגובה

    1. ניב

      היי דור
      תודה עם המאמר, אני משתמש ב scss.
      בהרצת gulp על קמפול קבצי SCSS, בקובץ stlye.scss הכל עובד טוב.

      אך בקובץ נגיד _header.scss שאני עושה עושה עליו @import בקובץ style.scss
      השינוי לא עובד, כלומר אני רואה את ה task רץ אבל הקובץ style. Scss לא מתעדכן עם השינוי, רק לאחר שני ניגש לקובץ style.scss במבצע שמירה בו אני רואה את השינוי שנעשה בקובץ _header.

      מה צריך להוסיף ב task על מנת שזה יעבוד כמו קמפול קבצי SCSS דרך הטרמינל ישירות?

      הגב
      1. דור צוברי

        היי ניב,
        על מנת לפתור את הבעיה תגדיר שהנתיב של קבצי ה-SCSS יהיה בסגנון הבא: __src/scss/**/*.scss זה ידאג לקמפל את כל הקבצים אשר נמצאים בתיקיית SCSS או בתיקיות בתוך תיקיית SCSS.

      2. ניב

        היי דור,
        תודה על התגובה המהירה,

        ככה מוגדר אצלי (ריצה על כך הקבצים מסוג scss) לכן בטרמינל אני רואה את הכניסה ל task שלי, אפילו האתר מתרפשרש לי עם.. browser sync אך עדיין לא מתעדכן הקובץ style.scss

      3. דור צוברי

        היי ניב,
        אתה יכול להעלות את ה-gulpfile.js ל-pastebin או משהו ולשלוח קישור לצפייה? 🙂

      4. ניב

        הייי דור

        קודם כל תודה על העזרה,
        העלאתי את הקובץ ה Gulp שלי
        https://pastebin.com/AfR6PEd6?fbclid=IwAR0sAJSGfAFr1NJ6KIauJ9MZUM3dlKUwO9JVM-JB_5E_Habm4y01T0c46Cs

        אשמח לעזרה,
        תודה רבה רבה

    אפשר להציע לך עוגיות? יש גם קפה! השימוש בקוקיז עוזר לשפר את הביקור שלך באתר. המשך גלישה אומר שהסכמת למדיניות הפרטיות שלי, וגם לקפה.

    שתפו