Javascript 更改包含的文件时,减少吞咽而不是减少建筑
我正在使用以下文件夹结构:Javascript 更改包含的文件时,减少吞咽而不是减少建筑,javascript,less,gulp,gulp-watch,gulp-less,Javascript,Less,Gulp,Gulp Watch,Gulp Less,我正在使用以下文件夹结构: css |_ main.css | |_ less |_ main.less |_ sub.less | |_ shared |_ variables.less |_ header.less |_ footer.less 我在我的gulpfile.js中使用了以下内容 Mymain.less包括所有其他less文件的@imports @import "sub.less"; @import "./shared
css
|_ main.css
|
|_ less
|_ main.less
|_ sub.less
|
|_ shared
|_ variables.less
|_ header.less
|_ footer.less
我在我的gulpfile.js中使用了以下内容
Mymain.less包括所有其他less文件的@imports
@import "sub.less";
@import "./shared/variables.less";
@import "./shared/header.less";
@import "./shared/footer.less";
- 如果更新了较少的文件(main.LESS除外),则文件main.css不会更改
- 如果更新了main.less(在任何其他less文件更改后需要),则main.css将更新
谢谢。我无法直接重现您的问题,但我想这可能是因为修改的文件是从文件系统文件缓存读取的 Less使用调用读取导入的文件。默认情况下,此调用使用
r
选项打开文件。文档没有明确说明r
选项是否使用文件系统文件缓存,但文档会告诉您绕过文件系统文件缓存:
“rs”-在同步模式下打开文件进行读取。指示
操作系统以绕过本地文件系统缓存
这主要用于在允许的情况下打开NFS装载上的文件
您需要跳过可能过时的本地缓存。它有一个非常真实的故事
对I/O性能的影响,因此除非需要,否则不要使用此标志
请注意,这不会将fs.open()转换为同步块
呼叫如果这是您想要的,那么您应该使用fs.openSync()
可能的解决办法:
使用rs
选项打开文件。找到node\u modules/gulp less/node\u modules/less/lib/less node/file manager.js
文件,并替换为以下代码:
fs.readFile(fullFilename, {encoding: 'utf-8', flag: 'rs'}, function(e, data) {
否则,您可能会想知道为什么修改后的文件仍在文件缓存中,并尝试重新同步文件缓存:有一个针对您的工作流的插件 这个问题更多的是关于观看,而不是关于吞咽。您能否将手表部分包含在您的
gulpfile
中?
fs.readFile(fullFilename, {encoding: 'utf-8', flag: 'rs'}, function(e, data) {