[gulpfile] Move common functionality, in buildLib
and buildDefaultPreferences
, to a helper function
Currently there's a lot of duplication in the `buildLib` and `buildDefaultPreferences` functions, which seem quite unfortunate. Hence this patch extracts the common functionality in a new `buildLibHelper` function instead.
This commit is contained in:
parent
56e1d7746a
commit
b48dc06148
84
gulpfile.js
84
gulpfile.js
@ -669,49 +669,17 @@ function buildDefaultPreferences(defines, dir) {
|
|||||||
TESTING: defines.TESTING || process.env.TESTING === "true",
|
TESTING: defines.TESTING || process.env.TESTING === "true",
|
||||||
});
|
});
|
||||||
|
|
||||||
// Refer to the comment in the 'lib' task below.
|
const inputStream = merge([
|
||||||
function babelPluginReplaceNonWebPackRequire(babel) {
|
|
||||||
return {
|
|
||||||
visitor: {
|
|
||||||
Identifier(curPath, state) {
|
|
||||||
if (curPath.node.name === "__non_webpack_require__") {
|
|
||||||
curPath.replaceWith(babel.types.identifier("require"));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
function preprocess(content) {
|
|
||||||
const skipBabel =
|
|
||||||
bundleDefines.SKIP_BABEL || /\/\*\s*no-babel-preset\s*\*\//.test(content);
|
|
||||||
content = preprocessor2.preprocessPDFJSCode(ctx, content);
|
|
||||||
return babel.transform(content, {
|
|
||||||
sourceType: "module",
|
|
||||||
presets: skipBabel ? undefined : ["@babel/preset-env"],
|
|
||||||
plugins: [
|
|
||||||
"@babel/plugin-proposal-logical-assignment-operators",
|
|
||||||
"@babel/plugin-transform-modules-commonjs",
|
|
||||||
babelPluginReplaceNonWebPackRequire,
|
|
||||||
],
|
|
||||||
}).code;
|
|
||||||
}
|
|
||||||
const babel = require("@babel/core");
|
|
||||||
const ctx = {
|
|
||||||
rootPath: __dirname,
|
|
||||||
saveComments: false,
|
|
||||||
defines: bundleDefines,
|
|
||||||
map: {
|
|
||||||
"pdfjs-lib": "../pdf",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const preprocessor2 = require("./external/builder/preprocessor2.js");
|
|
||||||
return merge([
|
|
||||||
gulp.src(["web/{app_options,viewer_compatibility}.js"], {
|
gulp.src(["web/{app_options,viewer_compatibility}.js"], {
|
||||||
base: ".",
|
base: ".",
|
||||||
}),
|
}),
|
||||||
])
|
]);
|
||||||
.pipe(transform("utf8", preprocess))
|
|
||||||
.pipe(gulp.dest(DEFAULT_PREFERENCES_DIR + dir));
|
return buildLibHelper(
|
||||||
|
bundleDefines,
|
||||||
|
inputStream,
|
||||||
|
DEFAULT_PREFERENCES_DIR + dir
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDefaultPreferences(dir) {
|
function getDefaultPreferences(dir) {
|
||||||
@ -1417,7 +1385,7 @@ gulp.task("types", function (done) {
|
|||||||
exec(`"node_modules/.bin/tsc" --${args} src/pdf.js`, done);
|
exec(`"node_modules/.bin/tsc" --${args} src/pdf.js`, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
function buildLib(defines, dir) {
|
function buildLibHelper(bundleDefines, inputStream, outputDir) {
|
||||||
// When we create a bundle, webpack is run on the source and it will replace
|
// When we create a bundle, webpack is run on the source and it will replace
|
||||||
// require with __webpack_require__. When we want to use the real require,
|
// require with __webpack_require__. When we want to use the real require,
|
||||||
// __non_webpack_require__ has to be used.
|
// __non_webpack_require__ has to be used.
|
||||||
@ -1461,15 +1429,6 @@ function buildLib(defines, dir) {
|
|||||||
return licenseHeaderLibre + content;
|
return licenseHeaderLibre + content;
|
||||||
}
|
}
|
||||||
const babel = require("@babel/core");
|
const babel = require("@babel/core");
|
||||||
const versionInfo = getVersionJSON();
|
|
||||||
const bundleDefines = builder.merge(defines, {
|
|
||||||
BUNDLE_VERSION: versionInfo.version,
|
|
||||||
BUNDLE_BUILD: versionInfo.commit,
|
|
||||||
TESTING: defines.TESTING || process.env.TESTING === "true",
|
|
||||||
DEFAULT_PREFERENCES: getDefaultPreferences(
|
|
||||||
defines.SKIP_BABEL ? "lib/" : "lib-legacy/"
|
|
||||||
),
|
|
||||||
});
|
|
||||||
const ctx = {
|
const ctx = {
|
||||||
rootPath: __dirname,
|
rootPath: __dirname,
|
||||||
saveComments: false,
|
saveComments: false,
|
||||||
@ -1482,7 +1441,24 @@ function buildLib(defines, dir) {
|
|||||||
.readFileSync("./src/license_header_libre.js")
|
.readFileSync("./src/license_header_libre.js")
|
||||||
.toString();
|
.toString();
|
||||||
const preprocessor2 = require("./external/builder/preprocessor2.js");
|
const preprocessor2 = require("./external/builder/preprocessor2.js");
|
||||||
return merge([
|
return inputStream
|
||||||
|
.pipe(transform("utf8", preprocess))
|
||||||
|
.pipe(gulp.dest(outputDir));
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildLib(defines, dir) {
|
||||||
|
const versionInfo = getVersionJSON();
|
||||||
|
|
||||||
|
const bundleDefines = builder.merge(defines, {
|
||||||
|
BUNDLE_VERSION: versionInfo.version,
|
||||||
|
BUNDLE_BUILD: versionInfo.commit,
|
||||||
|
TESTING: defines.TESTING || process.env.TESTING === "true",
|
||||||
|
DEFAULT_PREFERENCES: getDefaultPreferences(
|
||||||
|
defines.SKIP_BABEL ? "lib/" : "lib-legacy/"
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
const inputStream = merge([
|
||||||
gulp.src(
|
gulp.src(
|
||||||
[
|
[
|
||||||
"src/{core,display,shared}/**/*.js",
|
"src/{core,display,shared}/**/*.js",
|
||||||
@ -1496,9 +1472,9 @@ function buildLib(defines, dir) {
|
|||||||
{ base: "." }
|
{ base: "." }
|
||||||
),
|
),
|
||||||
gulp.src("test/unit/*.js", { base: "." }),
|
gulp.src("test/unit/*.js", { base: "." }),
|
||||||
])
|
]);
|
||||||
.pipe(transform("utf8", preprocess))
|
|
||||||
.pipe(gulp.dest(dir));
|
return buildLibHelper(bundleDefines, inputStream, dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task(
|
gulp.task(
|
||||||
|
Loading…
Reference in New Issue
Block a user