Exemplo n.º 1
0
function buildTheApp() {
    var tsify = require('tsify'),
        persistify = require( 'persistify' );
        buffer = require('vinyl-buffer'),
        source = require('vinyl-source-stream');
    return persistify(config.angularApp.browserifyOpts, {cacheDir: 'build/cache'})
        .add(join(config.sourceDir, config.angularApp.main))
        .add(config.angularApp.additionalFiles)
        .plugin(tsify, config.angularApp.compileOpts)
        .transform('./chore/browserify-ng2-template-transform')
        .bundle()
        .pipe(source(config.angularApp.output))
        .pipe(buffer())
        .pipe(plugins.sourcemaps.init({loadMaps: true}))
        .pipe(plugins.uglify())
        .pipe(plugins.rev())
        .pipe(plugins.sourcemaps.write('.'))
        .pipe(gulp.dest(config.rootDirectory))
        .pipe(plugins.rev.manifest(
            config.revManifest,
            {merge: true, base: config.rootDirectory})
        )
        .pipe(gulp.dest(config.rootDirectory))
        .pipe(plugins.revOutdated(1))
}
Exemplo n.º 2
0
module.exports = function createBundler(entryFiles, options) {
    // https://github.com/substack/node-browserify#methods
    var browserifyOpt = {
        entries: [].concat(entryFiles),
        debug: (options && 'sourcemaps' in options) ? options.sourcemaps : true,
        detectGlobals: false,    // dont insert `process`, `global`, `__filename`, and `__dirname`
        bundleExternal: false,   // dont bundle external modules
        //standalone: 'engine-framework',
        //basedir: tempScriptDir

        // define custom prelude to optimize script evaluate time
        prelude: prelude,
        preludePath: Path.relative(process.cwd(), preludePath),
    };

    // var presets = [
    //     [ 'es2015', { loose: true } ],
    // ];

    var plugins = [
        // https://babeljs.io/docs/plugins/transform-es2015-shorthand-properties/
        'babel-plugin-transform-es2015-shorthand-properties',
        // https://babeljs.io/docs/plugins/transform-es2015-template-literals/
        'babel-plugin-transform-es2015-template-literals',
        // http://babeljs.io/docs/plugins/transform-es2015-block-scoping/
        'babel-plugin-transform-es2015-block-scoping',

        // < 6.16.0
        [ 'babel-plugin-parser-opts', { allowReturnOutsideFunction: true } ]
    ];

    var Babelify;
    try {
        Babelify = require('babelify');
    } catch (e) {
        console.error('Please run "npm install babelify".');
        throw e;
    }
    var aliasify;
    try {
        aliasify = require('aliasify');
    } catch (e) {
        console.error('Please run "npm install aliasify".');
        throw e;
    }

    var b;
    if (options && options.cacheDir) {
        // https://github.com/royriojas/persistify
        const Persistify = require('persistify');
        b = Persistify(browserifyOpt, {
            recreate: false,
            cacheId: require('../../package.json').version + entryFiles,
            cacheDir: options.cacheDir
        });
    }
    else {
        const Browserify = require('browserify');
        b = new Browserify(browserifyOpt);
    }

    return b
        .exclude(Path.join(__dirname, '../../package.json'))
        .transform(Babelify, (options && options.babelifyOpt) || {
            // presets: presets,
            plugins: plugins,

            // >= 6.16.0
            // parserOpts: {
            //     allowReturnOutsideFunction: true,
            // },

            ast: false,
            babelrc: false,
            highlightCode: false,
            sourceMaps: true,
            compact: false
        })
        .transform(aliasify, (options && options.aliasifyConfig) || {});
};