Browse Source

Removing "entry-loader" dependency from webpack.

Yury Delendik 9 years ago
parent
commit
ae415f9e80
  1. 5
      examples/browserify/README.md
  2. 7
      examples/browserify/gulpfile.js
  3. 2
      examples/browserify/index.html
  4. 2
      examples/browserify/main.js
  5. 5
      examples/webpack/README.md
  6. 2
      examples/webpack/index.html
  7. 3
      examples/webpack/main.js
  8. 1
      examples/webpack/package.json
  9. 7
      examples/webpack/webpack.config.js
  10. 8
      make.js
  11. 2
      src/frameworks.js
  12. 18
      src/pdf.worker.entry.js

5
examples/browserify/README.md

@ -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

7
examples/browserify/gulpfile.js

@ -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:{

2
examples/browserify/index.html

@ -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>

2
examples/browserify/main.js

@ -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`,

5
examples/webpack/README.md

@ -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.

2
examples/webpack/index.html

@ -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>

3
examples/webpack/main.js

@ -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.

1
examples/webpack/package.json

@ -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"
} }
} }

7
examples/webpack/webpack.config.js

@ -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({

8
make.js

@ -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'

2
src/frameworks.js

@ -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

@ -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');
Loading…
Cancel
Save