Apparemment à l'improviste, le traitement Gulp que j'avais mis en place pour ce site a commencé à avoir une condition de course. J'exécuterais ma commande de surveillance, je changerais certains CSS et le traitement laissait parfois des fichiers supplémentaires qui devaient être nettoyés pendant le traitement. Comme les tâches de nettoyage se sont produites avant que les fichiers n'atterrissent dans le système de fichiers (ou quelque chose… Je ne suis jamais vraiment arrivé au fond de celui-ci).
Peu importe les détails de ce bogue. J'ai pensé que je vais le résoudre en mettant à niveau les choses pour utiliser Gulp 4.x au lieu de 3.x, et en exécutant des choses dans la commande Gulp.Series intégrée, ce que je pensais aider (c'était le cas).
Obtenir Gulp 4.x Going a été un sacré voyage pour moi, m'impliquant d'abandonner pendant un an , puis raviver la lutte et finalement le faire réparer. Mon problème était que Gulp 4 nécessite une version CLI de 2.x tandis que Gulp 3, pour une raison quelconque, a utilisé une version 3.x. Essentiellement, j'avais besoin de rétrograder les versions, mais après avoir essayé un milliard de choses à faire, rien ne semblait fonctionner, comme s'il y avait une version fantôme de CLI 3.x sur ma machine.
Je suis sûr que les gens de la ligne de commande de Savvier auraient pu le faire couler plus rapidement que moi, mais il s'avère que l'exécution de la commande - V Gulp révélera le chemin du fichier de l'endroit où Gulp est installé qui a révélé / usr / local / share / npm / bin / gulp pour moi, et la supprimer manuellement.
Maintenant que je pouvais utiliser Gulp 4.x, j'ai réécrit mon gulpfile.js en fonctions plus petites, chacune assez isolée en responsabilité. Une grande partie de cela est assez unique à ma configuration sur ce site, donc ce n'est pas censé être un passe-partout pour l'utilisation générique. Je publie juste parce que cela aurait certainement été utile pour moi de faire référence au fur et à mesure que je la créais.
Choses que fait mon gulpfile particulier
- Exécute un serveur Web (Browsersync) pour l'injection de style et la refonte automatique
- Exécute un observateur de fichiers (fonctionnalité Gulp native) pour exécuter les bonnes tâches sur les bons fichiers et faire les choses ci-dessus
- Traitement CSS
- Sass> Autoprefixer> minifant
- Break Stylesheet Cache des modèles (par exemple
- Mettre Style.css au bon endroit pour un thème WordPress et nettoyer les fichiers nécessaires uniquement pendant le traitement
- Traitement JavaScript
- Babel> concaténate> minifant
- Brisez le cache du navigateur pour le
s - Nettoyez des fichiers inutilisés créés dans le traitement
- Traitement SVG
- Faire un sprite SVG (un bloc de
S - Nommez-le comme un fichier sprite.php (donc il peut être inclus PHP dans un modèle) et le mettre dans un endroit spécifique
- Faire un sprite SVG (un bloc de
- Traitement PHP
- Mettez à jour l'appel Ajax dans le javascript pour cache-bust lorsque les annonces changent
Vidage de code!
const gulp = require ("gulp"), BrowseSync = require ("Browser-Sync"). Create (), sass = require ("gulp-sass"), postcss = require ("gulp-POSTCSS"), autopreFixer = require ("autoprefixer"), cssnano = require ("cssnano"), del = require ("del"), babel = require ("gulp-babel"), minify = require ("gulp minify"), concat = require ("gulp-contrat"), renom = require ("gulp-ramen"), remplacer = require ("gulp-replace"), svgSymbols = require ("gulp-svg-symbols"),, svgmin = require ("gulp-svgmin"); const paths = { Styles: { src: ["./scss/*.scss", "./art-direction/*.scss"], dest: "./css/" }, scripts: { 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"] }, ADS: { src: "./ads/*.php" } }; / * Styles * / fonction Dostyles (fait) { return gulp.series (style, moveMainstyle, DeleteoldMainstyle, Done => { cachebust ("./ header.php", "./"); fait(); })(fait); } Function Style () { Retour Gulp .src (chemins.styles.src) .Pipe (sass ()) .on ("erreur", sass.logerror) .Pipe (PostCSS ([autoprefixer (), cssnano ()])) .Pipe (gulp.dest (chers.styles.dest)) .Pipe (BrowSersync.Stream ()); } fonction moveMainStyle () { return gulp.src ("./ css / style.css"). tuyau (gulp.dest ("./")); } fonction deleteoldmainstyle () { return del ("./ css / style.css"); } / * Styles finaux * / / * Scripts * / fonction doscripts (fait) { Retour Gulp.Series ( préprocessjs, concatjs, minifyjs, Deletearfactjs, recharger, fait => { Cachebust ("./ Parts / Footer-Scripts.php", "./parts/"); fait(); } )(fait); } fonction preprocessjs () { Retour Gulp .src (paths.scripts.src) .tuyau( babel ({ Presets: ["@ babel / env"], Plugins: ["@ babel / plugin-proposal-class-properties"]] }) ) .Pipe (gulp.dest ("./ js / babel /")); } fonction concatjs () { Retour Gulp .src ([ "js / libs / jquery.lazy.js", "js / libs / jquery.fitvides.js", "js / libs / jquery.resizable.js", "JS / Libs / Prism.js", "js / babel / halthing-fixes.js", "JS / Babel / Global.js" ]) .Pipe (Concat ("Global-Concat.js")) .Pipe (gulp.dest ("./ js / concat /")); } fonction minifyjs () { Retour Gulp .src (["./ js / babel / *. js", "./js/concat/*.js"]) .tuyau( minify ({ ext: { src: ".js", min: ".min.js" } }) ) .Pipe (gulp.dest (paths.scripts.dest)); } fonction deletearfactjs () { retourne del ([ "./js/babel", "./js/concat", "./js/min/*.js", "! ./ JS / min / *. min.js" ])); } / * Terminer les scripts * / / * Svg * / fonction dosvg () { Retour Gulp .src (chers.svg.src) .Pipe (svgmin ()) .tuyau( svgSymbols ({ Modèles: ["Default-Svg"], svgattrs: { Largeur: 0, hauteur: 0, Affichage: "Aucun" } }) ) .Pipe (renommer ("icons / sprite / icons.php")) .Pipe (gulp.dest ("./")); } / * End svg * / / * Des choses génériques * / fonction cachebust (src, dest) { var cbstring = new Date (). getTime (); Retour Gulp .SRC (SRC) .tuyau( remplacer (/ cache_bust = \ d / g, function () { return "cache_bust =" cbstring; }) ) .Pipe (gulp.dest (dest)); } Fonction Reload (Done) { Browsersync.Reload (); fait(); } Function Watch () { Browsersync.Init ({ Proxy: "csstricks.local" }); gulp.watch (chemins.styles.src, dostyles); gulp.watch (paths.scripts.src, doscripts); gulp.watch (paths.svg.src, dosvg); gulp.watch (paths.php.src, rechargement); gulp.watch (paths.ads.src, fait => { cachebust ("./ js / global.js", "./js/"); fait(); }); } gulp.task ("par défaut", montre);
Problèmes / questions
- Le pire, c'est qu'il ne casse pas très intelligemment le cache. Lorsque CSS change, il brise le cache sur tous les feuilles de style, pas seulement les pertinents.
- Je contenais probablement simplement des icônes SVG avec PHP incluent () S à l'avenir plutôt que de gérer le spring.
- Le processeur SVG se casse si les SVG d'origine ont des attributs de largeur et de hauteur, ce qui semble mal.
- Gulp a-t-il changé une augmentation de la vitesse? Comme dans, en regardant uniquement des fichiers qui ont changé au lieu de tous les fichiers? Ou n'est-ce pas nécessaire?
- Dois-je redémarrer Gulp sur Gulpfile.js change?
- Bien sûr, serait bien si toutes les LIB que j'ai utilisées étaient compatibles ES6 afin que je puisse importer des choses plutôt que d'avoir à concaténer manuellement.
Toujours beaucoup plus que cela peut être fait. Idéalement, je venais d'ouvrir sur tout ce site, je n'y suis pas encore arrivé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Passons à travers un rafraîchissement rapide. Les cartes d'image datent jusqu'à HTML 3.2, où, d'abord, les cartes côté serveur, puis les cartes côté client ont défini les régions cliquables sur une image à l'aide de cartes et d'éléments de zone.

L'enquête sur l'état des développeurs est désormais ouverte à la participation, et contrairement aux enquêtes précédentes, il couvre tout sauf le code: carrière, lieu de travail, mais aussi santé, passe-temps, etc.

CSS Grid est un outil puissant pour créer des dispositions Web complexes et réactives. Il simplifie la conception, améliore l'accessibilité et offre plus de contrôle que les méthodes plus anciennes.

L'article traite de CSS Flexbox, une méthode de mise en page pour l'alignement et la distribution efficaces de l'espace dans les conceptions réactives. Il explique l'utilisation de Flexbox, la compare à la grille CSS et détaille la prise en charge du navigateur.

L'article traite des techniques de création de sites Web réactifs à l'aide de CSS, y compris des balises de méta de la fenêtre, des grilles flexibles, des médias fluides, des requêtes multimédias et des unités relatives. Il couvre également l'utilisation de la grille CSS et de Flexbox ensemble et recommande le cadre CSS

L'article traite de la propriété CSS-Box-Sizing, qui contrôle comment les dimensions des éléments sont calculées. Il explique des valeurs telles que la boîte de contenu, la boîte de bordure et la boîte de padding, et leur impact sur la conception de la disposition et l'alignement de la forme.

L'article discute de la création d'animations à l'aide de CSS, de propriétés clés et de combinaison avec JavaScript. Le principal problème est la compatibilité du navigateur.

L'article discute de l'utilisation de CSS pour les transformations 3D, les propriétés clés, la compatibilité du navigateur et les considérations de performances pour les projets Web. (Compte de caractère: 159)


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel
