Gulp,浏览并重新映射

时间:2014-05-14 12:25:32

标签: coffeescript gulp browserify

我正在尝试找到一种使用browserify和gulp映射目录的好方法,所以我没有很多路径链接这个:

var uriparser = require('../../../app/assets/javascripts/app/module/mymodule.coffee')

所以我一直在尝试使用remapify和gulp,所以我有这样的食谱:

var gulp = require('gulp');
var browserify = require('browserify');
var remapify = require('remapify');
var source = require('vinyl-source-stream');

gulp.task("test", function () {
  var b = browserify({entries:['./spec/javascripts/modules/tests.coffee'],
    extensions: ['.coffee']
  });

  b.plugin(remapify, [
    {
      src: './app/assets/javascripts/app/**/*.coffee'
      , expose: 'app'
      , cwd:__dirname
    }

  ])



  libs.forEach(function (lib) {
    b.external(lib);
  });



  return b.bundle()
    .pipe(source("app.js"))
    .pipe(gulp.dest('./spec/javascripts/specs/helpers'));
});

不确定我错过了什么,但它没有正确映射路径,也许这不是最好的工具,但是尝试了很多选项却没有成功,所以任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

至少有一个问题,原因是:https://github.com/joeybaker/remapify/pull/4

Remapify目前不支持“咖啡”等扩展程序。您可以先使用https://github.com/gruntjs/grunt-contrib-coffee将CoffeeScript编译为JavaScript,然后重新编译它。

答案 1 :(得分:1)

Remapify现在尊重browserify中配置的扩展名列表。默认情况下,这是jsjson,但您可以通过extensions browserify选项进行更改。不知道gulp中的格式是什么,但这就是我在grunt中所做的事情:

  grunt.initConfig
    browserify:
      app:
        dest: 'public/scripts/main.js'
        src: ['client/app/**/*.coffee']
        options:
          preBundleCB: (b) ->
            b.plugin remapify, [
              cwd: './client/app'
              src: '**/*.coffee'
              expose: 'app'
            ]

          transform: ['coffeeify']
          browserifyOptions:
            debug: true
            extensions: ['.coffee', '.js']