Moves preprocessor stuff to the gulpfile.
This commit is contained in:
parent
6f0cf8c4cb
commit
2049cf01db
@ -13,7 +13,7 @@
|
|||||||
<!-- for legacy browsers add compatibility.js -->
|
<!-- for legacy browsers add compatibility.js -->
|
||||||
<!--<script src="../compatibility.js"></script>-->
|
<!--<script src="../compatibility.js"></script>-->
|
||||||
|
|
||||||
<script src="../../build/pdf.js"></script>
|
<script src="../../build/generic/build/pdf.js"></script>
|
||||||
|
|
||||||
<script id="script">
|
<script id="script">
|
||||||
//
|
//
|
||||||
@ -32,7 +32,7 @@
|
|||||||
//
|
//
|
||||||
// The workerSrc property shall be specified.
|
// The workerSrc property shall be specified.
|
||||||
//
|
//
|
||||||
PDFJS.workerSrc = '../../build/pdf.worker.js';
|
PDFJS.workerSrc = '../../build/generic/build/pdf.worker.js';
|
||||||
|
|
||||||
//
|
//
|
||||||
// Asynchronous download PDF
|
// Asynchronous download PDF
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<!-- for legacy browsers we need to use compatibility.js -->
|
<!-- for legacy browsers we need to use compatibility.js -->
|
||||||
<script src="../../web/compatibility.js"></script>
|
<script src="../../web/compatibility.js"></script>
|
||||||
|
|
||||||
<script src="../../build/pdf.js"></script>
|
<script src="../../build/generic/build/pdf.js"></script>
|
||||||
|
|
||||||
<script id="script">
|
<script id="script">
|
||||||
// atob() is used to convert base64 encoded PDF to binary-like data.
|
// atob() is used to convert base64 encoded PDF to binary-like data.
|
||||||
@ -43,7 +43,7 @@
|
|||||||
//
|
//
|
||||||
// The workerSrc property shall be specified.
|
// The workerSrc property shall be specified.
|
||||||
//
|
//
|
||||||
PDFJS.workerSrc = '../../build/pdf.worker.js';
|
PDFJS.workerSrc = '../../build/generic/build/pdf.worker.js';
|
||||||
|
|
||||||
// Opening PDF by passing its binary data as a string. It is still preferable
|
// Opening PDF by passing its binary data as a string. It is still preferable
|
||||||
// to use Uint8Array, but string or array-like structure will work too.
|
// to use Uint8Array, but string or array-like structure will work too.
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<!-- for legacy browsers add compatibility.js -->
|
<!-- for legacy browsers add compatibility.js -->
|
||||||
<!--<script src="../compatibility.js"></script>-->
|
<!--<script src="../compatibility.js"></script>-->
|
||||||
|
|
||||||
<script src="../../build/pdf.js"></script>
|
<script src="../../build/generic/build/pdf.js"></script>
|
||||||
|
|
||||||
<script id="script">
|
<script id="script">
|
||||||
//
|
//
|
||||||
@ -44,7 +44,7 @@
|
|||||||
// pdf.js's one, or the pdf.js is executed via eval(), the workerSrc property
|
// pdf.js's one, or the pdf.js is executed via eval(), the workerSrc property
|
||||||
// shall be specified.
|
// shall be specified.
|
||||||
//
|
//
|
||||||
// PDFJS.workerSrc = '../../build/pdf.worker.js';
|
// PDFJS.workerSrc = '../../build/generic/build/pdf.worker.js';
|
||||||
|
|
||||||
var pdfDoc = null,
|
var pdfDoc = null,
|
||||||
pageNum = 1,
|
pageNum = 1,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
<title>Text-only PDF.js example</title>
|
<title>Text-only PDF.js example</title>
|
||||||
<script src="../../build/generic/build/pdf.js"></script>
|
<script src="../../build/generic/build/pdf.js"></script>
|
||||||
<script src="pdf2svg.js"></script>
|
<script src="pdf2svg.js"></script>
|
||||||
|
@ -18,7 +18,7 @@ var PAGE_NUMBER = 1;
|
|||||||
var PAGE_SCALE = 1.5;
|
var PAGE_SCALE = 1.5;
|
||||||
var SVG_NS = 'http://www.w3.org/2000/svg';
|
var SVG_NS = 'http://www.w3.org/2000/svg';
|
||||||
|
|
||||||
PDFJS.workerSrc = '../../build/pdf.worker.js';
|
PDFJS.workerSrc = '../../build/generic/build/pdf.worker.js';
|
||||||
|
|
||||||
function buildSVG(viewport, textContent) {
|
function buildSVG(viewport, textContent) {
|
||||||
// Building SVG with size of the viewport (for simplicity)
|
// Building SVG with size of the viewport (for simplicity)
|
||||||
|
399
gulpfile.js
399
gulpfile.js
@ -20,6 +20,7 @@
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var gulp = require('gulp');
|
var gulp = require('gulp');
|
||||||
var gutil = require('gulp-util');
|
var gutil = require('gulp-util');
|
||||||
|
var rename = require('gulp-rename');
|
||||||
var mkdirp = require('mkdirp');
|
var mkdirp = require('mkdirp');
|
||||||
var rimraf = require('rimraf');
|
var rimraf = require('rimraf');
|
||||||
var runSequence = require('run-sequence');
|
var runSequence = require('run-sequence');
|
||||||
@ -34,10 +35,19 @@ var BUILD_DIR = 'build/';
|
|||||||
var JSDOC_DIR = 'jsdoc/';
|
var JSDOC_DIR = 'jsdoc/';
|
||||||
var L10N_DIR = 'l10n/';
|
var L10N_DIR = 'l10n/';
|
||||||
var TEST_DIR = 'test/';
|
var TEST_DIR = 'test/';
|
||||||
|
var EXTENSION_SRC_DIR = 'extensions/';
|
||||||
|
|
||||||
var makeFile = require('./make.js');
|
var GENERIC_DIR = BUILD_DIR + 'generic/';
|
||||||
var stripCommentHeaders = makeFile.stripCommentHeaders;
|
var COMPONENTS_DIR = BUILD_DIR + 'components/';
|
||||||
var builder = makeFile.builder;
|
var SINGLE_FILE_DIR = BUILD_DIR + 'singlefile/';
|
||||||
|
var MINIFIED_DIR = BUILD_DIR + 'minified/';
|
||||||
|
var FIREFOX_BUILD_DIR = BUILD_DIR + 'firefox/';
|
||||||
|
var COMMON_WEB_FILES = [
|
||||||
|
'web/images/*.{png,svg,gif,cur}',
|
||||||
|
'web/debugger.js'
|
||||||
|
];
|
||||||
|
|
||||||
|
var builder = require('./external/builder/builder.js');
|
||||||
|
|
||||||
var CONFIG_FILE = 'pdfjs.config';
|
var CONFIG_FILE = 'pdfjs.config';
|
||||||
var config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString());
|
var config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString());
|
||||||
@ -76,6 +86,16 @@ function stripUMDHeaders(content) {
|
|||||||
return content.replace(reg, '');
|
return content.replace(reg, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function stripCommentHeaders(content) {
|
||||||
|
var notEndOfComment = '(?:[^*]|\\*(?!/))+';
|
||||||
|
var reg = new RegExp(
|
||||||
|
'\n/\\* Copyright' + notEndOfComment + '\\*/\\s*' +
|
||||||
|
'(?:/\\*' + notEndOfComment + '\\*/\\s*|//(?!#).*\n\\s*)*' +
|
||||||
|
'\\s*\'use strict\';', 'g');
|
||||||
|
content = content.replace(reg, '');
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
function checkChromePreferencesFile(chromePrefsPath, webPrefsPath) {
|
function checkChromePreferencesFile(chromePrefsPath, webPrefsPath) {
|
||||||
var chromePrefs = JSON.parse(fs.readFileSync(chromePrefsPath).toString());
|
var chromePrefs = JSON.parse(fs.readFileSync(chromePrefsPath).toString());
|
||||||
var chromePrefsKeys = Object.keys(chromePrefs.properties);
|
var chromePrefsKeys = Object.keys(chromePrefs.properties);
|
||||||
@ -296,6 +316,14 @@ function checkDir(path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTempFile(prefix, suffix) {
|
||||||
|
mkdirp.sync(BUILD_DIR + 'tmp/');
|
||||||
|
var bytes = require('crypto').randomBytes(6).toString('hex');
|
||||||
|
var path = BUILD_DIR + 'tmp/' + prefix + bytes + suffix;
|
||||||
|
fs.writeFileSync(path, '');
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
function createTestSource(testsName) {
|
function createTestSource(testsName) {
|
||||||
var source = stream.Readable({ objectMode: true });
|
var source = stream.Readable({ objectMode: true });
|
||||||
source._read = function () {
|
source._read = function () {
|
||||||
@ -484,55 +512,328 @@ gulp.task('cmaps', function () {
|
|||||||
compressCmaps(CMAP_INPUT, VIEWER_CMAP_OUTPUT, true);
|
compressCmaps(CMAP_INPUT, VIEWER_CMAP_OUTPUT, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
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(defines), 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(defines), 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 () {
|
gulp.task('bundle', ['buildnumber'], function () {
|
||||||
return createBundle(DEFINES).pipe(gulp.dest(BUILD_DIR));
|
return createBundle(DEFINES).pipe(gulp.dest(BUILD_DIR));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function preprocessCSS(source, mode, defines, cleanup) {
|
||||||
|
var outName = getTempFile('~preprocess', '.css');
|
||||||
|
var setup = {
|
||||||
|
defines: defines,
|
||||||
|
copy: [],
|
||||||
|
preprocess: [],
|
||||||
|
preprocessCSS: [
|
||||||
|
[mode, source, outName]
|
||||||
|
]
|
||||||
|
};
|
||||||
|
builder.build(setup);
|
||||||
|
var out = fs.readFileSync(outName).toString();
|
||||||
|
fs.unlinkSync(outName);
|
||||||
|
if (cleanup) {
|
||||||
|
// Strip out all license headers in the middle.
|
||||||
|
var reg = /\n\/\* Copyright(.|\n)*?Mozilla Foundation(.|\n)*?\*\//g;
|
||||||
|
out = out.replace(reg, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = source.lastIndexOf('/');
|
||||||
|
return createStringSource(source.substr(i + 1), out);
|
||||||
|
}
|
||||||
|
|
||||||
|
function preprocessHTML(source, defines) {
|
||||||
|
var outName = getTempFile('~preprocess', '.html');
|
||||||
|
var setup = {
|
||||||
|
defines: defines,
|
||||||
|
copy: [],
|
||||||
|
preprocess: [
|
||||||
|
[source, outName]
|
||||||
|
],
|
||||||
|
preprocessCSS: []
|
||||||
|
};
|
||||||
|
builder.build(setup);
|
||||||
|
var out = fs.readFileSync(outName).toString();
|
||||||
|
fs.unlinkSync(outName);
|
||||||
|
|
||||||
|
var i = source.lastIndexOf('/');
|
||||||
|
return createStringSource(source.substr(i + 1), out);
|
||||||
|
}
|
||||||
|
|
||||||
|
function preprocessJS(source, defines, cleanup) {
|
||||||
|
var outName = getTempFile('~preprocess', '.js');
|
||||||
|
var setup = {
|
||||||
|
defines: defines,
|
||||||
|
copy: [],
|
||||||
|
preprocess: [
|
||||||
|
[source, outName]
|
||||||
|
],
|
||||||
|
preprocessCSS: []
|
||||||
|
};
|
||||||
|
builder.build(setup);
|
||||||
|
var out = fs.readFileSync(outName).toString();
|
||||||
|
fs.unlinkSync(outName);
|
||||||
|
if (cleanup) {
|
||||||
|
out = stripCommentHeaders(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = source.lastIndexOf('/');
|
||||||
|
return createStringSource(source.substr(i + 1), out);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Builds the generic production viewer that should be compatible with most
|
||||||
|
// modern HTML5 browsers.
|
||||||
|
gulp.task('generic', ['buildnumber', 'locale'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Creating generic viewer');
|
||||||
|
var defines = builder.merge(DEFINES, {GENERIC: true});
|
||||||
|
|
||||||
|
rimraf.sync(GENERIC_DIR);
|
||||||
|
|
||||||
|
return merge([
|
||||||
|
createBundle(defines).pipe(gulp.dest(GENERIC_DIR + 'build')),
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
gulp.src(COMMON_WEB_FILES, {base: 'web/'})
|
||||||
|
.pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
gulp.src('LICENSE').pipe(gulp.dest(GENERIC_DIR)),
|
||||||
|
gulp.src([
|
||||||
|
'external/webL10n/l10n.js',
|
||||||
|
'web/compatibility.js'
|
||||||
|
]).pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
gulp.src([
|
||||||
|
'web/locale/*/viewer.properties',
|
||||||
|
'web/locale/locale.properties'
|
||||||
|
], {base: 'web/'}).pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],
|
||||||
|
{base: 'external/bcmaps'})
|
||||||
|
.pipe(gulp.dest(GENERIC_DIR + 'web/cmaps')),
|
||||||
|
preprocessHTML('web/viewer.html', defines)
|
||||||
|
.pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
preprocessCSS('web/viewer.css', 'generic', defines, true)
|
||||||
|
.pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src('web/compressed.tracemonkey-pldi-09.pdf')
|
||||||
|
.pipe(gulp.dest(GENERIC_DIR + 'web')),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('components', ['buildnumber'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Creating generic components');
|
||||||
|
var defines = builder.merge(DEFINES, {COMPONENTS: true, GENERIC: true});
|
||||||
|
|
||||||
|
rimraf.sync(COMPONENTS_DIR);
|
||||||
|
|
||||||
|
var COMPONENTS_IMAGES = [
|
||||||
|
'web/images/annotation-*.svg',
|
||||||
|
'web/images/loading-icon.gif',
|
||||||
|
'web/images/shadow.png',
|
||||||
|
'web/images/texture.png',
|
||||||
|
];
|
||||||
|
|
||||||
|
return merge([
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(COMPONENTS_DIR)),
|
||||||
|
gulp.src(COMPONENTS_IMAGES).pipe(gulp.dest(COMPONENTS_DIR + 'images')),
|
||||||
|
gulp.src('web/compatibility.js').pipe(gulp.dest(COMPONENTS_DIR)),
|
||||||
|
preprocessCSS('web/pdf_viewer.css', 'components', defines, true)
|
||||||
|
.pipe(gulp.dest(COMPONENTS_DIR)),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('singlefile', ['buildnumber'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Creating singlefile build');
|
||||||
|
var defines = builder.merge(DEFINES, {SINGLE_FILE: true});
|
||||||
|
|
||||||
|
var SINGLE_FILE_BUILD_DIR = SINGLE_FILE_DIR + 'build/';
|
||||||
|
|
||||||
|
rimraf.sync(SINGLE_FILE_DIR);
|
||||||
|
|
||||||
|
return createBundle(defines).pipe(gulp.dest(SINGLE_FILE_BUILD_DIR));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('minified-pre', ['buildnumber', 'locale'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Creating minified viewer');
|
||||||
|
var defines = builder.merge(DEFINES, {MINIFIED: true, GENERIC: true});
|
||||||
|
|
||||||
|
rimraf.sync(MINIFIED_DIR);
|
||||||
|
|
||||||
|
return merge([
|
||||||
|
createBundle(defines).pipe(gulp.dest(MINIFIED_DIR + 'build')),
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
gulp.src(COMMON_WEB_FILES, {base: 'web/'})
|
||||||
|
.pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
gulp.src([
|
||||||
|
'web/locale/*/viewer.properties',
|
||||||
|
'web/locale/locale.properties'
|
||||||
|
], {base: 'web/'}).pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],
|
||||||
|
{base: 'external/bcmaps'})
|
||||||
|
.pipe(gulp.dest(MINIFIED_DIR + 'web/cmaps')),
|
||||||
|
|
||||||
|
preprocessHTML('web/viewer.html', defines)
|
||||||
|
.pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
preprocessCSS('web/viewer.css', 'minified', defines, true)
|
||||||
|
.pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src('web/compressed.tracemonkey-pldi-09.pdf')
|
||||||
|
.pipe(gulp.dest(MINIFIED_DIR + 'web')),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('firefox-pre', ['buildnumber', 'locale'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Building Firefox extension');
|
||||||
|
var defines = builder.merge(DEFINES, {FIREFOX: true});
|
||||||
|
|
||||||
|
var FIREFOX_BUILD_CONTENT_DIR = FIREFOX_BUILD_DIR + '/content/',
|
||||||
|
FIREFOX_EXTENSION_DIR = 'extensions/firefox/',
|
||||||
|
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/';
|
||||||
|
|
||||||
|
// Clear out everything in the firefox extension build directory
|
||||||
|
rimraf.sync(FIREFOX_BUILD_DIR);
|
||||||
|
|
||||||
|
return merge([
|
||||||
|
createBundle(defines).pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'build')),
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(COMMON_WEB_FILES, {base: 'web/'})
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'locale/**/*.properties',
|
||||||
|
{base: FIREFOX_EXTENSION_DIR})
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_DIR)),
|
||||||
|
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],
|
||||||
|
{base: 'external/bcmaps'})
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'web/cmaps')),
|
||||||
|
|
||||||
|
preprocessHTML('web/viewer.html', defines)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
preprocessCSS('web/viewer.css', 'firefox', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src(FIREFOX_CONTENT_DIR + 'PdfJs-stub.jsm')
|
||||||
|
.pipe(rename('PdfJs.jsm'))
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
gulp.src(FIREFOX_CONTENT_DIR + 'PdfJsTelemetry-addon.jsm')
|
||||||
|
.pipe(rename('PdfJsTelemetry.jsm'))
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + '**/*.{rdf,png,manifest}',
|
||||||
|
{base: FIREFOX_EXTENSION_DIR})
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'chrome/content.js',
|
||||||
|
{base: FIREFOX_EXTENSION_DIR})
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_DIR)),
|
||||||
|
gulp.src('LICENSE').pipe(gulp.dest(FIREFOX_BUILD_DIR)),
|
||||||
|
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'tools/l10n.js')
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR + '/web')),
|
||||||
|
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfStreamConverter.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfJsNetwork.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfjsContentUtils.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfjsChromeUtils.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_EXTENSION_DIR + 'bootstrap.js', defines, true)
|
||||||
|
.pipe(gulp.dest(FIREFOX_BUILD_DIR)),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('mozcentral-pre', ['buildnumber', 'locale'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Building mozilla-central extension');
|
||||||
|
var defines = builder.merge(DEFINES, {MOZCENTRAL: true});
|
||||||
|
|
||||||
|
var MOZCENTRAL_DIR = BUILD_DIR + 'mozcentral/',
|
||||||
|
MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/extensions/pdfjs/',
|
||||||
|
MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_EXTENSION_DIR + 'content/',
|
||||||
|
FIREFOX_EXTENSION_DIR = 'extensions/firefox/',
|
||||||
|
MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + 'browser/locales/en-US/pdfviewer/',
|
||||||
|
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/';
|
||||||
|
|
||||||
|
// Clear out everything in the firefox extension build directory
|
||||||
|
rimraf.sync(MOZCENTRAL_DIR);
|
||||||
|
|
||||||
|
return merge([
|
||||||
|
createBundle(defines).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'build')),
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(COMMON_WEB_FILES, {base: 'web/'})
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],
|
||||||
|
{base: 'external/bcmaps'})
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web/cmaps')),
|
||||||
|
|
||||||
|
preprocessHTML('web/viewer.html', defines)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
|
||||||
|
preprocessCSS('web/viewer.css', 'mozcentral', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src(FIREFOX_CONTENT_DIR + 'PdfJsTelemetry.jsm')
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'chrome-mozcentral.manifest')
|
||||||
|
.pipe(rename('chrome.manifest'))
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_EXTENSION_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'locale/en-US/*.properties',
|
||||||
|
{base: FIREFOX_EXTENSION_DIR})
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_L10N_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'README.mozilla')
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_EXTENSION_DIR)),
|
||||||
|
gulp.src('LICENSE').pipe(gulp.dest(MOZCENTRAL_EXTENSION_DIR)),
|
||||||
|
gulp.src(FIREFOX_EXTENSION_DIR + 'tools/l10n.js')
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + '/web')),
|
||||||
|
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfJs.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfStreamConverter.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfJsNetwork.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfjsContentUtils.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
preprocessJS(FIREFOX_CONTENT_DIR + 'PdfjsChromeUtils.jsm', defines, true)
|
||||||
|
.pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR)),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('chromium-pre', ['buildnumber', 'locale'], function () {
|
||||||
|
console.log();
|
||||||
|
console.log('### Building Chromium extension');
|
||||||
|
var defines = builder.merge(DEFINES, {CHROME: true});
|
||||||
|
|
||||||
|
var CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
|
||||||
|
CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + '/content/';
|
||||||
|
|
||||||
|
// Clear out everything in the chrome extension build directory
|
||||||
|
rimraf.sync(CHROME_BUILD_DIR);
|
||||||
|
return merge([
|
||||||
|
createBundle(defines).pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'build')),
|
||||||
|
createWebBundle(defines).pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(COMMON_WEB_FILES, {base: 'web/'})
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src('external/webL10n/l10n.js')
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src([
|
||||||
|
'web/locale/*/viewer.properties',
|
||||||
|
'web/locale/locale.properties'
|
||||||
|
], {base: 'web/'}).pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
gulp.src(['external/bcmaps/*.bcmap', 'external/bcmaps/LICENSE'],
|
||||||
|
{base: 'external/bcmaps'})
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web/cmaps')),
|
||||||
|
|
||||||
|
preprocessHTML('web/viewer.html', defines)
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
preprocessCSS('web/viewer.css', 'chrome', defines, true)
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_CONTENT_DIR + 'web')),
|
||||||
|
|
||||||
|
gulp.src('LICENSE').pipe(gulp.dest(CHROME_BUILD_DIR)),
|
||||||
|
gulp.src('extensions/chromium/*.{json,html,js,css,png}')
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_DIR)),
|
||||||
|
gulp.src('extensions/chromium/**/*.{json,html,js,css,png}',
|
||||||
|
{base: 'extensions/chromium/'})
|
||||||
|
.pipe(gulp.dest(CHROME_BUILD_DIR)),
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
gulp.task('jsdoc', function (done) {
|
gulp.task('jsdoc', function (done) {
|
||||||
console.log();
|
console.log();
|
||||||
console.log('### Generating documentation (JSDoc)');
|
console.log('### Generating documentation (JSDoc)');
|
||||||
@ -723,6 +1024,8 @@ gulp.task('importl10n', function(done) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Getting all shelljs registered tasks and register them with gulp
|
// Getting all shelljs registered tasks and register them with gulp
|
||||||
|
require('./make.js');
|
||||||
|
|
||||||
var gulpContext = false;
|
var gulpContext = false;
|
||||||
for (var taskName in global.target) {
|
for (var taskName in global.target) {
|
||||||
if (taskName in gulp.tasks) {
|
if (taskName in gulp.tasks) {
|
||||||
|
384
make.js
384
make.js
@ -24,7 +24,6 @@ try {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var builder = require('./external/builder/builder.js');
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
var CONFIG_FILE = 'pdfjs.config';
|
var CONFIG_FILE = 'pdfjs.config';
|
||||||
@ -33,15 +32,10 @@ var config = JSON.parse(fs.readFileSync(CONFIG_FILE));
|
|||||||
var ROOT_DIR = __dirname + '/', // absolute path to project's root
|
var ROOT_DIR = __dirname + '/', // absolute path to project's root
|
||||||
BUILD_DIR = 'build/',
|
BUILD_DIR = 'build/',
|
||||||
SRC_DIR = 'src/',
|
SRC_DIR = 'src/',
|
||||||
BUILD_TARGET = BUILD_DIR + 'pdf.js',
|
|
||||||
BUILD_WORKER_TARGET = BUILD_DIR + 'pdf.worker.js',
|
|
||||||
BUILD_TARGETS = [BUILD_TARGET, BUILD_WORKER_TARGET],
|
|
||||||
FIREFOX_BUILD_DIR = BUILD_DIR + '/firefox/',
|
FIREFOX_BUILD_DIR = BUILD_DIR + '/firefox/',
|
||||||
CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
|
CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
|
||||||
JSDOC_DIR = BUILD_DIR + 'jsdoc',
|
JSDOC_DIR = BUILD_DIR + 'jsdoc',
|
||||||
EXTENSION_SRC_DIR = 'extensions/',
|
EXTENSION_SRC_DIR = 'extensions/',
|
||||||
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/',
|
|
||||||
LOCALE_SRC_DIR = 'l10n/',
|
|
||||||
GH_PAGES_DIR = BUILD_DIR + 'gh-pages/',
|
GH_PAGES_DIR = BUILD_DIR + 'gh-pages/',
|
||||||
GENERIC_DIR = BUILD_DIR + 'generic/',
|
GENERIC_DIR = BUILD_DIR + 'generic/',
|
||||||
MINIFIED_DIR = BUILD_DIR + 'minified/',
|
MINIFIED_DIR = BUILD_DIR + 'minified/',
|
||||||
@ -56,18 +50,6 @@ var ROOT_DIR = __dirname + '/', // absolute path to project's root
|
|||||||
MOZCENTRAL_STREAM_CONVERTER2_ID = 'd0c5195d-e798-49d4-b1d3-9324328b2292',
|
MOZCENTRAL_STREAM_CONVERTER2_ID = 'd0c5195d-e798-49d4-b1d3-9324328b2292',
|
||||||
FIREFOX_STREAM_CONVERTER2_ID = '6457a96b-2d68-439a-bcfa-44465fbcdbb2';
|
FIREFOX_STREAM_CONVERTER2_ID = '6457a96b-2d68-439a-bcfa-44465fbcdbb2';
|
||||||
|
|
||||||
var DEFINES = {
|
|
||||||
PRODUCTION: true,
|
|
||||||
// The main build targets:
|
|
||||||
GENERIC: false,
|
|
||||||
FIREFOX: false,
|
|
||||||
MOZCENTRAL: false,
|
|
||||||
CHROME: false,
|
|
||||||
MINIFIED: false,
|
|
||||||
SINGLE_FILE: false,
|
|
||||||
COMPONENTS: false
|
|
||||||
};
|
|
||||||
|
|
||||||
function getCurrentVersion() {
|
function getCurrentVersion() {
|
||||||
// The 'build/version.json' file is created by 'buildnumber' task.
|
// The 'build/version.json' file is created by 'buildnumber' task.
|
||||||
return JSON.parse(fs.readFileSync(ROOT_DIR + 'build/version.json').toString())
|
return JSON.parse(fs.readFileSync(ROOT_DIR + 'build/version.json').toString())
|
||||||
@ -95,103 +77,17 @@ target.all = function() {
|
|||||||
// Production stuff
|
// Production stuff
|
||||||
//
|
//
|
||||||
|
|
||||||
// Files that need to be included in every build.
|
|
||||||
var COMMON_WEB_FILES =
|
|
||||||
['web/images',
|
|
||||||
'web/debugger.js'],
|
|
||||||
COMMON_WEB_FILES_PREPROCESS =
|
|
||||||
['web/viewer.html'],
|
|
||||||
COMMON_FIREFOX_FILES_PREPROCESS =
|
|
||||||
[FIREFOX_CONTENT_DIR + 'PdfStreamConverter.jsm',
|
|
||||||
FIREFOX_CONTENT_DIR + 'PdfJsNetwork.jsm',
|
|
||||||
FIREFOX_CONTENT_DIR + 'PdfjsContentUtils.jsm',
|
|
||||||
FIREFOX_CONTENT_DIR + 'PdfjsChromeUtils.jsm'];
|
|
||||||
//
|
//
|
||||||
// make generic
|
// make generic
|
||||||
// Builds the generic production viewer that should be compatible with most
|
// Builds the generic production viewer that should be compatible with most
|
||||||
// modern HTML5 browsers.
|
// modern HTML5 browsers.
|
||||||
//
|
//
|
||||||
target.generic = function() {
|
target.generic = function() {
|
||||||
execGulp('bundle-generic');
|
execGulp('generic');
|
||||||
|
|
||||||
target.locale();
|
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
echo();
|
|
||||||
echo('### Creating generic viewer');
|
|
||||||
|
|
||||||
rm('-rf', GENERIC_DIR);
|
|
||||||
mkdir('-p', GENERIC_DIR);
|
|
||||||
mkdir('-p', GENERIC_DIR + BUILD_DIR);
|
|
||||||
mkdir('-p', GENERIC_DIR + '/web');
|
|
||||||
mkdir('-p', GENERIC_DIR + '/web/cmaps');
|
|
||||||
|
|
||||||
var defines = builder.merge(DEFINES, {GENERIC: true});
|
|
||||||
|
|
||||||
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'],
|
|
||||||
['web/compatibility.js', GENERIC_DIR + '/web'],
|
|
||||||
['web/compressed.tracemonkey-pldi-09.pdf', GENERIC_DIR + '/web'],
|
|
||||||
['external/bcmaps/*', GENERIC_DIR + '/web/cmaps/'],
|
|
||||||
['web/locale', GENERIC_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocess: [
|
|
||||||
[COMMON_WEB_FILES_PREPROCESS, GENERIC_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocessCSS: [
|
|
||||||
['generic', 'web/viewer.css',
|
|
||||||
GENERIC_DIR + '/web/viewer.css']
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupJSSource(GENERIC_DIR + '/build/pdf.js');
|
|
||||||
cleanupJSSource(GENERIC_DIR + '/web/viewer.js');
|
|
||||||
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
target.components = function() {
|
target.components = function() {
|
||||||
execGulp('bundle-components');
|
execGulp('components');
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
echo();
|
|
||||||
echo('### Creating generic components');
|
|
||||||
|
|
||||||
rm('-rf', COMPONENTS_DIR);
|
|
||||||
mkdir('-p', COMPONENTS_DIR);
|
|
||||||
mkdir('-p', COMPONENTS_DIR + 'images');
|
|
||||||
|
|
||||||
var defines = builder.merge(DEFINES, {COMPONENTS: true, GENERIC: true});
|
|
||||||
|
|
||||||
var COMPONENTS_IMAGES = [
|
|
||||||
'web/images/annotation-*.svg',
|
|
||||||
'web/images/loading-icon.gif',
|
|
||||||
'web/images/shadow.png',
|
|
||||||
'web/images/texture.png',
|
|
||||||
];
|
|
||||||
|
|
||||||
var setup = {
|
|
||||||
defines: defines,
|
|
||||||
copy: [
|
|
||||||
[BUILD_DIR + 'pdf_viewer.js', COMPONENTS_DIR],
|
|
||||||
[COMPONENTS_IMAGES, COMPONENTS_DIR + 'images'],
|
|
||||||
['web/compatibility.js', COMPONENTS_DIR],
|
|
||||||
],
|
|
||||||
preprocess: [],
|
|
||||||
preprocessCSS: [
|
|
||||||
['components', 'web/pdf_viewer.css', COMPONENTS_DIR + 'pdf_viewer.css'],
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupJSSource(COMPONENTS_DIR + 'pdf_viewer.js');
|
|
||||||
cleanupCSSSource(COMPONENTS_DIR + 'pdf_viewer.css');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
target.jsdoc = function() {
|
target.jsdoc = function() {
|
||||||
@ -400,93 +296,16 @@ target.bundle = function(args) {
|
|||||||
// flags the script loader to not attempt to load the separate worker JS file.
|
// flags the script loader to not attempt to load the separate worker JS file.
|
||||||
//
|
//
|
||||||
target.singlefile = function() {
|
target.singlefile = function() {
|
||||||
cd(ROOT_DIR);
|
execGulp('singlefile');
|
||||||
echo();
|
|
||||||
echo('### Creating singlefile build');
|
|
||||||
|
|
||||||
var SINGLE_FILE_BUILD_DIR = SINGLE_FILE_DIR + 'build/';
|
|
||||||
|
|
||||||
execGulp('bundle-singlefile');
|
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
|
|
||||||
rm('-rf', SINGLE_FILE_DIR);
|
|
||||||
mkdir('-p', SINGLE_FILE_DIR);
|
|
||||||
mkdir('-p', SINGLE_FILE_BUILD_DIR);
|
|
||||||
|
|
||||||
cp(BUILD_DIR + 'pdf.combined.js', SINGLE_FILE_BUILD_DIR);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function stripCommentHeaders(content) {
|
|
||||||
var notEndOfComment = '(?:[^*]|\\*(?!/))+';
|
|
||||||
var reg = new RegExp(
|
|
||||||
'\n/\\* Copyright' + notEndOfComment + '\\*/\\s*' +
|
|
||||||
'(?:/\\*' + notEndOfComment + '\\*/\\s*|//(?!#).*\n\\s*)*' +
|
|
||||||
'\\s*\'use strict\';', 'g');
|
|
||||||
content = content.replace(reg, '');
|
|
||||||
return content;
|
|
||||||
}
|
|
||||||
|
|
||||||
function cleanupJSSource(file) {
|
|
||||||
var content = cat(file);
|
|
||||||
|
|
||||||
content = stripCommentHeaders(content);
|
|
||||||
|
|
||||||
content.to(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
function cleanupCSSSource(file) {
|
|
||||||
var content = cat(file);
|
|
||||||
|
|
||||||
// Strip out all license headers in the middle.
|
|
||||||
var reg = /\n\/\* Copyright(.|\n)*?Mozilla Foundation(.|\n)*?\*\//g;
|
|
||||||
content = content.replace(reg, '');
|
|
||||||
|
|
||||||
content.to(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// make minified
|
// make minified
|
||||||
// Builds the minified production viewer that should be compatible with most
|
// Builds the minified production viewer that should be compatible with most
|
||||||
// modern HTML5 browsers.
|
// modern HTML5 browsers.
|
||||||
//
|
//
|
||||||
target.minified = function() {
|
target.minified = function() {
|
||||||
execGulp('bundle-minified');
|
execGulp('minified-pre');
|
||||||
target.locale();
|
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
echo();
|
|
||||||
echo('### Creating minified viewer');
|
|
||||||
|
|
||||||
rm('-rf', MINIFIED_DIR);
|
|
||||||
mkdir('-p', MINIFIED_DIR);
|
|
||||||
mkdir('-p', MINIFIED_DIR + BUILD_DIR);
|
|
||||||
mkdir('-p', MINIFIED_DIR + '/web');
|
|
||||||
mkdir('-p', MINIFIED_DIR + '/web/cmaps');
|
|
||||||
|
|
||||||
var defines = builder.merge(DEFINES, {GENERIC: true, MINIFIED: true});
|
|
||||||
|
|
||||||
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: [
|
|
||||||
[COMMON_WEB_FILES_PREPROCESS, MINIFIED_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocessCSS: [
|
|
||||||
['minified', 'web/viewer.css',
|
|
||||||
MINIFIED_DIR + '/web/viewer.css']
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupCSSSource(MINIFIED_DIR + '/web/viewer.css');
|
|
||||||
|
|
||||||
var viewerFiles = [
|
var viewerFiles = [
|
||||||
'web/compatibility.js',
|
'web/compatibility.js',
|
||||||
@ -542,22 +361,10 @@ target.buildnumber = function() {
|
|||||||
// make firefox
|
// make firefox
|
||||||
//
|
//
|
||||||
target.firefox = function() {
|
target.firefox = function() {
|
||||||
cd(ROOT_DIR);
|
execGulp('firefox-pre');
|
||||||
echo();
|
|
||||||
echo('### Building Firefox extension');
|
|
||||||
var defines = builder.merge(DEFINES, {FIREFOX: true});
|
|
||||||
|
|
||||||
|
cd(ROOT_DIR);
|
||||||
var FIREFOX_BUILD_CONTENT_DIR = FIREFOX_BUILD_DIR + '/content/',
|
var FIREFOX_BUILD_CONTENT_DIR = FIREFOX_BUILD_DIR + '/content/',
|
||||||
FIREFOX_EXTENSION_DIR = 'extensions/firefox/',
|
|
||||||
FIREFOX_EXTENSION_FILES_TO_COPY =
|
|
||||||
['*.js',
|
|
||||||
'*.rdf',
|
|
||||||
'*.svg',
|
|
||||||
'*.png',
|
|
||||||
'*.manifest',
|
|
||||||
'locale',
|
|
||||||
'chrome',
|
|
||||||
'../../LICENSE'],
|
|
||||||
FIREFOX_EXTENSION_FILES =
|
FIREFOX_EXTENSION_FILES =
|
||||||
['bootstrap.js',
|
['bootstrap.js',
|
||||||
'install.rdf',
|
'install.rdf',
|
||||||
@ -570,55 +377,6 @@ target.firefox = function() {
|
|||||||
'LICENSE'],
|
'LICENSE'],
|
||||||
FIREFOX_EXTENSION_NAME = 'pdf.js.xpi';
|
FIREFOX_EXTENSION_NAME = 'pdf.js.xpi';
|
||||||
|
|
||||||
target.locale();
|
|
||||||
execGulp('bundle-firefox');
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
|
|
||||||
// Clear out everything in the firefox extension build directory
|
|
||||||
rm('-rf', FIREFOX_BUILD_DIR);
|
|
||||||
mkdir('-p', FIREFOX_BUILD_CONTENT_DIR);
|
|
||||||
mkdir('-p', FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR);
|
|
||||||
mkdir('-p', FIREFOX_BUILD_CONTENT_DIR + '/web');
|
|
||||||
mkdir('-p', FIREFOX_BUILD_CONTENT_DIR + '/web/cmaps');
|
|
||||||
|
|
||||||
cp(FIREFOX_CONTENT_DIR + 'PdfJs-stub.jsm',
|
|
||||||
FIREFOX_BUILD_CONTENT_DIR + 'PdfJs.jsm');
|
|
||||||
|
|
||||||
cp(FIREFOX_CONTENT_DIR + 'PdfJsTelemetry-addon.jsm',
|
|
||||||
FIREFOX_BUILD_CONTENT_DIR + 'PdfJsTelemetry.jsm');
|
|
||||||
|
|
||||||
// Copy extension files
|
|
||||||
cd(FIREFOX_EXTENSION_DIR);
|
|
||||||
cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY, ROOT_DIR + FIREFOX_BUILD_DIR);
|
|
||||||
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'],
|
|
||||||
['external/bcmaps/*', FIREFOX_BUILD_CONTENT_DIR + '/web/cmaps'],
|
|
||||||
[FIREFOX_EXTENSION_DIR + 'tools/l10n.js',
|
|
||||||
FIREFOX_BUILD_CONTENT_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocess: [
|
|
||||||
[COMMON_WEB_FILES_PREPROCESS, FIREFOX_BUILD_CONTENT_DIR + '/web'],
|
|
||||||
[COMMON_FIREFOX_FILES_PREPROCESS, FIREFOX_BUILD_CONTENT_DIR],
|
|
||||||
[FIREFOX_EXTENSION_DIR + 'bootstrap.js', FIREFOX_BUILD_DIR]
|
|
||||||
],
|
|
||||||
preprocessCSS: [
|
|
||||||
['firefox', 'web/viewer.css',
|
|
||||||
FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.css']
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.js');
|
|
||||||
cleanupJSSource(FIREFOX_BUILD_DIR + 'bootstrap.js');
|
|
||||||
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + 'PdfjsChromeUtils.jsm');
|
|
||||||
cleanupCSSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.css');
|
|
||||||
|
|
||||||
// Remove '.DS_Store' and other hidden files
|
// Remove '.DS_Store' and other hidden files
|
||||||
find(FIREFOX_BUILD_DIR).forEach(function(file) {
|
find(FIREFOX_BUILD_DIR).forEach(function(file) {
|
||||||
if (file.match(/^\./)) {
|
if (file.match(/^\./)) {
|
||||||
@ -667,77 +425,13 @@ target.firefox = function() {
|
|||||||
// make mozcentral
|
// make mozcentral
|
||||||
//
|
//
|
||||||
target.mozcentral = function() {
|
target.mozcentral = function() {
|
||||||
|
execGulp('mozcentral-pre');
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
cd(ROOT_DIR);
|
||||||
echo();
|
|
||||||
echo('### Building mozilla-central extension');
|
|
||||||
var defines = builder.merge(DEFINES, {MOZCENTRAL: true});
|
|
||||||
|
|
||||||
var MOZCENTRAL_DIR = BUILD_DIR + 'mozcentral/',
|
var MOZCENTRAL_DIR = BUILD_DIR + 'mozcentral/',
|
||||||
MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/extensions/pdfjs/',
|
MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/extensions/pdfjs/',
|
||||||
MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_EXTENSION_DIR + 'content/',
|
MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_EXTENSION_DIR + 'content/';
|
||||||
MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + 'browser/locales/en-US/pdfviewer/',
|
|
||||||
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/',
|
|
||||||
FIREFOX_EXTENSION_FILES_TO_COPY =
|
|
||||||
['*.svg',
|
|
||||||
'*.png',
|
|
||||||
'*.manifest',
|
|
||||||
'README.mozilla',
|
|
||||||
'../../LICENSE'],
|
|
||||||
DEFAULT_LOCALE_FILES =
|
|
||||||
[LOCALE_SRC_DIR + 'en-US/viewer.properties',
|
|
||||||
LOCALE_SRC_DIR + 'en-US/chrome.properties'],
|
|
||||||
FIREFOX_MC_EXCLUDED_FILES =
|
|
||||||
['icon.png',
|
|
||||||
'icon64.png'];
|
|
||||||
|
|
||||||
execGulp('bundle-mozcentral');
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
|
|
||||||
// Clear out everything in the firefox extension build directory
|
|
||||||
rm('-rf', MOZCENTRAL_DIR);
|
|
||||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR);
|
|
||||||
mkdir('-p', MOZCENTRAL_L10N_DIR);
|
|
||||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR + BUILD_DIR);
|
|
||||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR + '/web');
|
|
||||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR + '/web/cmaps');
|
|
||||||
|
|
||||||
cp(FIREFOX_CONTENT_DIR + 'PdfJsTelemetry.jsm', MOZCENTRAL_CONTENT_DIR);
|
|
||||||
|
|
||||||
// Copy extension files
|
|
||||||
cd('extensions/firefox');
|
|
||||||
cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY,
|
|
||||||
ROOT_DIR + MOZCENTRAL_EXTENSION_DIR);
|
|
||||||
mv('-f', ROOT_DIR + MOZCENTRAL_EXTENSION_DIR + '/chrome-mozcentral.manifest',
|
|
||||||
ROOT_DIR + MOZCENTRAL_EXTENSION_DIR + '/chrome.manifest');
|
|
||||||
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: [
|
|
||||||
[COMMON_WEB_FILES_PREPROCESS, MOZCENTRAL_CONTENT_DIR + '/web'],
|
|
||||||
[FIREFOX_CONTENT_DIR + 'pdfjschildbootstrap.js', MOZCENTRAL_CONTENT_DIR],
|
|
||||||
[COMMON_FIREFOX_FILES_PREPROCESS, MOZCENTRAL_CONTENT_DIR],
|
|
||||||
[FIREFOX_CONTENT_DIR + 'PdfJs.jsm', MOZCENTRAL_CONTENT_DIR]
|
|
||||||
],
|
|
||||||
preprocessCSS: [
|
|
||||||
['mozcentral',
|
|
||||||
'web/viewer.css',
|
|
||||||
MOZCENTRAL_CONTENT_DIR + '/web/viewer.css']
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.js');
|
|
||||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfJs.jsm');
|
|
||||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfjsChromeUtils.jsm');
|
|
||||||
cleanupCSSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.css');
|
|
||||||
|
|
||||||
// Remove '.DS_Store' and other hidden files
|
// Remove '.DS_Store' and other hidden files
|
||||||
find(MOZCENTRAL_DIR).forEach(function(file) {
|
find(MOZCENTRAL_DIR).forEach(function(file) {
|
||||||
@ -746,18 +440,6 @@ target.mozcentral = function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Remove excluded files
|
|
||||||
cd(MOZCENTRAL_EXTENSION_DIR);
|
|
||||||
FIREFOX_MC_EXCLUDED_FILES.forEach(function(file) {
|
|
||||||
if (test('-f', file)) {
|
|
||||||
rm('-r', file);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
|
|
||||||
// Copy default localization files
|
|
||||||
cp(DEFAULT_LOCALE_FILES, MOZCENTRAL_L10N_DIR);
|
|
||||||
|
|
||||||
// Update the build version number
|
// Update the build version number
|
||||||
var VERSION = getCurrentVersion();
|
var VERSION = getCurrentVersion();
|
||||||
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
|
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
|
||||||
@ -779,56 +461,13 @@ target.mozcentral = function() {
|
|||||||
// make chrome
|
// make chrome
|
||||||
//
|
//
|
||||||
target.chromium = function() {
|
target.chromium = function() {
|
||||||
target.locale();
|
execGulp('chromium-pre');
|
||||||
|
|
||||||
cd(ROOT_DIR);
|
cd(ROOT_DIR);
|
||||||
echo();
|
|
||||||
echo('### Building Chromium extension');
|
|
||||||
var defines = builder.merge(DEFINES, {CHROME: true});
|
|
||||||
|
|
||||||
var CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
|
var CHROME_BUILD_DIR = BUILD_DIR + '/chromium/',
|
||||||
CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + '/content/';
|
CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + '/content/';
|
||||||
|
|
||||||
execGulp('bundle-chromium');
|
|
||||||
cd(ROOT_DIR);
|
|
||||||
|
|
||||||
// Clear out everything in the chrome extension build directory
|
|
||||||
rm('-Rf', CHROME_BUILD_DIR);
|
|
||||||
mkdir('-p', CHROME_BUILD_CONTENT_DIR);
|
|
||||||
mkdir('-p', CHROME_BUILD_CONTENT_DIR + BUILD_DIR);
|
|
||||||
mkdir('-p', CHROME_BUILD_CONTENT_DIR + '/web');
|
|
||||||
|
|
||||||
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',
|
|
||||||
'extensions/chromium/*.js',
|
|
||||||
'extensions/chromium/*.css',
|
|
||||||
'extensions/chromium/icon*.png'],
|
|
||||||
CHROME_BUILD_DIR],
|
|
||||||
['extensions/chromium/pageAction/*.*', CHROME_BUILD_DIR + '/pageAction'],
|
|
||||||
['extensions/chromium/options/*.*', CHROME_BUILD_DIR + '/options'],
|
|
||||||
['external/webL10n/l10n.js', CHROME_BUILD_CONTENT_DIR + '/web'],
|
|
||||||
['external/bcmaps/*', CHROME_BUILD_CONTENT_DIR + '/web/cmaps'],
|
|
||||||
['web/locale', CHROME_BUILD_CONTENT_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocess: [
|
|
||||||
[COMMON_WEB_FILES_PREPROCESS, CHROME_BUILD_CONTENT_DIR + '/web']
|
|
||||||
],
|
|
||||||
preprocessCSS: [
|
|
||||||
['chrome', 'web/viewer.css',
|
|
||||||
CHROME_BUILD_CONTENT_DIR + '/web/viewer.css']
|
|
||||||
]
|
|
||||||
};
|
|
||||||
builder.build(setup);
|
|
||||||
|
|
||||||
cleanupJSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.js');
|
|
||||||
cleanupCSSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.css');
|
|
||||||
|
|
||||||
// Update the build version number
|
// Update the build version number
|
||||||
var VERSION = getCurrentVersion();
|
var VERSION = getCurrentVersion();
|
||||||
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
|
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
|
||||||
@ -1171,6 +810,3 @@ target.makefile = function () {
|
|||||||
target.importl10n = function() {
|
target.importl10n = function() {
|
||||||
execGulp('importl10n');
|
execGulp('importl10n');
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.stripCommentHeaders = stripCommentHeaders;
|
|
||||||
exports.builder = builder;
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"eslint": "^3.11.1",
|
"eslint": "^3.11.1",
|
||||||
"esprima": "^2.7.2",
|
"esprima": "^2.7.2",
|
||||||
"gulp": "^3.9.1",
|
"gulp": "^3.9.1",
|
||||||
|
"gulp-rename": "^1.2.2",
|
||||||
"gulp-util": "^3.0.7",
|
"gulp-util": "^3.0.7",
|
||||||
"gulp-zip": "^3.2.0",
|
"gulp-zip": "^3.2.0",
|
||||||
"jasmine": "^2.5.2",
|
"jasmine": "^2.5.2",
|
||||||
|
Loading…
Reference in New Issue
Block a user