刚开始玩Grunt并希望使用Stitch组合我的模块以供客户端使用。我对commonJS一般没有多少经验,这两本书对我来说都是新手 - 所以请耐心等待。
以下是我的Grunt文件的摘录:
var fs = require('fs');
var stitch = require('stitch');
module.exports = function(grunt) {
grunt.initConfig({
… SNIP …
stitch: {
dist: {
src: ['lib'],
dest: 'dist/<%= pkg.name %>.js'
}
}
});
grunt.registerMultiTask('stitch', 'Compile common.js modules with stitch', function() {
var done = this.async();
var paths = this.file.src.map(function(dir){
return __dirname + '/' + dir;
});
stitch.createPackage({ paths: paths }).compile(function(error, src){
if (error) {
return grunt.log.writeln(error);
}
file.write(name, src);
grunt.log.writeln("File '" + name + "' created.");
done();
});
});
};
然而,在运行grunt stitch
时,我得到了:
ReferenceError: can't compile /path/to/file.js
file is not defined
绝对路径是正确的,文件确实存在。
任何建议都将受到赞赏。
答案 0 :(得分:1)
事实证明,我试图合并的其中一个文件中的引用是不正确的。
这个问题可能因为过于本地化而被关闭,但在不太可能的情况下,有人可能会遇到同样的问题 - 检查所有require
次来电并查看他们是否指向正确的文件。请记住,路径将相对于根而不是需要的文件。
然而,这个错误信息尤其是非常神秘且基本无用的IMO。
答案 1 :(得分:0)
鉴于编译器的性质与针脚异步,使用grunt.util.async.forEachSeries
循环遍历文件解决了我的问题:https://github.com/fahad19/grunt-stitch-extra/blob/master/tasks/stitch_extra.js#L43
可以在此处找到grunt插件:https://github.com/fahad19/grunt-stitch-extra