cari
Rumahhujung hadapan webtutorial cssHanya berkongsi gulpfile saya

Hanya berkongsi gulpfile saya

Seolah -olah keluar dari biru, pemprosesan Teluk yang saya buat untuk laman web ini mula mempunyai keadaan perlumbaan. Saya akan menjalankan perintah jam tangan saya, menukar beberapa CSS, dan pemprosesan kadang -kadang akan meninggalkan beberapa fail tambahan yang dimaksudkan untuk dibersihkan semasa pemprosesan. Seperti tugas pembersihan berlaku sebelum fail mendarat di dalam sistem fail (atau sesuatu ... Saya tidak pernah sampai ke bahagian bawahnya).

Nevermind tentang spesifikasi pepijat itu. Saya fikir saya akan menyelesaikannya dengan menaik taraf perkara untuk menggunakan Gulp 4.x dan bukannya 3.x, dan menjalankan perkara-perkara dalam perintah Gulp.Series terbina dalam, yang saya fikir akan membantu (ia dilakukan).

Mendapatkan Gulp 4.x pergi adalah satu perjalanan untuk saya, yang melibatkan saya menyerah selama setahun , kemudian menunaikan perjuangan dan akhirnya mendapatkannya tetap. Masalah saya ialah Gulp 4 memerlukan versi CLI 2.x manakala Gulp 3, atas sebab apa pun, menggunakan versi 3.x. Pada dasarnya saya perlu menurunkan versi, tetapi selepas mencuba satu bilion perkara untuk melakukan itu, tidak ada yang kelihatan berfungsi, seperti terdapat versi hantu CLI 3.x pada mesin saya.

Saya pasti orang-orang baris perintah yang lebih bijak dapat menghisapnya lebih cepat daripada saya, tetapi ternyata perintah berjalan -v Gulp akan mendedahkan laluan fail di mana Gulp dipasang yang diturunkan/usr/local/share/npm/bin/gulp untuk saya, dan memadamkannya secara manual dari sana sebelum memasukkan semula versi terakhir yang bekerja.

Sekarang saya boleh menggunakan Gulp 4.x, saya menulis semula gulpfile.js saya ke dalam fungsi yang lebih kecil, masing-masing cukup terpencil dalam tanggungjawab. Kebanyakan ini cukup unik untuk persediaan saya di laman web ini, jadi ia tidak dimaksudkan untuk menjadi beberapa boilerplate untuk penggunaan generik. Saya hanya menerbitkan kerana pastinya akan membantu saya untuk merujuk ketika saya menciptanya.

