gpt4 book ai didi

javascript - 如何创建 Grunt Multitask 来处理我的模板

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:46 24 4
gpt4 key购买 nike

我正在使用 Gruntjs 处理我的 Joomla! 模板。扩展。

我的主目录中有 3 个目录和一个 Grunt 文件:componenttmpltasksGruntfile.js

tasks 目录中,我有一个名为 compile.js 的文件:

module.exports = function( grunt ) {
grunt.registerMultiTask('compile', 'Compiles Joomla! extension templates', function() {

// Iterate over all specified file groups.
this.files.forEach(function(file) {

var template, phpcode;

var src = file.src;
var dest = file.dest;

if (!grunt.file.exists(src)) {
grunt.log.warn('Source file "' + src + '" not found.');
return false;
}

template = grunt.file.read(src);
phpcode = grunt.template.process(template);

// Write the destination file.
grunt.file.write(dest, phpcode);

// Print a success message.
grunt.log.writeln('File "' + dest + '" created.');
});
});
};

我的 Gruntfile 有以下代码:

module.exports = function(grunt) {
grunt.initConfig({
compile: {
model: {
files: [
{src: 'tmpl/model.tmpl', dest: 'component/models/user.php'},
{src: 'tmpl/model.tmpl', dest: 'component/models/company.php'}
]
}
}
});

// Actually load this plugin's task.
grunt.loadTasks('tasks');

grunt.registerTask('compile', ['compile']);
};

当我运行命令gruntcompile

node.js:893
var fn = runInThisContext(source, this.filename, true);
^
TypeError: undefined is not a function
at createWritableStdioStream (node.js:555:18)
at process.stdout (node.js:612:16)
at write (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt/log.js:78:12)
at writeln (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt/log.js:85:3)
at Object.log.writeln (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt/log.js:96:3)
at writeln (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt/fail.js:39:13)
at Object.fail.fatal (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt/fail.js:55:3)
at process.uncaughtHandler (/home/qawe/Desktop/code/compile/node_modules/grunt/lib/grunt.js:123:10)
at process.EventEmitter.emit (events.js:95:17)
at process._fatalException (node.js:272:26)

我是不是做错了什么?请帮忙,我还是 Grunt 的新手。

最佳答案

我的感觉是您通过定义两次编译覆盖了任务名称。我使用默认任务测试了您的代码并得到了以下结果:

$ grunt
Running "compile:model" (compile) task
Warning: Arguments to path.join must be strings Use --force to continue.

您正在 var src 中传递一个数组,如果您想将数组传递给自定义函数,您可能需要迭代这些数组。否则,如果您只使用一个路径,请执行 var src = file.src.toString();

然后更改您的 registerTask 以使用不同的名称,您应该已准备就绪:

grunt.registerTask('docompile', ['compile']);

关于javascript - 如何创建 Grunt Multitask 来处理我的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com