我正在尝试找到一种使用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'));
});
不确定我错过了什么,但它没有正确映射路径,也许这不是最好的工具,但是尝试了很多选项却没有成功,所以任何帮助都会很棒!
答案 0 :(得分:1)
至少有一个问题,原因是:https://github.com/joeybaker/remapify/pull/4。
Remapify目前不支持“咖啡”等扩展程序。您可以先使用https://github.com/gruntjs/grunt-contrib-coffee将CoffeeScript编译为JavaScript,然后重新编译它。
答案 1 :(得分:1)
Remapify现在尊重browserify中配置的扩展名列表。默认情况下,这是js
和json
,但您可以通过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']