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
Berita Platform Mingguan: Aplikasi Web di Kedai Galaxy, Cerita Tappable, CSS SubgridBerita Platform Mingguan: Aplikasi Web di Kedai Galaxy, Cerita Tappable, CSS SubgridApr 14, 2025 am 11:20 AM

Dalam roundup minggu ini: Firefox Gains Locksmith seperti kuasa, Samsung ' s Galaxy Store mula menyokong aplikasi web progresif, subgrid CSS adalah penghantaran di Firefox

Kekuatan (dan keseronokan) skop dengan sifat tersuai CSSKekuatan (dan keseronokan) skop dengan sifat tersuai CSSApr 14, 2025 am 11:11 AM

Anda mungkin sudah sekurang -kurangnya sedikit biasa dengan pembolehubah CSS. Jika tidak, inilah gambaran keseluruhan dua saat: mereka benar-benar dipanggil sifat tersuai, anda menetapkan

Kami adalah pengaturcaraKami adalah pengaturcaraApr 14, 2025 am 11:04 AM

Laman web bangunan adalah pengaturcaraan. Menulis HTML dan CSS adalah pengaturcaraan. Saya seorang pengaturcara, dan jika anda ' di sini, membaca css-tricks, kemungkinan anda '

Bagaimana anda mengeluarkan CSS yang tidak digunakan dari laman web?Bagaimana anda mengeluarkan CSS yang tidak digunakan dari laman web?Apr 14, 2025 am 10:59 AM

Di sini ' s Apa yang saya suka untuk mengetahui pendahuluan: Ini adalah masalah yang sukar. Sekiranya anda mendarat di sini kerana anda berharap dapat menunjuk pada alat yang boleh anda jalankan

Pengenalan kepada API Web Picture-in-PicturePengenalan kepada API Web Picture-in-PictureApr 14, 2025 am 10:57 AM

Picture-in-Picture membuat penampilan pertamanya di web di pelayar safari dengan pembebasan macos Sierra pada tahun 2016. Ia memungkinkan pengguna untuk muncul

Cara untuk mengatur dan menyediakan imej untuk kesan kabur menggunakan GatsbyCara untuk mengatur dan menyediakan imej untuk kesan kabur menggunakan GatsbyApr 14, 2025 am 10:56 AM

Gatsby melakukan pemprosesan kerja yang hebat dan mengendalikan imej. Contohnya, ia membantu anda menjimatkan masa dengan pengoptimuman imej kerana anda tidak perlu secara manual

Oh hei, peratusan padding didasarkan pada elemen induk ' s lebarOh hei, peratusan padding didasarkan pada elemen induk ' s lebarApr 14, 2025 am 10:55 AM

Saya belajar sesuatu mengenai padding berasaskan peratusan hari ini bahawa saya benar-benar salah di kepala saya! Saya selalu menganggap bahawa padding peratusan berdasarkan

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

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),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini