From 0b9de5ec63e59223954217f8d3c4dc0a87985d07 Mon Sep 17 00:00:00 2001 From: Erik Koopmans Date: Wed, 1 Sep 2021 23:07:23 -0400 Subject: [PATCH] Fix built assets to work when imported/required (#470) * Fix externalsType for UMD to support non-browser * Fix ambiguous imports to support module build * Remove ES and CJS builds, keeping just UMD --- package.json | 4 +--- src/plugin/jspdf-plugin.js | 2 +- src/worker.js | 4 ++-- webpack.config.js | 33 ++++++++------------------------- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index f30f7d6..3f5b839 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,7 @@ "name": "html2pdf.js", "version": "0.10.0", "description": "Client-side HTML-to-PDF rendering using pure JS", - "main": "dist/require/html2pdf.cjs.js", - "module": "dist/include/html2pdf.es.js", - "browser": "dist/html2pdf.js", + "main": "dist/html2pdf.js", "files": [ "/src", "/dist" diff --git a/src/plugin/jspdf-plugin.js b/src/plugin/jspdf-plugin.js index b7c369a..8ddb83d 100644 --- a/src/plugin/jspdf-plugin.js +++ b/src/plugin/jspdf-plugin.js @@ -1,5 +1,5 @@ // Import dependencies. -import jsPDF from 'jspdf'; +import { jsPDF } from 'jspdf'; // Get dimensions of a PDF page, as determined by jsPDF. jsPDF.getPageSize = function(orientation, unit, format) { diff --git a/src/worker.js b/src/worker.js index ed45ac5..336d7b3 100644 --- a/src/worker.js +++ b/src/worker.js @@ -1,5 +1,5 @@ -import jsPDF from 'jspdf'; -import html2canvas from 'html2canvas'; +import { jsPDF } from 'jspdf'; +import * as html2canvas from 'html2canvas'; import { objType, createElement, cloneNode, toPx } from './utils.js'; import es6promise from 'es6-promise'; var Promise = es6promise.Promise; diff --git a/webpack.config.js b/webpack.config.js index 3999d97..546ed35 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,6 +3,7 @@ const webpack = require('webpack'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const pkg = require('./package.json'); +const externals = [ 'jspdf', 'html2canvas' ]; const banner = `${pkg.name} v${pkg.version} Copyright (c) ${(new Date).getFullYear()} Erik Koopmans Released under the ${pkg.license} License.`; @@ -13,7 +14,7 @@ module.exports = env => { const watch = isDev; const useAnalyzer = env.analyzer; - const makeBrowserConfig = (filename, { bundle, min } = {}) => ({ + const makeUMDConfig = (filename, { bundle, min } = {}) => ({ output: { filename, library: { @@ -24,8 +25,8 @@ module.exports = env => { } }, target: 'browserslist', - externals: bundle ? [] : ['jspdf', 'html2canvas'], - externalsType: 'global', + externals: bundle ? [] : externals, + externalsType: 'umd', optimization: { minimize: min }, devtool: min ? 'source-map' : false, bundleAnalyzer: { @@ -35,30 +36,12 @@ module.exports = env => { }, }); - const makeNodeConfig = (filename, { libraryTarget, target, externalsType, ...config }) => ({ - output: { - filename, - libraryTarget, - }, - target, - externals: ['jspdf', 'html2canvas'], - externalsType, - babelOptions: { - presets: ['@babel/preset-env'], - targets: { node: "current" }, - }, - ...config, - }); - - const builds = { - browser: makeBrowserConfig('html2pdf.js'), - browserBundle: makeBrowserConfig('html2pdf.bundle.js', { bundle: true }), - node: makeNodeConfig('require/html2pdf.cjs.js', { libraryTarget: 'commonjs2', target: 'node', externalsType: 'commonjs' }), - es: makeNodeConfig('include/html2pdf.es.js', { libraryTarget: 'module', target: 'es6', externalsType: 'module', experiments: { outputModule: true } }), + umd: makeUMDConfig('html2pdf.js'), + umdBundle: makeUMDConfig('html2pdf.bundle.js', { bundle: true }), ...(isDev ? {} : { - browserMin: makeBrowserConfig('html2pdf.min.js', { min: true }), - browserBundleMin: makeBrowserConfig('html2pdf.bundle.min.js', { bundle: true, min: true }), + umdMin: makeUMDConfig('html2pdf.min.js', { min: true }), + umdBundleMin: makeUMDConfig('html2pdf.bundle.min.js', { bundle: true, min: true }), }), };