Skip to content

Commit bfe221d

Browse files
authored
"UMD" build with tsup (#1268)
* WIP * Regen lock * Remove dist scripts * Update spectacle umd script * Add back in process dep * Add changeset * minify umd output * Update local script
1 parent 71c400d commit bfe221d

File tree

7 files changed

+2435
-781
lines changed

7 files changed

+2435
-781
lines changed

Diff for: .changeset/mighty-otters-attack.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'spectacle': minor
3+
---
4+
5+
Use tsup (instead of webpack) for browser/umd build

Diff for: examples/one-page/index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<script src="https://unpkg.com/[email protected]/umd/react-dom.production.min.js"></script>
1414
<script src="https://unpkg.com/[email protected]/umd/react-is.production.min.js"></script>
1515
<script src="https://unpkg.com/[email protected]/prop-types.min.js"></script>
16-
<script src="https://unpkg.com/spectacle@^10/dist/spectacle.min.js"></script>
17-
<!-- <script src="../../packages/spectacle/dist/spectacle.min.js"></script>-->
16+
<script src="https://unpkg.com/spectacle@^10/lib/index.global.js"></script>
17+
<!-- <script src="../../packages/spectacle/lib/index.global.js"></script>-->
1818

1919
<script type="module">
2020
const {

Diff for: packages/spectacle/package.json

+3-50
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
"description": "ReactJS Powered Presentation Framework",
55
"types": "lib/index.d.ts",
66
"main": "lib/index.js",
7-
"files": [
8-
"dist/",
9-
"lib/"
10-
],
7+
"files": ["lib/"],
118
"module": "lib/index.mjs",
129
"author": "Formidable Labs <[email protected]>",
1310
"license": "MIT",
@@ -54,6 +51,7 @@
5451
"@types/styled-system": "^5.1.5",
5552
"@types/unist": "^2.0.6",
5653
"csstype": "^3.1.1",
54+
"esbuild-plugin-external-global": "^1.0.1",
5755
"process": "^0.11.10",
5856
"react": "^18.2.0",
5957
"react-dom": "^18.2.0",
@@ -63,9 +61,6 @@
6361
"build": "wireit",
6462
"build:lib": "wireit",
6563
"build:lib:watch": "wireit",
66-
"build:dist": "wireit",
67-
"build:dist:dev": "wireit",
68-
"build:dist:min": "wireit",
6964
"lint": "wireit",
7065
"lint:fix": "wireit",
7166
"prettier": "wireit",
@@ -78,10 +73,7 @@
7873
},
7974
"wireit": {
8075
"build": {
81-
"dependencies": [
82-
"build:lib",
83-
"build:dist"
84-
]
76+
"dependencies": ["build:lib"]
8577
},
8678
"build:lib": {
8779
"command": "nps tsup",
@@ -116,45 +108,6 @@
116108
"pnpm-lock.yaml"
117109
]
118110
},
119-
"build:dist": {
120-
"dependencies": [
121-
"build:dist:dev",
122-
"build:dist:min"
123-
]
124-
},
125-
"build:dist:dev": {
126-
"command": "nps \"webpack --config webpack.config.dev.js\"",
127-
"files": [
128-
"src/**",
129-
"!src/**/*.test.*",
130-
"../../.babelrc.js",
131-
"../../.babelrc.build.js",
132-
"webpack.config.js"
133-
],
134-
"output": [
135-
"dist/spectacle.js*",
136-
"!dist/spectacle.min.js*"
137-
],
138-
"packageLocks": [
139-
"pnpm-lock.yaml"
140-
]
141-
},
142-
"build:dist:min": {
143-
"command": "nps webpack",
144-
"files": [
145-
"src/**",
146-
"!src/**/*.test.*",
147-
"../../.babelrc.js",
148-
"../../.babelrc.build.js",
149-
"webpack.config.js"
150-
],
151-
"output": [
152-
"dist/spectacle.min.js*"
153-
],
154-
"packageLocks": [
155-
"pnpm-lock.yaml"
156-
]
157-
},
158111
"lint": {
159112
"command": "nps lint:pkg -- -- \"*.js\" src",
160113
"files": [

Diff for: packages/spectacle/tsup.config.ts

+24-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineConfig } from 'tsup';
2+
import externalGlobal from 'esbuild-plugin-external-global';
23

34
export default defineConfig({
45
entry: ['src/index.ts'],
@@ -7,6 +8,27 @@ export default defineConfig({
78
clean: false,
89
external: ['react', 'react-dom'],
910
dts: true,
10-
format: ['cjs', 'esm'],
11-
target: 'es6'
11+
format: ['cjs', 'esm', 'iife'],
12+
skipNodeModulesBundle: true,
13+
globalName: 'Spectacle',
14+
target: 'es6',
15+
16+
/**
17+
* Couple build options for UMD/iife build.
18+
* - externalGlobalPlugin to use window.React instead of trying to bundle it.
19+
* - for iife build, set platform to "browser" and define process.env.NODE_ENV
20+
*/
21+
esbuildPlugins: [
22+
externalGlobal.externalGlobalPlugin({
23+
react: 'window.React',
24+
'react-dom': 'window.ReactDOM'
25+
})
26+
],
27+
esbuildOptions: (options, context) => {
28+
if (context.format === 'iife') {
29+
options.minify = true;
30+
options.platform = 'browser';
31+
options.define!['process.env.NODE_ENV'] = '"production"';
32+
}
33+
}
1234
});

Diff for: packages/spectacle/webpack.config.dev.js

-10
This file was deleted.

Diff for: packages/spectacle/webpack.config.js

-10
This file was deleted.

0 commit comments

Comments
 (0)