Coffeeify不会解析比条目文件更多的东西

时间:2015-05-15 23:41:00

标签: javascript coffeescript gulp browserify watchify

我是Browserify的初学者。我试图将它与Watchify(出于性能原因)和Coffeeify集成到gulp.js中。我尝试了至少五种不同的方法,我在Google中找到了这些方法,其中最后一种方法是gulp docs中的an official recipe

现在的问题是转型部分。我想使用Coffeeify来解析我的代码,这些代码主要是用CoffeeScript编写的。

Coffeeify成功解析了我的条目文件app.coffee,但是当我从那里需要./foo.coffee时,该文件似乎不会被转换,这自然会导致Browserify发生关于意外令牌等的解析错误。< / p>

任何人都知道如何解决这个问题?

这里是我的gulpfile的相关部分,大部分与上面的链接相同,只是添加了转换。

var gulp = require( 'gulp' );
var gutil = require( 'gulp-util' );

var browserify = require( 'browserify' );
var watchify = require( 'watchify' );
var coffeeify = require( 'coffeeify' );
var source = require( 'vinyl-source-stream' );


var b = watchify( browserify({
    entries: [ './coffee/app.coffee' ],
    extensions: [ '.coffee' ],
    debug: true,
    cache: false,
    packageCache: false
}) );
b.transform( coffeeify ); // as described in the gulp docs

gulp.task( 'bundle', bundle );
b.on( 'update', bundle );
b.on( 'log', gutil.log );

function bundle() {
    return b.bundle()
        .on( 'error', gutil.log.bind( gutil, 'Browserify Error' ) )
        .pipe( source( 'bundle.js' ) )
        // I actually tried to pipe in coffeeify here (gulp-coffeeify as well), didn't help
        .pipe( gulp.dest( './js' ) );
};

1 个答案:

答案 0 :(得分:0)

好的,这完全是我的坏事。我为这篇文章抽象了我的代码太过分了,所以实际的问题没有反映在这里: app.coffee 直接实际需要./foo.coffee,但需要来自foo/foo目录的node_modules,以简化操作。 这正是问题:转换不适用于所需的。这是intended behavior

似乎有两种解决方法:

解决方案1:名为global-transform的浏览器选项。 在API中,它像b.transform( coffeeify, { global: true } )一样使用。这将把coffeeify转换应用于每个必需的模块。

解决方案2:转换的分组定义。这意味着:在每个模块的package.json中添加这样的东西:

{
    "browserify": {
        "transform": ["coffeeify"]
    }
}

我决定使用第一个,因为我的“包”实际上甚至没有package.json文件,它们只是在node_modules目录中,可以通过browserify轻松访问。