thinkphp5(tp5)整合gulp到项目实现静态资源的压缩
不知道大家是否会遇到每次代码提交都手动取消选中config.php和database.php的烦恼。(config.php文件线下线上打开关闭调试模式和显示关闭错误 database.php线下线上数据库的配置)
反正我以前是每次git提交代码都手动的取消他们的选中状态再提交的 ( svn的话可以把他们移动到忽略文件的位置 但git就算忽略了 修改后还是会弹出来让你提交...)。
这样先不说繁琐不繁琐 有时候忙着提交代码忘记取消他们就提交了这很正常
但是一旦提交到正式环境那后果真是灾难性的!
所以闲话不多说了 借着这次thinkphp5整合gulp到项目实现静态资源的合并、压缩、MD5后缀 一起就把自己的解决方案写出来(大牛们有更好的解决方案欢迎探讨)。
先看看我的目录结构:第一步
:打开Thinkphp5根目录下的 thinkphp\start 引导文件 添加以下代码:
// 定义资源和模板使用目录
// 定义资源和模板使用目录 if($_SERVER['HTTP_HOST'] == 'www.php.cn'){ //控制文件的调用 define('STATICS', '/dist'); //静态文件调用路径 define('TEMPL', '../dist/'); //模板文件调用路径 //控制是否需要显示错误信息 define('IS_DEBUG', false); //是否debug define('ERR_TPL', THINK_PATH . 'tpl' . DS . 'error.tpl'); //错误模板 //数据库配置 define('HOST_NAME', 'xxx.xx.xx.x'); //数据库地址 define('USERNAME', 'xxx'); //用户名 define('PASSWORD', 'xxxxx'); //密码 }else{ //控制文件的调用 define('STATICS', '/static/assets'); define('TEMPL', '../template/'); //控制是否需要显示错误信息 define('IS_DEBUG', true); //是否debug define('ERR_TPL', THINK_PATH . 'tpl' . DS . 'think_exception.tpl'); //错误模板 //数据库配置 define('HOST_NAME', '127.0.0.1'); //数据库地址 define('USERNAME', 'xxx'); //用户名 define('PASSWORD', 'xxx'); //密码 }
(注:xxx是需要根据自己的实际情况修改的数据)
1、在index模块下的config.php文件增加或修改成以下代码:
//配置文件 return [ 'template' => [ //模板路径 'view_path'=> TEMPL, //定义模板布局 'layout_on' => true, 'layout_name' => 'layout', 'layout_item' => '{__CONTENT__}' ], ];
2、在总的config.php文件中替换或增加以下代码:
// 应用调试模式 'app_debug' => IS_DEBUG, // 视图输出字符串内容替换 'view_replace_str' => [ '__STATIC__' => STATICS, ], // 异常页面的模板文件 'exception_tmpl' => ERR_TPL, // 显示错误信息 'show_error_msg' => IS_DEBUG,
3、然后所有的资源引用都用 __STATIC__ 代替资源路径:
例如:__STATIC__/js/jquery.min.js
以上是针对Thinkphp5的一些配置
以下开始整合gulp进thinkphp5项目
第二步;在thinkphp5项目根目录中创建 package.json;
{ "name": "zhuzong", "version": "0.0.1", "description": "资源鸟", "scripts": {}, "author": "zhuzong", "license": "Apache2", "devDependencies": { "browser-sync": "^2.14.0", "del": "^2.2.1", "gulp": "^3.9.1", "run-sequence":"^1.2.2", "gulp-clean-css": "^2.0.12", "gulp-csscomb": "^3.0.7", "gulp-cleanhtml": "^1.0.1", "gulp-minify-inline-scripts":"0.0.6", "gulp-imagemin": "^3.0.2", "gulp-rev": "^7.1.0", "gulp-rev-collector": "^1.0.5", "gulp-uglify": "^2.0.0" } }
第三步;在thinkphp5项目根目录中创建 gulpfile.js;
// gulpfile.js var gulp = require('gulp'); runSequence = require('run-sequence'), clearnHtml = require('gulp-cleanhtml'), minifyInline = require('gulp-minify-inline-scripts'), imagemin = require('gulp-imagemin'); uglify = require('gulp-uglify'); cleanCss = require('gulp-clean-css'); rev = require('gulp-rev'); del = require('del'); revCollector = require('gulp-rev-collector'); browserSync = require('browser-sync').create(), reload = browserSync.reload; var dir = './bolg/dist'; var dir2= './bolg/public/dist'; //复制html gulp.task('copyHtml', function(){ return gulp.src('./bolg/template/**/*.html') .pipe(clearnHtml()) .pipe(minifyInline()) .pipe(gulp.dest(dir)); }); //复制Css gulp.task('copyCss',function(){ return gulp.src(['./bolg/public/static/assets/css/*.css','./bolg/public/static/assets/demo/css/*.css']) .pipe(cleanCss({conpatibility: 'ie8'})) .pipe(rev()) .pipe(gulp.dest(dir2+'/css')) .pipe(rev.manifest()) .pipe(gulp.dest(dir+'/manifest/css')); }); //复制字体 gulp.task('copyFont',function(){ return gulp.src('./bolg/public/static/assets/fonts/*') .pipe(gulp.dest(dir2+'/fonts')) }); //复制JS gulp.task('copyJs', function(){ return gulp.src(['./bolg/public/static/assets/js/*.js','./bolg/public/static/assets/demo/js/*.js']) .pipe(uglify()) .pipe(rev()) .pipe(gulp.dest(dir2+'/js')) .pipe(rev.manifest()) .pipe(gulp.dest(dir+'/manifest/js')); }); //复制图片 gulp.task('copyImg', function () { return gulp.src('./bolg/public/static/assets/images/**/*') .pipe(imagemin()) .pipe(rev()) .pipe(gulp.dest(dir2+'/images')) .pipe(rev.manifest()) .pipe(gulp.dest(dir+'/manifest/images')); }); //对html中的静态资源(css,js,image)进行MD5后的文件引用替换 gulp.task('rev', function(){ return gulp.src([dir+'/manifest/**/*.json', dir+'/**/*.html']) //找到json,和目标html文件路径 .pipe(revCollector({ replaceReved: true, })) .pipe(gulp.dest(dir)); }); //监视文件,并进行自动操作 task : server gulp.task('server',function(){ browserSync.init({ proxy : 'http://www.blog.com', notify: false, // 刷新不弹出提示 }); gulp.watch('./bolg/template/**/*.html', ['html']); gulp.watch('./bolg/public/static/assets/css/*.css', ['css']); gulp.watch('./bolg/public/static/assets/js/*.js', ['js']); gulp.watch('./bolg/public/static/assets/images/**/*.{jpg,png}',['img']); }); //设置默认任务 task : default gulp.task('default', function (done) { condition = false; //依次顺序执行 runSequence( ['clear'], ['copyImg'], ['copyHtml'], ['copyCss'], ['copyFont'], ['copyJs'], ['rev'], ['server'], done); }); //html gulp.task('html', function (done) { condition = false; //依次顺序执行 runSequence( ['copyHtml'], ['rev'], ['bwrel'], done); }); //css gulp.task('css', function (done) { condition = false; //依次顺序执行 runSequence( ['copyCss'], ['rev'], ['bwrel'], done); }); //js gulp.task('js', function (done) { condition = false; //依次顺序执行 runSequence( ['copyJs'], ['rev'], ['bwrel'], done); }); //img gulp.task('img', function (done) { condition = false; //依次顺序执行 runSequence( ['copyImg'], ['rev'], ['bwrel'], done); }); //reload gulp.task('bwrel', function(){ gulp.watch(dir+'/**/*.html').on("change", reload); }); //清除开发文件夹(dist) gulp.task('clear', function(){ del(dir); del(dir2); });
把 gulpfile.js 中的src 和 dist 变量替换为自己项目的实际目录;
把proxy 替换为自己的本地自定义域名;
第四步: 命令行运行如下命令(前提是已经安装好node.js和gulp ):
# 安装各种包 cnpm install # 运行gulp gulp
如果不出意外;会自动编译并打开浏览器了;
以下就是被压缩过的文件 标红的是经过MD5后的文件引用替换过的路径
到此为止thinkphp5整合gulp就介绍完了。有任何错误和不合适的地方欢迎指出,大家一起共同进步!
Atas ialah kandungan terperinci thinkphp5(tp5)整合gulp到项目实现静态资源的压缩. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
