Gulp生成文件夹中所有文件的index.js

时间:2015-04-15 08:44:16

标签: javascript node.js gulp browserify

我正在使用gulp和browserify处理nodejs项目。

我想要包含一个模块文件夹,我不知道我的主js文件中的文件名。

我对如何解决这个问题的初步想法是:

  1. 运行gulp脚本为文件夹中的所有文件创建index.js文件

  2. 要求在主浏览器文件

  3. 中生成index.js文件
  4. 运行browserify

  5. 示例:

    dir structrure:

    /
      /models
        /model1.js
        /model2.js
    

    所需的输出对象:

    {
      "model1": {...},
      "model2": {...}
    }
    

    其中{...}是文件使用module.exports导出的对象。

    这是正确的做法吗?有没有更好的方法来解决这个问题?

    如果这是正确的方法,我不知道如何使用gulp(创建索引文件)来实现它,所以任何指针都会非常感激。

    谢谢,

    里克多维

1 个答案:

答案 0 :(得分:2)

Browserify只有一个入口点 - 然后它将沿着整个应用程序的依赖关系树向下走,并根据需要包含它们。

假设你有一个像这样的文件夹结构:

  • 公共
    • index.html
    • JS
      • main.js
      • someother.js
      • another.js

你只想在你的html中包含一个名为bundle.js

的js文件

你的gulpfile.js看起来像这样。

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

gulp.task('browserify', function() {
    var bundler = browserify({
        entries: './js/main.js',
        debug: true,
        cache: {}
    });

    var rebundle = function() {
     bundler
    .bundle()
    .pipe(source('bundle.js'))
    .buffer()
    .pipe(gulp.dest('./public'));
    };
    bundler.on('update', rebundle);
    return rebundle();

});

gulp.task('default', ['browserify']);