Removing "entry-loader" dependency from webpack.

This commit is contained in:
Yury Delendik 2016-04-13 08:24:25 -05:00
parent 127e6d7343
commit ae415f9e80
12 changed files with 45 additions and 17 deletions

View File

@ -16,10 +16,11 @@ http://localhost:8888/examples/browserify/index.html
See main.js, worker.js and gulpfile.js files. Please notice that PDF.js See main.js, worker.js and gulpfile.js files. Please notice that PDF.js
packaging requires packaging of the main application and PDF.js worker code, packaging requires packaging of the main application and PDF.js worker code,
and the `workerSrc` path shall be set to the latter file. and the `workerSrc` path shall be set to the latter file. The pdf.worker.js file
shall be excluded from the main bundle.
Alternatives to the gulp commands (without compression) are: Alternatives to the gulp commands (without compression) are:
$ mkdir -p ../../build/browserify $ mkdir -p ../../build/browserify
$ node_modules/.bin/browserify main.js -o ../../build/browserify/bundle.js $ node_modules/.bin/browserify main.js -u ./node_modules/pdfjs-dist/build/pdf.worker.js -o ../../build/browserify/main.bundle.js
$ node_modules/.bin/browserify worker.js -o ../../build/browserify/pdf.worker.bundle.js $ node_modules/.bin/browserify worker.js -o ../../build/browserify/pdf.worker.bundle.js

View File

