Browserify和gulp重新创建源结构

时间:2019-07-09 14:49:05

标签: javascript ecmascript-6 gulp browserify babel

我正在使用gulp和browserify来构建es6 javascript源。现在,我需要结果来创建几乎完全相同的结构,例如在源文件中。

示例来源:

. sources
.. js
... test
.... index.js
.... test.js
... catalog
.... index.js
.... other.js

示例目的地:

.. dist
... test
.... main.js
... catalog
.... main.js

因此,将测试目录中的index.js和test.js文件构建到dist / test中的main.js中。然后将目录中的index.js和other.js构建到dist / catalog。

当然,这只是示例,目录结构几乎没有什么不同,可能有更多的目录和文件。

这是我gulpfile的一部分(当然有必要的导入):

let files = glob.sync('./sources/**/index.js');

let brf = watchify(browserify(files, {debug: true, cache: {}, packageCache: {}}));
brf.transform('babelify', {presets: ['@babel/preset-env', '@babel/preset-react'], sourceMaps: true});

let develop = () => {
    gulplog.info('Updating files ... ');

    let start = new Date();
    return brf.bundle((err, buff) => {
        if(err) gulplog.error('Error: ' + err );
    })
        .pipe(source(  'main.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./dist/'))
        .on('end', () => {
            let end = new Date();
            let time = (end.getTime() - start.getTime()) / 1000 ;
            let s = 's';
            if(time < 1) {
                time = time * 1000;
                s = 'ms';
            }
            gulplog.info('Finished after '+ time + ' ' + s)
        });
};

brf.on('update', develop);

是否有一种方法可以像我所描述的那样在不为每个目录重新运行该捆绑软件的情况下进行工作?

0 个答案:

没有答案