Generate rtd doc embed js without creating a module

js-theme-bundle
Anthony Johnson 2015-08-24 01:35:13 -07:00
parent 816201de4b
commit d8bd1742dc
4 changed files with 59 additions and 50 deletions

View File

@ -17,15 +17,15 @@ var gulp = require('gulp'),
// picking up dependencies of the primary entry points and putting any
// limitations on directory structure for entry points.
var sources = {
builds: ['js/detail.js'],
core: [
'js/readthedocs-doc-embed.js',
'js/autocomplete.js',
'js/projectimport.js',
],
projects: ['js/tools.js'],
gold: ['js/gold.js'],
donate: ['js/donate.js']
builds: {'js/detail.js': {}},
core: {
'js/readthedocs-doc-embed.js': {create_module: false},
'js/autocomplete.js': {},
'js/projectimport.js': {},
},
projects: {'js/tools.js': {}},
gold: {'js/gold.js': {}},
donate: {'js/donate.js': {}}
};
// Standalone application to create vendor bundles for. These can be imported
@ -36,56 +36,68 @@ var standalone = ['jquery', 'knockout', 'jquery-migrate', 'jquery-ui'];
// application. This is called by build and dev tasks.
function build_app_sources (application, minify) {
// Normalize file glob lists
var app_sources = sources[application].map(function (n) {
return path.join(pkg_config.name, application, 'static-src', '**', n)
});
var app_js_sources = app_sources.filter(function (elem, n, arr) {
return /\.js$/.test(elem);
});
var app_css_sources = app_sources.filter(function (elem, n, arr) {
return /\.less$/.test(elem);
var bundles = Object.keys(sources[application]).map(function (n) {
var bundle_path = path.join(
pkg_config.name, application, 'static-src', '**', n),
bundle_config = sources[application][n] || {},
bundle;
if (/\.js$/.test(bundle_path)) {
// Javascript sources
bundle = gulp
.src(bundle_path)
.pipe(es.map(function (file, cb) {
return browserify_stream(file, bundle_config, cb);
}));
if (minify) {
bundle = bundle
.pipe(vinyl_buffer())
.pipe(uglify())
.on('error', function (ev) {
gulp_util.beep();
gulp_util.log('Uglify error:', ev.message);
});
}
}
else if (/\.less$/.test(bundle_path)) {
// CSS sources
bundle = gulp.src(bundle_path)
.pipe(less({}))
.on('error', function (ev) {
gulp_util.beep();
gulp_util.log('LESS error:', ev.message);
});
}
return bundle;
});
// Javascript sources
var app_js = gulp
.src(app_js_sources)
.pipe(es.map(browserify_stream));
if (minify) {
app_js = app_js
.pipe(vinyl_buffer())
.pipe(uglify())
.on('error', function (ev) {
gulp_util.beep();
gulp_util.log('Uglify error:', ev.message);
});
}
// CSS sources
var app_css = gulp.src(app_css_sources)
.pipe(less({}))
.on('error', function (ev) {
gulp_util.beep();
gulp_util.log('LESS error:', ev.message);
});
return es.merge(app_js, app_css)
return es.merge(bundles)
.pipe(gulp.dest(path.join(pkg_config.name, application, 'static')));
}
// Browserify build
function browserify_stream (file, cb_output) {
function browserify_stream (file, config, cb_output) {
bower_resolve.offline = true;
bower_resolve.init(function () {
var bundle_stream = browserify(),
module_name = path.basename(file.path, '.js');
var bundle_stream = browserify();
standalone.map(function (module) {
bundle_stream = bundle_stream.external(module);
});
if (config.create_module === false) {
bundle_stream.add(file.path)
}
else {
var module_name = config.expose || path.basename(file.path, '.js');
bundle_stream = bundle_stream.require(
file.path,
{expose: module_name})
}
bundle_stream
.require(file.path, {expose: module_name})
.transform('debowerify', {ignoreModules: standalone})
.bundle()
.on('error', function (ev) {

View File

@ -3,8 +3,7 @@ var sponsorship = require('./sponsorship'),
grokthedocs = require('./doc-embed/grokthedocs-client'),
mkdocs = require('./doc-embed/mkdocs'),
rtddata = require('./doc-embed/rtd-data'),
sphinx = require('./doc-embed/sphinx'),
$ = require('jquery');
sphinx = require('./doc-embed/sphinx');
$(document).ready(function () {
footer.init();

View File

@ -1,7 +1,5 @@
/* Read the Docs - Documentation promotions */
var $ = require('jquery');
module.exports = {
Promo: Promo
};

File diff suppressed because one or more lines are too long