Moves bundle target/task to gulpfile.js

This commit is contained in:
Yury Delendik 2016-04-22 17:20:47 -05:00
parent 55581b162e
commit 5568a19ee3
4 changed files with 332 additions and 218 deletions

View File

@ -22,11 +22,30 @@ var gulp = require('gulp');
var gutil = require('gulp-util');
var rimraf = require('rimraf');
var stream = require('stream');
var exec = require('child_process').exec;
var streamqueue = require('streamqueue');
var BUILD_DIR = 'build/';
var L10N_DIR = 'l10n/';
require('./make.js');
var makeFile = require('./make.js');
var stripCommentHeaders = makeFile.stripCommentHeaders;
var builder = makeFile.builder;
var CONFIG_FILE = 'pdfjs.config';
var config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString());
var DEFINES = {
PRODUCTION: true,
// The main build targets:
GENERIC: false,
FIREFOX: false,
MOZCENTRAL: false,
CHROME: false,
MINIFIED: false,
SINGLE_FILE: false,
COMPONENTS: false
};
function createStringSource(filename, content) {
var source = stream.Readable({ objectMode: true });
@ -42,6 +61,193 @@ function createStringSource(filename, content) {
return source;
}
function stripUMDHeaders(content) {
var reg = new RegExp(
'if \\(typeof define === \'function\' && define.amd\\) \\{[^}]*' +
'\\} else if \\(typeof exports !== \'undefined\'\\) \\{[^}]*' +
'\\} else ', 'g');
return content.replace(reg, '');
}
function bundle(filename, outfilename, pathPrefix, initFiles, amdName, defines,
isMainFile, versionInfo) {
// Reading UMD headers and building loading orders of modules. The
// readDependencies returns AMD module names: removing 'pdfjs' prefix and
// adding '.js' extensions to the name.
var umd = require('./external/umdutils/verifier.js');
initFiles = initFiles.map(function (p) { return pathPrefix + p; });
var files = umd.readDependencies(initFiles).loadOrder.map(function (name) {
return pathPrefix + name.replace(/^[\w\-]+\//, '') + '.js';
});
var crlfchecker = require('./external/crlfchecker/crlfchecker.js');
crlfchecker.checkIfCrlfIsPresent(files);
var bundleContent = files.map(function (file) {
var content = fs.readFileSync(file);
// Prepend a newline because stripCommentHeaders only strips comments that
// follow a line feed. The file where bundleContent is inserted already
// contains a license header, so the header of bundleContent can be removed.
content = stripCommentHeaders('\n' + content);
// Removes AMD and CommonJS branches from UMD headers.
content = stripUMDHeaders(content);
return content;
}).join('');
var jsName = amdName.replace(/[\-_\.\/]\w/g, function (all) {
return all[1].toUpperCase();
});
// Avoiding double processing of the bundle file.
var templateContent = fs.readFileSync(filename).toString();
var tmpFile = outfilename + '.tmp';
fs.writeFileSync(tmpFile, templateContent.replace(
/\/\/#expand\s+__BUNDLE__\s*\n/, function (all) { return bundleContent; }));
bundleContent = null;
templateContent = null;
// This just preprocesses the empty pdf.js file, we don't actually want to
// preprocess everything yet since other build targets use this file.
builder.preprocess(tmpFile, outfilename,
builder.merge(defines, {
BUNDLE_VERSION: versionInfo.version,
BUNDLE_BUILD: versionInfo.commit,
BUNDLE_AMD_NAME: amdName,
BUNDLE_JS_NAME: jsName,
MAIN_FILE: isMainFile
}));
fs.unlinkSync(tmpFile);
}
function createBundle(defines) {
defines = defines || DEFINES;
var versionJSON = JSON.parse(
fs.readFileSync(BUILD_DIR + 'version.json').toString());
console.log();
console.log('### Bundling files into pdf.js');
var mainFiles = [
'display/global.js'
];
var workerFiles = [
'core/worker.js'
];
var mainAMDName = 'pdfjs-dist/build/pdf';
var workerAMDName = 'pdfjs-dist/build/pdf.worker';
var mainOutputName = 'pdf.js';
var workerOutputName = 'pdf.worker.js';
// Extension does not need network.js file.
if (!defines.FIREFOX && !defines.MOZCENTRAL) {
workerFiles.push('core/network.js');
}
if (defines.SINGLE_FILE) {
// In singlefile mode, all of the src files will be bundled into
// the main pdf.js output.
mainFiles = mainFiles.concat(workerFiles);
workerFiles = null; // no need for worker file
mainAMDName = 'pdfjs-dist/build/pdf.combined';
workerAMDName = null;
mainOutputName = 'pdf.combined.js';
workerOutputName = null;
}
var state = 'mainfile';
var source = stream.Readable({ objectMode: true });
source._read = function () {
var tmpFile;
switch (state) {
case 'mainfile':
// 'buildnumber' shall create BUILD_DIR for us
tmpFile = BUILD_DIR + '~' + mainOutputName + '.tmp';
bundle('src/pdf.js', tmpFile, 'src/', mainFiles, mainAMDName,
defines, true, versionJSON);
this.push(new gutil.File({
cwd: '',
base: '',
path: mainOutputName,
contents: fs.readFileSync(tmpFile)
}));
fs.unlinkSync(tmpFile);
state = workerFiles ? 'workerfile' : 'stop';
break;
case 'workerfile':
// 'buildnumber' shall create BUILD_DIR for us
tmpFile = BUILD_DIR + '~' + workerOutputName + '.tmp';
bundle('src/pdf.js', tmpFile, 'src/', workerFiles, workerAMDName,
defines, false, versionJSON);
this.push(new gutil.File({
cwd: '',
base: '',
path: workerOutputName,
contents: fs.readFileSync(tmpFile)
}));
fs.unlinkSync(tmpFile);
state = 'stop';
break;
case 'stop':
this.push(null);
break;
}
};
return source;
}
function createWebBundle(defines) {
var versionJSON = JSON.parse(
fs.readFileSync(BUILD_DIR + 'version.json').toString());
var template, files, outputName, amdName;
if (defines.COMPONENTS) {
amdName = 'pdfjs-dist/web/pdf_viewer';
template = 'web/pdf_viewer.component.js';
files = [
'pdf_viewer.js',
'pdf_history.js',
'pdf_find_controller.js',
'download_manager.js'
];
outputName = 'pdf_viewer.js';
} else {
amdName = 'pdfjs-dist/web/viewer';
outputName = 'viewer.js';
template = 'web/viewer.js';
files = ['app.js'];
if (defines.FIREFOX || defines.MOZCENTRAL) {
files.push('firefoxcom.js');
} else if (defines.CHROME) {
files.push('chromecom.js', 'mozPrintCallback_polyfill.js');
} else if (defines.GENERIC) {
files.push('mozPrintCallback_polyfill.js');
}
}
var source = stream.Readable({ objectMode: true });
source._read = function () {
// 'buildnumber' shall create BUILD_DIR for us
var tmpFile = BUILD_DIR + '~' + outputName + '.tmp';
bundle(template, tmpFile, 'web/', files, amdName, defines, false,
versionJSON);
this.push(new gutil.File({
cwd: '',
base: '',
path: outputName,
contents: fs.readFileSync(tmpFile)
}));
fs.unlinkSync(tmpFile);
this.push(null);
};
return source;
}
gulp.task('default', function() {
console.log('Available tasks:');
var tasks = Object.keys(gulp.tasks);
@ -51,6 +257,88 @@ gulp.task('default', function() {
});
});
gulp.task('buildnumber', function (done) {
console.log();
console.log('### Getting extension build number');
exec('git log --format=oneline ' + config.baseVersion + '..',
function (err, stdout, stderr) {
var buildNumber = 0;
if (!err) {
// Build number is the number of commits since base version
buildNumber = stdout ? stdout.match(/\n/g).length : 0;
}
console.log('Extension build number: ' + buildNumber);
var version = config.versionPrefix + buildNumber;
exec('git log --format="%h" -n 1', function (err, stdout, stderr) {
var buildCommit = '';
if (!err) {
buildCommit = stdout.replace('\n', '');
}
createStringSource('version.json', JSON.stringify({
version: version,
build: buildNumber,
commit: buildCommit
}, null, 2))
.pipe(gulp.dest(BUILD_DIR))
.on('end', done);
});
});
});
gulp.task('bundle-firefox', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {FIREFOX: true});
return streamqueue({ objectMode: true },
createBundle(defines), createWebBundle(defines))
.pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-mozcentral', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {MOZCENTRAL: true});
return streamqueue({ objectMode: true },
createBundle(defines), createWebBundle(defines))
.pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-chromium', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {CHROME: true});
return streamqueue({ objectMode: true },
createBundle(defines), createWebBundle(defines))
.pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-singlefile', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {SINGLE_FILE: true});
return createBundle(defines).pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-generic', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {GENERIC: true});
return streamqueue({ objectMode: true },
createBundle(), createWebBundle(defines))
.pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-minified', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {MINIFIED: true, GENERIC: true});
return streamqueue({ objectMode: true },
createBundle(), createWebBundle(defines))
.pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle-components', ['buildnumber'], function () {
var defines = builder.merge(DEFINES, {COMPONENTS: true, GENERIC: true});
return createWebBundle(defines).pipe(gulp.dest(BUILD_DIR));
});
gulp.task('bundle', ['buildnumber'], function () {
return createBundle().pipe(gulp.dest(BUILD_DIR));
});
gulp.task('server', function (done) {
console.log();
console.log('### Starting local server');

257
make.js
View File

@ -27,18 +27,12 @@ try {
}
var builder = require('./external/builder/builder.js');
var crlfchecker = require('./external/crlfchecker/crlfchecker.js');
var path = require('path');
var fs = require('fs');
var CONFIG_FILE = 'pdfjs.config';
var config = JSON.parse(fs.readFileSync(CONFIG_FILE));
// Defined by buildnumber target.
var BUILD_NUMBER,
BUILD_COMMIT,
VERSION;
var ROOT_DIR = __dirname + '/', // absolute path to project's root
BUILD_DIR = 'build/',
SRC_DIR = 'src/',
@ -77,6 +71,12 @@ var DEFINES = {
COMPONENTS: false
};
function getCurrentVersion() {
// The 'build/version.json' file is created by 'buildnumber' task.
return JSON.parse(fs.readFileSync(ROOT_DIR + 'build/version.json').toString())
.version;
}
//
// make all
//
@ -112,7 +112,8 @@ var COMMON_WEB_FILES =
// modern HTML5 browsers.
//
target.generic = function() {
target.bundle({});
exec('gulp bundle-generic');
target.locale();
cd(ROOT_DIR);
@ -127,16 +128,11 @@ target.generic = function() {
var defines = builder.merge(DEFINES, {GENERIC: true});
var TMP_VIEWER = GENERIC_DIR + '/web/viewer.js.tmp';
cd('web/');
var viewerBundleFiles = ['app.js', 'mozPrintCallback_polyfill.js'];
bundle('viewer.js', ROOT_DIR + TMP_VIEWER, viewerBundleFiles,
'pdfjs-dist/web/viewer', defines, true);
cd(ROOT_DIR);
var setup = {
defines: defines,
copy: [
[BUILD_TARGETS, GENERIC_DIR + BUILD_DIR],
[BUILD_DIR + 'viewer.js', GENERIC_DIR + '/web'],
[COMMON_WEB_FILES, GENERIC_DIR + '/web'],
['LICENSE', GENERIC_DIR],
['external/webL10n/l10n.js', GENERIC_DIR + '/web'],
@ -146,8 +142,6 @@ target.generic = function() {
['web/locale', GENERIC_DIR + '/web']
],
preprocess: [
[BUILD_TARGETS, GENERIC_DIR + BUILD_DIR],
[TMP_VIEWER, GENERIC_DIR + '/web/viewer.js'],
[COMMON_WEB_FILES_PREPROCESS, GENERIC_DIR + '/web']
],
preprocessCSS: [
@ -160,10 +154,11 @@ target.generic = function() {
cleanupJSSource(GENERIC_DIR + '/build/pdf.js');
cleanupJSSource(GENERIC_DIR + '/web/viewer.js');
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
rm(TMP_VIEWER);
};
target.components = function() {
exec('gulp bundle-components');
cd(ROOT_DIR);
echo();
echo('### Creating generic components');
@ -174,18 +169,6 @@ target.components = function() {
var defines = builder.merge(DEFINES, {COMPONENTS: true, GENERIC: true});
var TMP_PDF_VIEWER = COMPONENTS_DIR + 'pdf_viewer.js.tmp';
cd('web/');
var bundleFiles = [
'pdf_viewer.js',
'pdf_history.js',
'pdf_find_controller.js',
'download_manager.js'
];
bundle('pdf_viewer.component.js', ROOT_DIR + TMP_PDF_VIEWER, bundleFiles,
'pdfjs-dist/web/pdf_viewer', defines, true);
cd(ROOT_DIR);
var COMPONENTS_IMAGES = [
'web/images/annotation-*.svg',
'web/images/loading-icon.gif',
@ -196,12 +179,11 @@ target.components = function() {
var setup = {
defines: defines,
copy: [
[BUILD_DIR + 'pdf_viewer.js', COMPONENTS_DIR],
[COMPONENTS_IMAGES, COMPONENTS_DIR + 'images'],
['web/compatibility.js', COMPONENTS_DIR],
],
preprocess: [
[TMP_PDF_VIEWER, COMPONENTS_DIR + 'pdf_viewer.js'],
],
preprocess: [],
preprocessCSS: [
['components', 'web/pdf_viewer.css', COMPONENTS_DIR + 'pdf_viewer.css'],
]
@ -210,7 +192,6 @@ target.components = function() {
cleanupJSSource(COMPONENTS_DIR + 'pdf_viewer.js');
cleanupCSSSource(COMPONENTS_DIR + 'pdf_viewer.css');
rm(TMP_PDF_VIEWER);
};
target.jsdoc = function() {
@ -287,6 +268,7 @@ target.web = function() {
GH_PAGES_DIR + '/getting_started/index.html');
echo('Done building with wintersmith.');
var VERSION = getCurrentVersion();
var reason = process.env['PDFJS_UPDATE_REASON'];
cd(GH_PAGES_DIR);
exec('git init');
@ -308,6 +290,7 @@ target.dist = function() {
var DIST_DIR = BUILD_DIR + 'dist/';
var DIST_REPO_URL = 'https://github.com/mozilla/pdfjs-dist';
var VERSION = getCurrentVersion();
cd(ROOT_DIR);
@ -403,6 +386,7 @@ target.dist = function() {
target.publish = function() {
target.generic();
var VERSION = getCurrentVersion();
config.stableVersion = config.betaVersion;
config.betaVersion = VERSION;
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
@ -501,101 +485,12 @@ target.cmaps = function () {
compressCmaps(CMAP_INPUT, VIEWER_CMAP_OUTPUT, true);
};
function bundle(filename, outfilename, initFiles, amdName, defines,
isMainFile) {
// Reading UMD headers and building loading orders of modules. The
// readDependencies returns AMD module names: removing 'pdfjs' prefix and
// adding '.js' extensions to the name.
var umd = require('./external/umdutils/verifier.js');
var files = umd.readDependencies(initFiles).loadOrder.map(
function (name) { return name.replace(/^[\w\-]+\//, '') + '.js'; });
crlfchecker.checkIfCrlfIsPresent(files);
var bundleContent = cat(files),
bundleVersion = VERSION,
bundleBuild = BUILD_COMMIT;
// Prepend a newline because stripCommentHeaders only strips comments that
// follow a line feed. The file where bundleContent is inserted already
// contains a license header, so the header of bundleContent can be removed.
bundleContent = stripCommentHeaders('\n' + bundleContent);
// Removes AMD and CommonJS branches from UMD headers.
bundleContent = stripUMDHeaders(bundleContent);
var jsName = amdName.replace(/[\-_\.\/]\w/g, function (all) {
return all[1].toUpperCase();
});
// This just preprocesses the empty pdf.js file, we don't actually want to
// preprocess everything yet since other build targets use this file.
builder.preprocess(filename, outfilename,
builder.merge(defines, {
BUNDLE: bundleContent,
BUNDLE_VERSION: bundleVersion,
BUNDLE_BUILD: bundleBuild,
BUNDLE_AMD_NAME: amdName,
BUNDLE_JS_NAME: jsName,
MAIN_FILE: isMainFile
}));
}
//
// make bundle
// Bundles all source files into one wrapper 'pdf.js' file, in the given order.
//
target.bundle = function(args) {
args = args || {};
var defines = args.defines || DEFINES;
target.buildnumber();
cd(ROOT_DIR);
echo();
echo('### Bundling files into ' + BUILD_TARGET);
if (!test('-d', BUILD_DIR)) {
mkdir(BUILD_DIR);
}
var mainFiles = [
'display/global.js'
];
var workerFiles = [
'core/worker.js'
];
var mainAMDName = 'pdfjs-dist/build/pdf';
var workerAMDName = 'pdfjs-dist/build/pdf.worker';
// Extension does not need network.js file.
if (!defines.FIREFOX && !defines.MOZCENTRAL) {
workerFiles.push('core/network.js');
}
if (defines.SINGLE_FILE) {
// In singlefile mode, all of the src files will be bundled into
// the main pdf.js output.
mainFiles = mainFiles.concat(workerFiles);
workerFiles = null; // no need for worker file
mainAMDName = 'pdfjs-dist/build/pdf.combined';
workerAMDName = null;
}
cd(SRC_DIR);
bundle('pdf.js', ROOT_DIR + BUILD_TARGET, mainFiles, mainAMDName, defines,
true);
if (workerFiles) {
var srcCopy = ROOT_DIR + BUILD_DIR + 'pdf.worker.js.temp';
cp('pdf.js', srcCopy);
bundle(srcCopy, ROOT_DIR + BUILD_WORKER_TARGET, workerFiles, workerAMDName,
defines, false);
rm(srcCopy);
}
exec('gulp bundle');
};
//
@ -608,36 +503,17 @@ target.singlefile = function() {
echo();
echo('### Creating singlefile build');
var SINGLE_FILE_TARGET = BUILD_DIR + 'pdf.combined.js';
var SINGLE_FILE_BUILD_DIR = SINGLE_FILE_DIR + 'build/';
var defines = builder.merge(DEFINES, {SINGLE_FILE: true});
target.bundle({defines: defines});
exec('gulp bundle-singlefile');
cd(ROOT_DIR);
rm('-rf', SINGLE_FILE_DIR);
mkdir('-p', SINGLE_FILE_DIR);
mkdir('-p', SINGLE_FILE_DIR + BUILD_DIR);
var setup = {
defines: defines,
copy: [],
preprocess: [
[BUILD_TARGETS, SINGLE_FILE_DIR + BUILD_DIR]
]
};
builder.build(setup);
cd(SINGLE_FILE_DIR);
echo();
echo('### Moving pdf.js to pdf.combined.js');
var pdfJs = cat(BUILD_TARGET);
pdfJs.to(SINGLE_FILE_TARGET);
rm(BUILD_TARGET);
rm(BUILD_WORKER_TARGET);
mkdir('-p', SINGLE_FILE_BUILD_DIR);
cp(BUILD_DIR + 'pdf.combined.js', SINGLE_FILE_BUILD_DIR);
};
function stripCommentHeaders(content) {
@ -650,14 +526,6 @@ function stripCommentHeaders(content) {
return content;
}
function stripUMDHeaders(content) {
var reg = new RegExp(
'if \\(typeof define === \'function\' && define.amd\\) \\{[^}]*' +
'\\} else if \\(typeof exports !== \'undefined\'\\) \\{[^}]*' +
'\\} else ', 'g');
return content.replace(reg, '');
}
function cleanupJSSource(file) {
var content = cat(file);
@ -682,7 +550,7 @@ function cleanupCSSSource(file) {
// modern HTML5 browsers.
//
target.minified = function() {
target.bundle({});
exec('gulp bundle-minified');
target.locale();
cd(ROOT_DIR);
@ -697,24 +565,17 @@ target.minified = function() {
var defines = builder.merge(DEFINES, {GENERIC: true, MINIFIED: true});
var TMP_VIEWER = MINIFIED_DIR + '/web/viewer.js.tmp';
cd('web/');
var viewerBundleFiles = ['app.js'];
bundle('viewer.js', ROOT_DIR + TMP_VIEWER, viewerBundleFiles,
'pdfjs-dist/web/viewer', defines, true);
cd(ROOT_DIR);
var setup = {
defines: defines,
copy: [
[BUILD_TARGETS, MINIFIED_DIR + BUILD_DIR],
[BUILD_DIR + 'viewer.js', MINIFIED_DIR + '/web'],
[COMMON_WEB_FILES, MINIFIED_DIR + '/web'],
['web/compressed.tracemonkey-pldi-09.pdf', MINIFIED_DIR + '/web'],
['external/bcmaps/*', MINIFIED_DIR + '/web/cmaps'],
['web/locale', MINIFIED_DIR + '/web']
],
preprocess: [
[BUILD_TARGETS, MINIFIED_DIR + BUILD_DIR],
[TMP_VIEWER, MINIFIED_DIR + '/web/viewer.js'],
[COMMON_WEB_FILES_PREPROCESS, MINIFIED_DIR + '/web']
],
preprocessCSS: [
@ -725,7 +586,6 @@ target.minified = function() {
builder.build(setup);
cleanupCSSSource(MINIFIED_DIR + '/web/viewer.css');
rm(TMP_VIEWER);
var viewerFiles = [
'web/compatibility.js',
@ -780,21 +640,7 @@ target.extension = function() {
};
target.buildnumber = function() {
cd(ROOT_DIR);
echo();
echo('### Getting extension build number');
var lines = exec('git log --format=oneline ' +
config.baseVersion + '..', {silent: true}).output;
// Build number is the number of commits since base version
BUILD_NUMBER = lines ? lines.match(/\n/g).length : 0;
echo('Extension build number: ' + BUILD_NUMBER);
VERSION = config.versionPrefix + BUILD_NUMBER;
BUILD_COMMIT = exec('git log --format="%h" -n 1', {silent: true}).
output.replace('\n', '');
exec('gulp buildnumber');
};
//
@ -831,7 +677,7 @@ target.firefox = function() {
FIREFOX_AMO_EXTENSION_NAME = 'pdf.js.amo.xpi';
target.locale();
target.bundle({ defines: defines });
exec('gulp bundle-firefox');
cd(ROOT_DIR);
// Clear out everything in the firefox extension build directory
@ -852,17 +698,11 @@ target.firefox = function() {
cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY, ROOT_DIR + FIREFOX_BUILD_DIR);
cd(ROOT_DIR);
var TMP_VIEWER = FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.js.tmp';
cd('web/');
var viewerBundleFiles = ['app.js', 'firefoxcom.js'];
bundle('viewer.js', ROOT_DIR + TMP_VIEWER, viewerBundleFiles,
'pdfjs-dist/web/viewer', defines, true);
cd(ROOT_DIR);
var setup = {
defines: defines,
copy: [
[BUILD_TARGETS, FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR],
[BUILD_DIR + 'viewer.js', FIREFOX_BUILD_CONTENT_DIR + '/web'],
[COMMON_WEB_FILES, FIREFOX_BUILD_CONTENT_DIR + '/web'],
['web/compatibility.js', FIREFOX_BUILD_CONTENT_DIR + '/web'],
['external/bcmaps/*', FIREFOX_BUILD_CONTENT_DIR + '/web/cmaps'],
@ -870,9 +710,7 @@ target.firefox = function() {
FIREFOX_BUILD_CONTENT_DIR + '/web']
],
preprocess: [
[TMP_VIEWER, FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.js'],
[COMMON_WEB_FILES_PREPROCESS, FIREFOX_BUILD_CONTENT_DIR + '/web'],
[BUILD_TARGETS, FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR],
[COMMON_FIREFOX_FILES_PREPROCESS, FIREFOX_BUILD_CONTENT_DIR],
[SRC_DIR + 'core/network.js', FIREFOX_BUILD_CONTENT_DIR],
[FIREFOX_EXTENSION_DIR + 'bootstrap.js', FIREFOX_BUILD_DIR]
@ -888,7 +726,6 @@ target.firefox = function() {
cleanupJSSource(FIREFOX_BUILD_DIR + 'bootstrap.js');
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + 'PdfjsChromeUtils.jsm');
cleanupCSSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.css');
rm(TMP_VIEWER);
// Remove '.DS_Store' and other hidden files
find(FIREFOX_BUILD_DIR).forEach(function(file) {
@ -898,6 +735,7 @@ target.firefox = function() {
});
// Update the build version number
var VERSION = getCurrentVersion();
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
FIREFOX_BUILD_DIR + '/install.rdf');
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
@ -968,7 +806,7 @@ target.mozcentral = function() {
['icon.png',
'icon64.png'];
target.bundle({ defines: defines });
exec('gulp bundle-mozcentral');
cd(ROOT_DIR);
// Clear out everything in the firefox extension build directory
@ -989,25 +827,18 @@ target.mozcentral = function() {
ROOT_DIR + MOZCENTRAL_EXTENSION_DIR + '/chrome.manifest');
cd(ROOT_DIR);
var TMP_VIEWER = MOZCENTRAL_CONTENT_DIR + '/web/viewer.js.tmp';
cd('web/');
var viewerBundleFiles = ['app.js', 'firefoxcom.js'];
bundle('viewer.js', ROOT_DIR + TMP_VIEWER, viewerBundleFiles,
'pdfjs-dist/web/viewer', defines, true);
cd(ROOT_DIR);
var setup = {
defines: defines,
copy: [
[BUILD_TARGETS, MOZCENTRAL_CONTENT_DIR + BUILD_DIR],
[BUILD_DIR + 'viewer.js', MOZCENTRAL_CONTENT_DIR + '/web'],
[COMMON_WEB_FILES, MOZCENTRAL_CONTENT_DIR + '/web'],
['external/bcmaps/*', MOZCENTRAL_CONTENT_DIR + '/web/cmaps'],
['extensions/firefox/tools/l10n.js', MOZCENTRAL_CONTENT_DIR + '/web']
],
preprocess: [
[TMP_VIEWER, MOZCENTRAL_CONTENT_DIR + '/web/viewer.js'],
[COMMON_WEB_FILES_PREPROCESS, MOZCENTRAL_CONTENT_DIR + '/web'],
[FIREFOX_CONTENT_DIR + 'pdfjschildbootstrap.js', MOZCENTRAL_CONTENT_DIR],
[BUILD_TARGETS, MOZCENTRAL_CONTENT_DIR + BUILD_DIR],
[SRC_DIR + 'core/network.js', MOZCENTRAL_CONTENT_DIR],
[COMMON_FIREFOX_FILES_PREPROCESS, MOZCENTRAL_CONTENT_DIR],
[FIREFOX_CONTENT_DIR + 'PdfJs.jsm', MOZCENTRAL_CONTENT_DIR]
@ -1024,7 +855,6 @@ target.mozcentral = function() {
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfJs.jsm');
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfjsChromeUtils.jsm');
cleanupCSSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.css');
rm(TMP_VIEWER);
// Remove '.DS_Store' and other hidden files
find(MOZCENTRAL_DIR).forEach(function(file) {
@ -1046,6 +876,7 @@ target.mozcentral = function() {
cp(DEFAULT_LOCALE_FILES, MOZCENTRAL_L10N_DIR);
// Update the build version number
var VERSION = getCurrentVersion();
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
MOZCENTRAL_EXTENSION_DIR + 'README.mozilla');
@ -1068,7 +899,6 @@ target.b2g = function() {
echo();
echo('### Building B2G (Firefox OS App)');
var B2G_BUILD_CONTENT_DIR = B2G_BUILD_DIR + '/content/';
target.bundle();
// Clear out everything in the b2g build directory
cd(ROOT_DIR);
@ -1121,7 +951,7 @@ target.chromium = function() {
var CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + '/content/';
target.bundle({ defines: defines });
exec('gulp bundle-chromium');
cd(ROOT_DIR);
// Clear out everything in the chrome extension build directory
@ -1130,17 +960,11 @@ target.chromium = function() {
mkdir('-p', CHROME_BUILD_CONTENT_DIR + BUILD_DIR);
mkdir('-p', CHROME_BUILD_CONTENT_DIR + '/web');
var TMP_VIEWER = CHROME_BUILD_CONTENT_DIR + '/web/viewer.js.tmp';
cd('web/');
var viewerBundleFiles = ['app.js', 'chromecom.js',
'mozPrintCallback_polyfill.js'];
bundle('viewer.js', ROOT_DIR + TMP_VIEWER, viewerBundleFiles,
'pdfjs-dist/web/viewer', defines, true);
cd(ROOT_DIR);
var setup = {
defines: defines,
copy: [
[BUILD_TARGETS, CHROME_BUILD_CONTENT_DIR + BUILD_DIR],
[BUILD_DIR + 'viewer.js', CHROME_BUILD_CONTENT_DIR + '/web'],
[COMMON_WEB_FILES, CHROME_BUILD_CONTENT_DIR + '/web'],
[['extensions/chromium/*.json',
'extensions/chromium/*.html',
@ -1155,8 +979,6 @@ target.chromium = function() {
['web/locale', CHROME_BUILD_CONTENT_DIR + '/web']
],
preprocess: [
[BUILD_TARGETS, CHROME_BUILD_CONTENT_DIR + BUILD_DIR],
[TMP_VIEWER, CHROME_BUILD_CONTENT_DIR + '/web/viewer.js'],
[COMMON_WEB_FILES_PREPROCESS, CHROME_BUILD_CONTENT_DIR + '/web']
],
preprocessCSS: [
@ -1168,9 +990,9 @@ target.chromium = function() {
cleanupJSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.js');
cleanupCSSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.css');
rm(TMP_VIEWER);
// Update the build version number
var VERSION = getCurrentVersion();
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
CHROME_BUILD_DIR + '/manifest.json');
@ -1597,3 +1419,6 @@ target.makefile = function () {
target.importl10n = function() {
exit(exec('gulp importl10n'));
};
exports.stripCommentHeaders = stripCommentHeaders;
exports.builder = builder;

View File

@ -11,6 +11,7 @@
"requirejs": "^2.1.22",
"rimraf": "^2.4.1",
"shelljs": "~0.4.0",
"streamqueue": "^1.1.1",
"typogr": "~0.6.5",
"uglify-js": "^2.6.1",
"wintersmith": "^2.0.0",

View File

@ -2146,7 +2146,7 @@ window.addEventListener('afterprint', function afterPrint(evt) {
exports.PDFViewerApplication = PDFViewerApplication;
exports.DefaultExernalServices = DefaultExernalServices;
// TODO remove circular reference of pdfjs-web/secondary_toolbar on app.
//// TODO remove circular reference of pdfjs-web/secondary_toolbar on app.
secondaryToolbarLib._setApp(exports);
}));