Javascript 查看保存在文件夹中的所有文件,并通过gulp对另一个文件进行更改

Javascript 查看保存在文件夹中的所有文件,并通过gulp对另一个文件进行更改,javascript,json,gulp,gulp-task,Javascript,Json,Gulp,Gulp Task,我的基本要求是查找对js、css文件夹中的任何文件所做的更改,并更新JSON文件 目录结构: html css x、 css y、 css js a、 js b、 js c、 js 服务器 versions.json versions.json: { "css": { "x.css": 1, "y.css": 1, }, "js": { "a.js": 1, "b.js": 1, "c.js": 1, },

我的基本要求是查找对
js
css
文件夹中的任何文件所做的更改,并更新JSON文件


目录结构:

  • html
    • css
      • x、 css
      • y、 css
    • js
      • a、 js
      • b、 js
      • c、 js
    • 服务器
      • versions.json
versions.json

{
  "css": {
     "x.css": 1,
     "y.css": 1,
  },
  "js": {
     "a.js": 1,
     "b.js": 1,
     "c.js": 1,
  },
}
gulp.task('upgrade-file-version', function() {
  gulp.src('server/versions.json')
    .pipe(modify({
        fileModifier: function(file, contents)
        {
           var fileContent = contents;
           var parsedObj = JSON.parse(fileContent);
           var dir = 'js';   // folder name
           var filename = 'a.js';  // file name
           var oldVersion = parsedObj[dir][filename];
           var newVersion = oldVersion + 1;
           parsedObj[dir][filename] = newVersion;
           var newFileContent = JSON.stringify(parsedObj, null, 4);

           return newFileContent;
        }
    }))
    .pipe(gulp.dest('server/'));
});
当我对
js
css
文件夹中的任何文件进行任何更改时,我希望gulp返回已保存文件的名称,并在
versions.json
中查找密钥,并将其值增加
1
,即,如果我保存
a.js
,则它应该只更新
“a.js”的值
versions.json中的
2


以下是我所做的:

{
  "css": {
     "x.css": 1,
     "y.css": 1,
  },
  "js": {
     "a.js": 1,
     "b.js": 1,
     "c.js": 1,
  },
}
gulp.task('upgrade-file-version', function() {
  gulp.src('server/versions.json')
    .pipe(modify({
        fileModifier: function(file, contents)
        {
           var fileContent = contents;
           var parsedObj = JSON.parse(fileContent);
           var dir = 'js';   // folder name
           var filename = 'a.js';  // file name
           var oldVersion = parsedObj[dir][filename];
           var newVersion = oldVersion + 1;
           parsedObj[dir][filename] = newVersion;
           var newFileContent = JSON.stringify(parsedObj, null, 4);

           return newFileContent;
        }
    }))
    .pipe(gulp.dest('server/'));
});
插件:

变量
dir
filename
需要具有文件夹的值和已更改文件的名称


对这种方法或其他方法的任何改进都可以

为什么要使用Gulp?只需使用
fs
方法重写文件即可。不过,您可以使用Gulp来监视文件更改。@MaxArt
fs
方法是什么?我的意思是。特别是
readFile
writeFile
。我不知道node.js。你能告诉我如何在上面的代码中使用它吗?如果你不使用Node.js,你是如何执行Gulp任务的?事实上,您是:Node是底层环境,具有所有内置api。您所需要做的就是像
var fs=require('fs')
然后准备好,使用
fs.readFile
等等。我建议在继续之前阅读Node的文档,您会有一个更清晰的想法。