@ -10,15 +10,18 @@ var TMP_FILE_PREFIX = '../../build/browserify_';
gulp.task('build-bundle', function() { gulp.task('build-bundle', function() {
return browserify('main.js', {output: TMP_FILE_PREFIX + 'main.tmp'}) return browserify('main.js', {output: TMP_FILE_PREFIX + 'main.tmp'})
.ignore(require.resolve('pdfjs-dist/build/pdf.worker')) // Reducing size
.bundle() .bundle()
.pipe(source(TMP_FILE_PREFIX + 'main.tmp')) .pipe(source(TMP_FILE_PREFIX + 'main.tmp'))
.pipe(streamify(uglify())) .pipe(streamify(uglify()))
.pipe(rename('bundle.js')) .pipe(rename('main.bundle.js'))
.pipe(gulp.dest(OUTPUT_PATH)); .pipe(gulp.dest(OUTPUT_PATH));
}); });
gulp.task('build-worker', function() { gulp.task('build-worker', function() {
return browserify('worker.js', {output: TMP_FILE_PREFIX + 'worker.tmp'}) // We can create our own viewer (see worker.js) or use already defined one.
var workerSrc = require.resolve('pdfjs-dist/build/pdf.worker.entry');
return browserify(workerSrc, {output: TMP_FILE_PREFIX + 'worker.tmp'})
.bundle() .bundle()
.pipe(source(TMP_FILE_PREFIX + 'worker.tmp')) .pipe(source(TMP_FILE_PREFIX + 'worker.tmp'))
.pipe(streamify(uglify({compress:{ .pipe(streamify(uglify({compress:{

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>browserify example</title> <title>browserify example</title>
<script src="../../build/browserify/bundle.js"></script> <script src="../../build/browserify/main.bundle.js"></script>
</head> </head>
<body> <body>
<canvas id="theCanvas"></canvas> <canvas id="theCanvas"></canvas>

View File

@ -7,7 +7,7 @@ require('pdfjs-dist');
var pdfPath = '../helloworld/helloworld.pdf'; var pdfPath = '../helloworld/helloworld.pdf';
// Setting worker path to worker bundle // Setting worker path to worker bundle.
PDFJS.workerSrc = '../../build/browserify/pdf.worker.bundle.js'; PDFJS.workerSrc = '../../build/browserify/pdf.worker.bundle.js';
// It is also possible to disable workers via `PDFJS.disableWorker = true`, // It is also possible to disable workers via `PDFJS.disableWorker = true`,

View File

@ -14,5 +14,6 @@ To build Webpack bundles, run `node_modules/.bin/webpack`. If you are running
a web server, you can observe the build results at a web server, you can observe the build results at
http://localhost:8888/examples/webpack/index.html http://localhost:8888/examples/webpack/index.html
See main.js and webpack.config.js files. Please notice that PDF.js packaging See main.js and webpack.config.js files. Please notice that PDF.js
requires the `entry` loader. packaging requires packaging of the main application and PDF.js worker code,
and the `workerSrc` path shall be set to the latter file.

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>webpack example</title> <title>webpack example</title>
<script src="../../build/webpack/bundle.js"></script> <script src="../../build/webpack/main.bundle.js"></script>
</head> </head>
<body> <body>
<canvas id="theCanvas"></canvas> <canvas id="theCanvas"></canvas>

View File

@ -7,6 +7,9 @@ var pdfjsLib = require('pdfjs-dist');
var pdfPath = '../helloworld/helloworld.pdf'; var pdfPath = '../helloworld/helloworld.pdf';
// Setting worker path to worker bundle.
pdfjsLib.PDFJS.workerSrc = '../../build/webpack/pdf.worker.bundle.js';
// It is also possible to disable workers via `PDFJS.disableWorker = true`, // It is also possible to disable workers via `PDFJS.disableWorker = true`,
// however that might degrade the UI performance in web browsers. // however that might degrade the UI performance in web browsers.

View File

@ -3,7 +3,6 @@
"version": "0.1.0", "version": "0.1.0",
"devDependencies": { "devDependencies": {
"webpack": "~1.12.9", "webpack": "~1.12.9",
"entry-loader": "~0.1.0",
"pdfjs-dist": "../../build/dist" "pdfjs-dist": "../../build/dist"
} }
} }

View File

@ -3,11 +3,14 @@ var path = require('path');
module.exports = { module.exports = {
context: __dirname, context: __dirname,
entry: './main.js', entry: {
'main': './main.js',
'pdf.worker': 'pdfjs-dist/build/pdf.worker.entry'
},
output: { output: {
path: path.join(__dirname, '../../build/webpack'), path: path.join(__dirname, '../../build/webpack'),
publicPath: '../../build/webpack/', publicPath: '../../build/webpack/',
filename: 'bundle.js' filename: '[name].bundle.js'
}, },
plugins: [ plugins: [
new webpack.optimize.UglifyJsPlugin({ new webpack.optimize.UglifyJsPlugin({

View File

@ -308,6 +308,7 @@ target.dist = function() {
GENERIC_DIR + 'build/pdf.js', GENERIC_DIR + 'build/pdf.js',
GENERIC_DIR + 'build/pdf.worker.js', GENERIC_DIR + 'build/pdf.worker.js',
SINGLE_FILE_DIR + 'build/pdf.combined.js', SINGLE_FILE_DIR + 'build/pdf.combined.js',
SRC_DIR + 'pdf.worker.entry.js',
], DIST_DIR + 'build/'); ], DIST_DIR + 'build/');
mkdir('-p', DIST_DIR + 'web/'); mkdir('-p', DIST_DIR + 'web/');
@ -333,9 +334,10 @@ target.dist = function() {
homepage: DIST_HOMEPAGE, homepage: DIST_HOMEPAGE,
bugs: DIST_BUGS_URL, bugs: DIST_BUGS_URL,
license: DIST_LICENSE, license: DIST_LICENSE,
browser: { // used by browserify and ignores following files during bundle dependencies: {
'entry?name=[hash]-worker.js!./pdf.worker.js': false, 'node-ensure': '^0.0.0' // shim for node for require.ensure
'./build/pdf.worker.js': false, },
browser: {
'node-ensure': false 'node-ensure': false
}, },
format: 'amd', // to not allow system.js to choose 'cjs' format: 'amd', // to not allow system.js to choose 'cjs'

View File

@ -29,8 +29,6 @@ if (typeof window === 'undefined') {
useRequireEnsure = true; useRequireEnsure = true;
} }
if (typeof __webpack_require__ !== 'undefined') { if (typeof __webpack_require__ !== 'undefined') {
// Webpack - get/bundle pdf.worker.js as additional file.
workerSrc = require('entry?name=[hash]-worker.js!./pdf.worker.js');
useRequireEnsure = true; useRequireEnsure = true;
} }
if (typeof requirejs !== 'undefined' && requirejs.toUrl) { if (typeof requirejs !== 'undefined' && requirejs.toUrl) {

18
src/pdf.worker.entry.js Normal file
View File

@ -0,0 +1,18 @@
/* Copyright 2016 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(typeof window !== 'undefined' ? window : {}).pdfjsDistBuildPdfWorker =
require('./pdf.worker.js');