2

刚开始玩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

但是,绝对路径是正确的,并且该文件确实存在。

任何意见,将不胜感激。

4

2 回答 2

1

事实证明,我尝试合并的文件之一中的引用不正确。

这个问题应该因为过于本地化而被关闭,但在不太可能的情况下,有人可能会遇到同样的问题——<strong>检查所有require调用,看看它们是否指向正确的文件。请记住,路径将相对于根而不是所需文件。

但是,这个错误消息尤其是非常神秘且基本上无用的 IMO。

于 2012-11-23T10:18:04.900 回答
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

于 2013-04-27T10:18:38.573 回答