gulpile 만 공유합니다
이 사이트를 위해 설정 한 Gulp Processing은 경주 조건을 갖기 시작했습니다. 내 Watch 명령을 실행하고 일부 CSS를 변경했으며 처리는 때때로 처리 중에 정리해야 할 여분의 추가 파일 뒤에 남겨질 수 있습니다. 파일이 파일 시스템에 착륙하기 전에 정리 작업이 발생한 것처럼 (또는 무언가… 실제로 바닥에 도달하지 못했습니다).
그 버그의 세부 사항에 대해서는 절대 신경 쓰지 마십시오. 나는 3.x 대신 Gulp 4.x를 사용하기 위해 물건을 업그레이드하고 내장 Gulp.series 명령에서 물건을 실행하여 도움을 줄 것이라고 생각했습니다.
Gulp 4.x 를 얻는 것은 나를위한 여정의 도대체였습니다. 내 문제는 Gulp 4에 CLI 버전이 2.x를 필요로하는 반면 Gulp 3은 어떤 이유로 든 3.x 버전을 사용했다는 것입니다. 본질적으로 나는 버전을 다운 그레이드 해야했지만, 그렇게하기 위해 10 억 가지를 시도한 후에는 내 컴퓨터에 Cli 3.x의 고스트 버전이있는 것처럼 아무것도 작동하지 않는 것 같습니다.
나는 Savvier Command-Line 사람들이 나보다 더 빨리 이것을 쫓아 낼 수 있다고 확신하지만, 실행중인 명령 -v gulp는 Gulp가 설치된 곳의 파일 경로를 공개하여/usr/local/share/npm/bin/gulp가 나에게 수동으로 그것을 삭제하기 전에 수동으로 2.x로 다시 시작했습니다.
Gulp 4.x를 사용할 수 있으므로 Gulpfile.js를 더 작은 기능으로 다시 작성하여 각각 상당히 분리되어 있습니다. 이것의 대부분은이 사이트에서 내 설정에 매우 고유 하므로 일반적인 사용을위한 보일러 플레이트가 아닙니다. 나는 단지 출판하고 있기 때문에 내가 그것을 만들 때 참조하는 것이 도움이되었을 것입니다.
내 특정 gulpile이하는 일
- 스타일 주입 및 자동 반영을 위해 웹 서버 (BrowserSync)를 실행합니다.
- 올바른 파일에서 올바른 작업을 실행하고 위의 작업을 수행하기 위해 파일 감시자 (Native Gulp 기능)를 실행합니다.
- CSS 처리
- sass> autoprefixer> 미니
- 템플릿에서 스타일 시트 캐시를 끊습니다 (예 :
- Style.css를 WordPress 테마에 적합한 장소에 넣고 처리 중에만 필요한 파일 정리
- 자바 스크립트 처리
- 바벨> 컨 컨트레이트> 미니
-
s의 브라우저 캐시를 중단하십시오 - 처리시 생성 된 사용되지 않은 파일을 정리하십시오
- SVG 처리
- SVG 스프라이트 (
s의 블록을 만드십시오 - sprite.php 파일로 이름을 지정하고 (템플릿에 php로 클루할 수 있음) 특정 어딘가에 넣으십시오.
- SVG 스프라이트 (
- PHP 처리
- 광고가 변경 될 때 JavaScript의 Ajax 호출을 캐시 버스트로 업데이트하십시오.
코드 덤프!
const gulp = 요구 ( "gulp"), browsersync = 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-concat"), Rename = 요구 사항 ( "Gulp-Rename"), replace = require ( "gulp-replace"), svgsymbols = require ( "gulp-svg-symbols"), svgmin = 요구 사항 ( "gulp-svgmin"); const paths = { 스타일 : { src : [ "./scss/*.scss", "./art-direction/*.scss"], DEST : "./css/" }, 스크립트 : { 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"] }, 광고 : { SRC : "./ads/* .php" } }; / * 스타일 */ 함수 dostyles (완료) { gulp.series (스타일, movemainstyle, deleteoldmainstyle, done => { CACHEBUST ( "./ header.php", "./"); 완료(); })(완료); } 기능 스타일 () { Gulp를 반환합니다 .Src (paths.styles.src) .pipe (sass ()) .on ( "오류", sass.logerror) .pipe (postcss ([autoprefixer (), cssnano ()])) .pipe (gulp.dest (paths.styles.dest)) .pipe (browsersync.stream ()); } 함수 movemainstyle () { gulp.src ( "./ css/style.css"). 파이프 (gulp.dest ( "./")); } 함수 deleteoldMainStyle () { return del ( "./ css/style.css"); } / * 끝 스타일 */ / * 스크립트 */ 함수 doscripts (완료) { gulp.series 반환 ( 사전 처리, concatjs, Minifyjs, deleteartifactjs, 다시로드, 완료 => { CACHEBUST ( "./ parts/footer-scripts.php", "./parts/"); 완료(); } )(완료); } 함수 preprocessjs () { Gulp를 반환합니다 .src (paths.scripts.src) .파이프( 바벨({ 사전 설정 : [ "@babel/env"], 플러그인 : [ "@babel/plugin-proposal class-class-class-class-properties"] }) )) .pipe (gulp.dest ( "./ js/babel/")); } 함수 concatjs () { Gulp를 반환합니다 .Src ([ "JS/libs/jquery.lazy.js", "JS/libs/jquery.fitvids.js", "JS/libs/jQuery.resizable.js", "JS/Libs/Prism.js", "JS/Babel/Highlighting-Fixes.js", "JS/Babel/Global.js" ]))) .pipe (concat ( "global-concat.js")) .pipe (gulp.dest ( "./ js/concat/")); } 함수 minifyjs () { Gulp를 반환합니다 .src ([ "./ js/babel/*. js", "./js/concat/* .js"])))) .파이프( 작게 하다({ 내선 : { SRC : ".js", 민 : ".min.js" } }) )) .pipe (gulp.dest (paths.scripts.dest)); } 함수 deleteartifactjs () { return del ([ "./js/babel", "./js/concat", "./js/min/*.js", "! ./ js/min/*. min.js" ]); } / * 엔드 스크립트 */ / * svg */ 함수 dosvg () { Gulp를 반환합니다 .SRC (Paths.svg.src) .pipe (svgmin ()) .파이프( svgsymbols ({ 템플릿 : [ "Default-SVG"], svgattrs : { 너비 : 0, 높이 : 0, 디스플레이 : "없음" } }) )) .pipe (이름 바꾸기 ( "아이콘/스프라이트/아이콘 .php")) .pipe (gulp.dest ( "./")); } / * 종료 svg */ / * 일반적인 것 */ 기능 캐시 버스트 (SRC, DEST) { var cbstring = new date (). gettime (); Gulp를 반환합니다 .SRC (SRC) .파이프( 대체 ( /cache_bust = \ d /g, function () { "CACHE_BUST ="CBSTRING을 반환합니다. }) )) .pipe (gulp.dest (dest)); } 함수 Reload (완료) { Browsersync.reload (); 완료(); } 기능 Watch () { browsersync.init ({ 프록시 : "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, Reload); gulp.watch (paths.ads.src, done => { CACHEBUST ( "./ js/global.js", "./js/"); 완료(); }); } gulp.task ( "기본", 시계);
문제 / 질문
- 최악의 부분은 캐시를 지능적으로 매우 깨뜨리지 않는다는 것입니다. CSS가 변경되면 관련 캐시뿐만 아니라 모든 스타일 시트의 캐시를 끊습니다.
- 아마도 PHP가있는 SVG 아이콘은 아마도 스프링을 다루기보다는 미래의 ()를 포함합니다.
- 원래 SVG에 너비와 높이 속성이 있으면 SVG 프로세서가 분해됩니다.
- Gulp 변화가 속도 향상일까요? 마찬가지로 모든 파일 대신 변경된 파일 만 살펴 보십니까? 아니면 더 이상 필요하지 않습니까?
- gulpfile.js 변경에서 Gulp를 다시 시작해야합니까?
- 내가 사용한 모든 Libs가 ES6 호환이라면 수동으로 연결되지 않고 물건을 가져올 수 있다면 좋을 것입니다.
항상 할 수있는 일이 훨씬 더 많습니다. 이상적으로, 나는이 사이트 전체를 오픈 소스를 열었습니다. 나는 아직 거기에 도착하지 않았습니다.
위 내용은 gulpile 만 공유합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

프론트 엔드 개발에서 Windows와 같은 구현 방법 ...
