generated from dellevin/template
103 lines
2.7 KiB
JavaScript
103 lines
2.7 KiB
JavaScript
const path = require('path');
|
|
|
|
module.exports = {
|
|
entry: {
|
|
bundle: ['core-js/stable', './src/book.js'],
|
|
'pdf-legacy': './src/vendor/pdfjs/pdf.js',
|
|
'pdf-legacy.worker': './src/vendor/pdfjs/pdf.worker.js'
|
|
},
|
|
output: {
|
|
filename: '[name].js',
|
|
path: path.resolve(__dirname, 'dist'),
|
|
// Use compatible module format for legacy browsers
|
|
library: {
|
|
name: 'FoliateJS',
|
|
type: 'umd',
|
|
export: 'default'
|
|
},
|
|
globalObject: '(typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : this)'
|
|
},
|
|
mode: 'production',
|
|
target: ['web', 'es5'], // Target ES5 for legacy browser compatibility
|
|
optimization: {
|
|
splitChunks: false,
|
|
runtimeChunk: false,
|
|
minimize: true
|
|
},
|
|
performance: {
|
|
hints: false
|
|
},
|
|
experiments: {
|
|
outputModule: false
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
// Use legacy PDF.js build
|
|
'pdfjs-dist': path.resolve(__dirname, 'src/vendor/pdfjs/pdf-legacy.js')
|
|
},
|
|
fallback: {
|
|
// Disable Node.js polyfills for browser build
|
|
"fs": false,
|
|
"zlib": false,
|
|
"http": false,
|
|
"https": false,
|
|
"url": false,
|
|
"canvas": false,
|
|
"util": false,
|
|
"stream": false,
|
|
"buffer": false,
|
|
"crypto": false,
|
|
"os": false,
|
|
"path": false
|
|
}
|
|
},
|
|
module: {
|
|
parser: {
|
|
javascript: {
|
|
dynamicImportMode: 'eager'
|
|
}
|
|
},
|
|
rules: [
|
|
{
|
|
test: /\.js$/,
|
|
exclude: [
|
|
/node_modules/,
|
|
/src\/vendor\/pdfjs\/pdf\.js$/, // Exclude large PDF.js file from Babel processing
|
|
/src\/vendor\/pdfjs\/pdf\.worker\.js$/
|
|
],
|
|
use: {
|
|
loader: 'babel-loader',
|
|
options: {
|
|
presets: [
|
|
['@babel/preset-env', {
|
|
targets: {
|
|
// Target much older browser versions including Chrome 40
|
|
chrome: '40',
|
|
safari: '9',
|
|
ios: '9',
|
|
android: '4.4',
|
|
},
|
|
useBuiltIns: 'entry',
|
|
corejs: 3,
|
|
modules: 'auto'
|
|
}]
|
|
],
|
|
plugins: [
|
|
['@babel/plugin-transform-runtime', {
|
|
regenerator: true,
|
|
corejs: false,
|
|
helpers: true,
|
|
useESModules: false
|
|
}],
|
|
'@babel/plugin-transform-class-properties',
|
|
'@babel/plugin-transform-private-methods',
|
|
'@babel/plugin-transform-nullish-coalescing-operator',
|
|
'@babel/plugin-transform-optional-chaining'
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
};
|