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