Produces source maps for built files.

This commit is contained in:
Yury Delendik 2017-05-03 12:17:18 -05:00
parent c9d3c20e2c
commit 996805f953
3 changed files with 27 additions and 13 deletions

View File

@ -347,28 +347,23 @@ function traverseTree(ctx, node) {
}
function preprocessPDFJSCode(ctx, code) {
var saveComments = !!ctx.saveComments;
var format = ctx.format || {
indent: {
style: ' ',
adjustMultilineComment: saveComments,
}
};
var comments;
var parseComment = {
var parseOptions = {
locations: true,
onComments: saveComments || (comments = []),
sourceFile: ctx.sourceFile,
sourceType: 'module',
};
var codegenOptions = {
format: format,
comment: saveComments,
parse: acorn.parse,
sourceMap: ctx.sourceMap,
sourceMapWithCode: ctx.sourceMap,
};
var syntax = acorn.parse(code, parseComment);
if (saveComments) {
escodegen.attachComments(syntax, comments);
}
var syntax = acorn.parse(code, parseOptions);
traverseTree(ctx, syntax);
return escodegen.generate(syntax, codegenOptions);
}

View File

@ -17,6 +17,7 @@
'use strict';
var preprocessor2 = require('../builder/preprocessor2.js');
var path = require('path');
module.exports = function (source) {
// Options must be specified, ignoring request if not.
@ -24,7 +25,19 @@ module.exports = function (source) {
return source;
}
this.cacheable();
var ctx = this.query;
source = preprocessor2.preprocessPDFJSCode(ctx, source);
return source;
var filePath = this.resourcePath;
var context = this.options.context;
var sourcePath = path.relative(context, filePath).split(path.sep).join('/');
var ctx = Object.create(this.query);
ctx.sourceMap = true;
ctx.sourceFile = sourcePath;
var callback = this.callback;
var sourceAndMap = preprocessor2.preprocessPDFJSCode(ctx, source);
var map = sourceAndMap.map.toJSON();
// escodegen does not embed source -- setting map's sourcesContent.
map.sourcesContent = [source];
callback(null, sourceAndMap.code, map);
};

View File

@ -129,6 +129,8 @@ function createWebpackConfig(defines, output) {
BUNDLE_BUILD: versionInfo.commit
});
var licenseHeader = fs.readFileSync('./src/license_header.js').toString();
var enableSourceMaps = !bundleDefines.FIREFOX && !bundleDefines.MOZCENTRAL &&
!bundleDefines.CHROME;
return {
output: output,
@ -142,6 +144,7 @@ function createWebpackConfig(defines, output) {
'pdfjs-web': path.join(__dirname, 'web'),
}
},
devtool: enableSourceMaps ? 'source-map' : undefined,
module: {
loaders: [
{
@ -1329,8 +1332,11 @@ gulp.task('dist-repo-prepare', ['dist-pre'], function () {
.pipe(gulp.dest(DIST_DIR)),
gulp.src([
GENERIC_DIR + 'build/pdf.js',
GENERIC_DIR + 'build/pdf.js.map',
GENERIC_DIR + 'build/pdf.worker.js',
GENERIC_DIR + 'build/pdf.worker.js.map',
SINGLE_FILE_DIR + 'build/pdf.combined.js',
SINGLE_FILE_DIR + 'build/pdf.combined.js.map',
SRC_DIR + 'pdf.worker.entry.js',
]).pipe(gulp.dest(DIST_DIR + 'build/')),
gulp.src(MINIFIED_DIR + 'build/pdf.js')