mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
Replace the webpack+acorn transform with a Babel plugin
This commit converts the pdfjsdev-loader transform into a Babel plugin, to skip a AST->string->AST round-trip. Before this commit, the webpack build process was: 1. Babel parses the code 2. Babel transforms the AST 3. Babel generates the code 4. Acorn parses the code 5. pdfjsdev-loader transforms the AST 6. @javascript-obfuscator/escodegen generates the code 7. Webpack parses the file 8. Webpack concatenates the files After this commit, it is reduced to: 1. Babel parses the code 2. Babel transforms the AST 3. babel-plugin-pdfjs-preprocessor transforms the AST 4. Babel generates the code 5. Webpack parses the file 6. Webpack concatenates the files This change improves the build time by ~25% (tested on MacBook Air M2): - `gulp lib`: 3.4s to 2.6s - `gulp dist`: 36s to 29s - `gulp generic`: 5.5s to 4.0s - `gulp mozcentral`: 4.7s to 3.2s The new Babel plugin doesn't support the `saveComments` option of pdfjsdev-loader, and it just always discards comments. Even though pdfjsdev-loader supported multiple values for that option, it was effectively ignored due to `acorn` dropping comments by default.
This commit is contained in:
parent
f5bb9bc21b
commit
f724ae98a1
16 changed files with 287 additions and 479 deletions
|
@ -1,13 +1,21 @@
|
|||
function f1() {
|
||||
}
|
||||
function f1() {}
|
||||
function f2() {
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
function f3() {
|
||||
var i = 0;
|
||||
throw "test";
|
||||
var i = 0;
|
||||
throw "test";
|
||||
}
|
||||
function f4() {
|
||||
var i = 0;
|
||||
var i = 0;
|
||||
}
|
||||
|
||||
var obj = {
|
||||
method1() {},
|
||||
method2() {}
|
||||
};
|
||||
class C {
|
||||
method1() {}
|
||||
method2() {}
|
||||
}
|
||||
var arrow1 = () => {};
|
||||
var arrow2 = () => {};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue