也许我的问题听起来很愚蠢,但我在没有找到答案的情况下到处搜索。
我需要存储Grunt在变量中操作的文件名,以便能够在其他任务中重用它。
即
public void DoSomething<TypeP>(TypeP P)
{
if (P is Child1)
{
}
else if(P is Child2)
{
}
}
在此示例中,我重命名附加日期的文件。我需要将生成的文件名存储在一个变量中,以便在其他任务中重用,最后登录到控制台。
需要一些帮助来了解Grunt如何使用文件!
修改 如上所述,我已经用真实值改变了路径。
我的意思是:
copy: {
dist: {
files: [{
expand: true,
cwd: 'tmp/output/',
src: ['*.html'],
dest: 'dist',
rename: function(dest, src) {
var d = new Date();
var mh = d.getMonth() + 1;
var dy = d.getDate();
var yr = d.getFullYear();
return dest + "/" + yr + "_" + mh + "_" + dy + "_" + src;
}
}]
}
}
的文件
foo.html
TNX
答案 0 :(得分:0)
您可以执行以下操作:
在每个Task的外部作用域中声明一个变量,并为其指定一个空数组。例如:
var cachedFileNames = [];
然后在rename
任务的copy
函数内,使用Array.push()
方法将每个动态生成的文件名存储在cachedDirNames
数组中。例如:
cachedFileNames.push(fileName);
cachedFileNames
数组中的文件名现在可以在其他任务中重复使用(如下面的自定义logFileNames
任务所示)。
<强> Gruntfile.js 强>
以下Gruntfile.js
要点展示了上述第1-3点:
module.exports = function (grunt) {
var cachedFileNames = []; /* 1. Filenames are dynamically
added via the `copy` task.*/
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.initConfig({
copy: {
dist: {
files: [{
expand: true,
cwd: 'tmp/output/',
src: ['*.html'],
dest: 'dist',
rename: function(dest, src) {
var d = new Date();
var mh = d.getMonth() + 1;
var dy = d.getDate();
var yr = d.getFullYear();
var fileName = yr + "_" + mh + "_" + dy + "_" + src;
cachedFileNames.push(fileName); // 2. Cache each new filename.
return dest + "/" + fileName;
}
}]
}
}
});
// 3. Custom Task to demonstrate the `cachedFileNames`
// array can be accessed via another task.
grunt.registerTask('logFileNames', function() {
cachedFileNames.forEach(function(fileName) {
grunt.log.writeln(fileName);
})
})
grunt.registerTask('default', [ 'copy', 'logFileNames' ]);
};