Perkara yang saya lakukan

  • Menjalankan pelayan web (BrowserSync) untuk suntikan gaya dan auto-rfreshing
  • Menjalankan pemerhati fail (ciri gulp asli) untuk menjalankan tugas yang betul pada fail yang betul dan melakukan perkara di atas
  • Pemprosesan CSS
    • Sass> autoprefixer> minify
    • Cache Cache Stylesheet dari Templat (misalnya
    • Letakkan gaya.css di tempat yang betul untuk tema WordPress dan membersihkan fail hanya diperlukan semasa pemprosesan
  • Pemprosesan JavaScript
    • Babel> concatenate> minify
    • Cache penyemak imbas untuk s
    • Bersihkan fail yang tidak digunakan yang dibuat dalam pemprosesan
  • Pemprosesan SVG
    • Buat sprite svg (blok s
    • Namakannya sebagai fail sprite.php (jadi ia boleh dipasang php dalam templat) dan meletakkannya di tempat yang spesifik
  • Pemprosesan PHP
    • Kemas kini Panggilan Ajax di JavaScript ke Cache-bust apabila iklan berubah

Kod Dump!

 const gulp = memerlukan ("gulp"),
  BrowserSync = memerlukan ("penyemak imbas-sync"). Buat (),
  sass = memerlukan ("gulp-sass"),
  postcss = memerlukan ("gulp-postcss"),
  AutoPrefixer = memerlukan ("AutoPrefixer"),
  cssnano = memerlukan ("cssnano"),
  del = memerlukan ("del"),
  Babel = memerlukan ("Gulp-Babel"),
  minify = memerlukan ("Gulp-Minify"),
  concat = memerlukan ("gulp-concat"),
  Namakan semula = Memerlukan ("Gulp-Praame"),
  menggantikan = memerlukan ("Gulp-Replace"),
  svgsymbols = memerlukan ("gulp-svg-simbol"),
  svgmin = memerlukan ("gulp-svgmin");

Const Paths = {
  Gaya: {
    src: ["./scss/*.scss", "./art-direction/*.scss"],
    Dest: "./css/"
  },
  Skrip: {
    src: ["./js/*.js", "./js/libs/*.js", "! ./ Js/min/*. Js"],
    Dest: "./js/min"
  },
  SVG: {
    SRC: "./icons/*.svg"
  },
  php: {
    src: ["./*.php", "./ads/*.php", "./art-direction/*.php", "./parts/**/*.php"]
  },
  Iklan: {
    SRC: "./ads/*.php"
  }
};

/ * Gaya */
fungsi dostyles (selesai) {
  Kembali Gulp.Series (Gaya, MoveMainStyle, DeleteoldMainStyle, Selesai => {
    cacheBust ("./ header.php", "./");
    dilakukan ();
  }) (selesai);
}

gaya fungsi () {
  kembali gulp
    .src (paths.styles.src)
    .pipe (sass ())
    .on ("ralat", sass.logerror)
    .pipe (postcss ([autoprefixer (), cssnano ()]))
    .pipe (gulp.dest (paths.styles.dest))
    .pipe (browserSync.stream ());
}

fungsi MoveMainStyle () {
  kembali gulp.src ("./ css/style.css"). Pipa (gulp.dest ("./"));
}

fungsi DeleteoldMainStyle () {
  kembali del ("./ css/style.css");
}
/ * Gaya akhir */

/ * Skrip */
fungsi doskrip (dilakukan) {
  kembali gulp.series (
    preprocessjs,
    concatjs,
    Minifyjs,
    deleteartifactjs,
    Muat semula,
    selesai => {
      cacheBust ("./ Bahagian/footer-scripts.php", "./parts/");
      dilakukan ();
    }
  ) (selesai);
}

fungsi preprocessjs () {
  kembali gulp
    .src (paths.scripts.src)
    .pipe (
      babel ({
        Pratetap: ["@babel/env"],
        Plugin: ["@babel/plugin-proposal-class-properties"]
      })
    )
    .pipe (gulp.dest ("./ js/babel/"));
}

fungsi concatjs () {
  kembali gulp
    .src ([
      "JS/libs/jQuery.lazy.js",
      "JS/libs/jQuery.fitvids.js",
      "JS/libs/jQuery.resizable.js",
      "JS/libs/prism.js",
      "js/babel/sorotan-fix.js",
      "JS/Babel/Global.js"
    ])
    .pipe (concat ("global-concat.js"))
    .pipe (gulp.dest ("./ js/concat/"));
}

fungsi minifyjs () {
  kembali gulp
    .src (["./ js/babel/*. js", "./js/concat/*.js"])
    .pipe (
      minify ({
        ext: {
          SRC: ".js",
          min: ".min.js"
        }
      })
    )
    .pipe (gulp.dest (paths.scripts.dest));
}

fungsi deleteartifactjs () {
  kembali del ([
    "./js/babel",
    "./js/concat",
    "./js/min/*.js",
    "! ./ js/min/*. min.js"
  ]);
}
/ * Skrip akhir */

/ * Svg */
fungsi dosvg () {
  kembali gulp
    .src (paths.svg.src)
    .pipe (svgmin ())
    .pipe (
      svgsymbols ({
        Templat: ["lalai-svg"],
        svgattrs: {
          Lebar: 0,
          Ketinggian: 0,
          Paparan: "Tiada"
        }
      })
    )
    .PIPE (Namakan semula ("Ikon/Sprite/Icons.php"))
    .pipe (gulp.dest ("./"));
}
/ * Akhir svg */

/ * Perkara generik */
fungsi cachebust (src, dest) {
  var cbstring = tarikh baru () gettime ();
  kembali gulp
    .SRC (SRC)
    .pipe (
      ganti ( /cache_bust = \ d /g, fungsi () {
        kembali "cache_bust =" cbstring;
      })
    )
    .pipe (gulp.dest (dest));
}

fungsi tambah nilai (dilakukan) {
  browserSync.reload ();
  dilakukan ();
}

fungsi menonton () {
  BrowserSync.init ({
    Proksi: "csstricks.local"
  });
  gulp.watch (paths.styles.src, dostyles);
  gulp.watch (paths.scripts.src, doscripts);
  gulp.watch (paths.svg.src, dosvg);
  gulp.watch (paths.php.src, tambah nilai);
  gulp.watch (paths.ads.src, selesai => {
    cacheBust ("./ js/global.js", "./js/");
    dilakukan ();
  });
}

gulp.task ("lalai", menonton);

Masalah / soalan

  • Bahagian yang paling teruk ialah ia tidak memecahkan cache dengan bijak. Apabila CSS berubah, ia memecahkan cache pada semua stylesheets, bukan hanya yang relevan.
  • Saya mungkin hanya selaras ikon SVG dengan PHP termasuk () s pada masa akan datang dan bukannya berurusan dengan spriting.
  • Pemproses SVG memecahkan jika SVG asal mempunyai atribut lebar dan ketinggian, yang nampaknya salah.
  • Adakah berubah-ubah menjadi rangsangan kelajuan? Seperti dalam, hanya melihat fail yang telah berubah dan bukannya semua fail? Atau tidak perlu lagi?
  • Sekiranya saya memulakan semula Gulp pada perubahan gulpfile.js?
  • Pasti akan menjadi baik jika semua lib yang saya gunakan adalah bersesuaian ES6 supaya saya dapat mengimport barangan daripada harus bersekutu secara manual.

Sentiasa lebih banyak lagi yang boleh dilakukan. Sebaik-baiknya, saya hanya membuka sumber laman web ini, saya belum sampai di sana lagi.

Atas ialah kandungan terperinci Hanya berkongsi gulpfile saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah grid CSS?Apakah grid CSS?Apr 30, 2025 pm 03:21 PM

CSS Grid adalah alat yang berkuasa untuk mewujudkan susun atur web yang rumit dan responsif. Ia memudahkan reka bentuk, meningkatkan kebolehcapaian, dan menawarkan lebih banyak kawalan daripada kaedah yang lebih lama.

Apakah CSS Flexbox?Apakah CSS Flexbox?Apr 30, 2025 pm 03:20 PM

Artikel membincangkan CSS Flexbox, kaedah susun atur untuk penjajaran yang cekap dan pengedaran ruang dalam reka bentuk responsif. Ia menerangkan penggunaan Flexbox, membandingkannya dengan grid CSS, dan butiran sokongan penyemak imbas.

Bagaimanakah kita boleh membuat laman web kami responsif menggunakan CSS?Bagaimanakah kita boleh membuat laman web kami responsif menggunakan CSS?Apr 30, 2025 pm 03:19 PM

Artikel ini membincangkan teknik untuk membuat laman web responsif menggunakan CSS, termasuk tag Meta Viewport, grid fleksibel, media cecair, pertanyaan media, dan unit relatif. Ia juga meliputi menggunakan grid CSS dan Flexbox bersama -sama dan mengesyorkan rangka kerja CSS

Apakah harta saiz kotak CSS?Apakah harta saiz kotak CSS?Apr 30, 2025 pm 03:18 PM

Artikel ini membincangkan harta saiz kotak CSS, yang mengawal bagaimana dimensi elemen dikira. Ia menerangkan nilai seperti kotak kandungan, kotak sempadan, dan kotak padding, dan kesannya terhadap reka bentuk susun atur dan penjajaran bentuk.

Bagaimanakah kita boleh menghidupkan CSS?Bagaimanakah kita boleh menghidupkan CSS?Apr 30, 2025 pm 03:17 PM

Artikel membincangkan membuat animasi menggunakan CSS, sifat utama, dan menggabungkan dengan JavaScript. Isu utama adalah keserasian penyemak imbas.

Bolehkah kita menambah transformasi 3D ke projek kami menggunakan CSS?Bolehkah kita menambah transformasi 3D ke projek kami menggunakan CSS?Apr 30, 2025 pm 03:16 PM

Artikel membincangkan menggunakan CSS untuk transformasi 3D, sifat utama, keserasian penyemak imbas, dan pertimbangan prestasi untuk projek web. (Kira -kira aksara: 159)

Bagaimana kita boleh menambah kecerunan dalam CSS?Bagaimana kita boleh menambah kecerunan dalam CSS?Apr 30, 2025 pm 03:15 PM

Artikel ini membincangkan menggunakan kecerunan CSS (linear, radial, mengulangi) untuk meningkatkan visual laman web, menambah kedalaman, fokus, dan estetika moden.

Apakah unsur-unsur pseudo dalam CSS?Apakah unsur-unsur pseudo dalam CSS?Apr 30, 2025 pm 03:14 PM

Artikel membincangkan unsur-unsur pseudo dalam CSS, penggunaannya dalam meningkatkan gaya HTML, dan perbezaan dari kelas pseudo. Menyediakan contoh praktikal.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma