wordpress 使用less 样式无法及时刷新
wordpress 样式无法及时刷新
wordpress编写style样式时,无法及时刷新页面,因此特意记录一番如何处理较好,网友的建议清除Chrome缓存,实时修改style携带的参数
折腾之旅开启
缓存
由于缓存问题,会导致浏览器不再去请求css,而是直接拿缓存里的,因而只需要让浏览器一直以为是新的文件即可,添加后缀时间戳无疑是最好的
// wordpress version 5.04
**functions.php**
wp_enqueue_style( 'twentynineteen-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ));
<!-- 修改为 -->
/**
* strtotime('2019-04-15') 可以改为 time() 但是那样每次请求都会重新更新,若是到了正式环境,其实只要第一次请求最新,后期都用缓存就好,因而建议使用 strtotime
*/
wp_enqueue_style( 'twentynineteen-style', get_stylesheet_uri(), array(), strtotime('2019-04-15'));
WP Super Cache缓存插件
有时候安装了该插件,导致大部分都缓存了,因而需要删除缓存就可以了

- 清除浏览器缓存

使用上述问题都没有解决我的问题,才发现我的更本不是这类问题
issue less
由于使用的是拿官方文档进行修改的,因而很多都是自己写的样式,由于style.css是唯一的,只有一个css,都是把其他样式进行合并在一起,这样可以减少请求,因而在使用less进行编写时就出了一个很意外的问题
code
style.less
// normalize
@import './less/normalize.less';
// reset
@import './less/reset.less';
// globel
@import './less/globel.less';
// index
@import './less/index.less';
....
大致就是这样的,而我修改的是期中一个文件globel.less,每次更新都没有,及时在页面中显示想要的样式,才发现原来是用了less的缘故.在使用less时,由于又引入其他less文件,导致在style.less无法监听其他less文件是否修改,因而现在思考如何在less文件进行修改时,style.less也进行修改就可以了
探索之旅
前前后后整理了多种思路,坚持许久终于有了结果,虽然不是心中最好的,但好歹这条路通了,还是可以的
实现的大致三种方式
nodemon来监听文件执行系统命令gulp利用对应的插件进行操作less-watch-compilerless的一个插件(这个真是无心插柳柳成荫,却成了解决当前 问题的关键)
nodemon code
利用 node 的 child_process 来执行系统命令,同时利用 nodemon 来监听文件变化
code
index.js
//
const exec = require('child_process').exec
const path = require('path')
// const cmd = 'node_modules/less/bin/lessc less/style.less style.css'
// const cmd = `${path.join(__dirname + 'node_modules\//less\/bin\/lessc')} ${path.join(__dirname + 'less\/style.less')} style.css`
const cmd = 'start.sh'
exec(cmd, (err, stdout, stderr) => {
console.log(err)
})
nodemon.json
...
"watch": ["less", "index.js"], // 需要监听的文件
...
start.sh
node_modules/less/bin/lessc less/style.less style.css
总是哪里缺点,因为相当于监听多个了。
index.js和less变化,各自行动,无法在less变化,同时执行index.js,改配置
nodemon.json
...
"events": {
"start": "start.sh",
"restart": "start.sh"
},
依旧无法生效,总是无法进行关联,先放弃了
- 注意
- window无法直接通过运行命令,需要周转一下 说明
gulp
本来是想利用gulp-less-changed这个插件来进行处理,可花费最长的时间,却并没有什么用
code
const gulp = require('gulp');
const lessChanged = require('gulp-less-changed');
const less = require('gulp-less');
const autoprefixer = require('gulp-autoprefixer')
const watchPath = require('gulp-watch-path')
const gutil = require('gulp-util')
// 避免错误时停止
const combiner = require('stream-combiner2')
const handleError = function (err) {
const colors = gutil.colors;
console.log('\n')
gutil.log(colors.red('Error!'))
gutil.log('fileName: ' + colors.red(err.fileName))
gutil.log('lineNumber: ' + colors.red(err.lineNumber))
gutil.log('message: ' + err.message)
gutil.log('plugin: ' + colors.yellow(err.plugin))
}
gulp.task('lesscss', () => {
const combined = combiner.obj([
gulp.src('less/*.less'),
lessChanged(),
autoprefixer({
browsers: 'last 2 versions'
}),
less(),
gulp.dest('less/')
])
combined.on('error', handleError)
})
gulp.task('wathcless', () => {
const watcher = gulp.watch('less/*.less', event => {
const paths = watchPath(event, 'less/', 'less/')
gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath)
gutil.log('Dist' + paths.distPath)
const combined = combiner.obj([
gulp.src(paths.srcPath),
lessChanged(),
autoprefixer({
browsers: 'last 2 versions'
}),
less(),
gulp.dest(paths.distDir)
])
combined.on('error', handleError)
})
watcher.on('change', event => {
console.log('file' + event.path + 'was' + event.type)
if (event.type === 'changed') {
gulp.src(['less/style.less'])
.pipe(lessChanged())
.pipe(less())
.pipe(gulp.dest('dist/style.css'))
}
})
})
// 执行多个任务
gulp.task('default', ['lesscss', 'wathcless'])
less某个文件变了,却并没有引起其他引入文件的变化,又得放弃,无奈的狠啊
less-watch-compiler
这个使用起来相当简单,有点类似nodemon,只是别人已经用不同的解决了上述的问题
package.json
"scripts": {
"dev": "less-watch-compiler src dist style.less"
},
执行命令
npm run dev // 可以一直监听改变
同时利用 vscode autoprefixer 就可以解决兼容问题,以及文件变化,重新进行编译,而我也在wordpress中测试成功了,算是暂时解决了吧
总结
- 耗费好长时间才算解决,还是要多了解挺好的
- window的命令执行确实有弊端,有点hold不住了
- gulp虽然有点日薄西山,但是确实有其独到之处,学起来比webpack快多了,想想webpack一脸...
- 后期还得想想 gulp这个解决方案,避免有人做出来了,只是没有找到了而已
wordpress 使用less 样式无法及时刷新的更多相关文章
- 【MFC】如何在MFC创建的程序中更改主窗口的属性 与 父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响 与 窗体区域绘制问题WS_CLIPCHILDREN与WS_CLIPSIBLINGS
如何在MFC创建的程序中更改主窗口的属性 摘自:http://blog.sina.com.cn/s/blog_4bebc4830100aq1m.html 在MFC创建的单文档界面中: (基于对话框的, ...
- wordpress添加文章浏览统计(刷新不重复)
wordpress本身不带文章浏览统计,可以用插件wp-postview,但是刷新还是算一个浏览次数. 1.首先在主题下functions.php里增加以下代码,这段代码也是网上可以找到的 //add ...
- 禁用wordpress模板默认样式
我们知道wordpress主题比如twentytwenty都会有样式,如果不想使用它们的默认样式怎么处理呢?其实很简单,随ytkah一起来看看吧.进入2020主题的function.php文件,里面有 ...
- wordpress默认css样式class和id集合
你是否想过如何设计WordPress主题的不同元素?每个主题都不一样,但是有一些CSS的class和id是由WordPress生成的.我们将逐一介绍一些最重要的默认WordPress样式,方便初学者快 ...
- 【完美解决】vue,页面跳转样式错位但是刷新又好了的情况
在vue文件中,做样式分离: 将覆盖样式单独写在一个style标签内,原页面写在 scoped样式作用域下.
- 手动抠下的wordpress登录页面样式
CSS文件 login.css body, html { height: 100%; margin: 0; padding: 0; } html[Attributes Style] { -webkit ...
- 如何在Ubuntu 14.10 上安装WordPress?
http://codex.wordpress.org/zh-cn:安装WordPress 介绍 如果你想快捷.简单.免费的创建个人网站的话,WordPress 是你最佳的选择. WordPress 是 ...
- wordpress 自己制作子主题 child theme
使用 WordPress 的子主题(Child Themes)功能快速制作自己的主题 在了解子主题功能之前,先来看一下你在使用 WordPress 的时候是否是这样:不会自己制作主题,只好从网上下载一 ...
- WordPress建站和搭独立博客
之前有帮外面的公司建站的经历 不去管html css js 服务器脚本等 对于菜鸟新手而言, 一个WAMP + WordPress(博客程序)就够了 都弄好了再部署到云端服务器上 其实整个过程只是安装 ...
随机推荐
- vc++引用外部dll时报error LNK2019: 无法解析的外部符号
初学cpp,因为之前装linux下各种软件的时候,知道LD_LIBRARY_PATH可以指定动态库的目录.今天在vc集成log4cpp的时候,编译main时报error LNK2019: 无法解析的外 ...
- tomcat应用org.apache.catalina.LifecycleException: Failed to stop component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]异常的根本原因
早上,有个应用又挂了,客户端打开时报404,看进程是还在的.倒回第一次异常的地方,可见catalina.out中有如下信息: 08:46:56.646 [ContainerBackgroundProc ...
- Linux系统对IO端口和IO内存的管理
引用:http://blog.csdn.net/ce123_zhouwei/article/details/7204458 一.I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址 ...
- 更换 nodejs npm 镜像为 淘宝 镜像
淘宝npm镜像官方介绍文档:https://npm.taobao.org/ ,使用命令在这个官方文档里查询. 安装工具cnpm: $ npm install -g cnpm --registry=ht ...
- Fast特征点的寻找和提取
一.基础 最初由Rosten和Drummond [Rosten06]提出的FAST(加速段测试的特征)特征检测算法是基于将点P与其包围圆内的点集的直接比较的思想. 基本思想是,如果附近的几个点与P类似 ...
- 20145329 《网络对抗技术》浏览器MS11_050安全漏洞攻击
两台虚拟机: kali ip:192.168.96.130 windows xp sp3(包含IE7)ip:192.168.96.128 1.在kali终端中开启msfconsole. 2.进入漏洞模 ...
- 递增三元组|2018年蓝桥杯B组题解析第六题-fishers
标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i, j ...
- BZOJ1726: [Usaco2006 Nov]Roadblocks第二短路 K短路
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...
- DBMS 数据库管理系统 DataBase Management System
- HDU 5889 Barricade(最短路+最小割)
http://acm.hdu.edu.cn/showproblem.php?pid=5889 题意: 给出一个图,帝国将军位于1处,敌军位于n处,敌军会选择最短路到达1点.现在帝国将军要在路径上放置障 ...