Skip to content

Commit 91262d2

Browse files
committed
build(esmodule): refactor build script for esmodule
1 parent 16cb8b3 commit 91262d2

File tree

6 files changed

+342
-165
lines changed

6 files changed

+342
-165
lines changed

examples/iframe/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { IFrameTransport, listen } from 'data-transport';
22
import { Main, IFrame } from './interface';
33

4+
console.log('IFrameTransport', IFrameTransport);
5+
46
class MainTransport
57
extends IFrameTransport.Main<{ emit: Main }>
68
implements IFrame

lib/index.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

package.json

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
{
22
"name": "data-transport",
3-
"version": "4.5.3",
3+
"version": "5.0.0",
44
"description": "A simple and responsive transport",
5-
"main": "lib/index.js",
6-
"unpkg": "dist/index.umd.js",
5+
"main": "dist/index.js",
6+
"module": "dist/index.esm.js",
7+
"umd:main": "dist/index.umd.production.min.js",
8+
"unpkg": "dist/index.umd.production.min.js",
9+
"jsdelivr": "dist/index.umd.production.min.js",
10+
"jsnext:main": "dist/index.esm.js",
11+
"react-native": "dist/index.esm.js",
12+
"source": "src/index.ts",
713
"types": "dist/index.d.ts",
14+
"exports": {
15+
".": {
16+
"import": "./dist/index.esm.mjs",
17+
"require": "./dist/index.js",
18+
"types": "./dist/index.d.ts"
19+
},
20+
"./*": "./*"
21+
},
22+
"files": [
23+
"dist",
24+
"src"
25+
],
826
"scripts": {
927
"test": "jest",
1028
"clean": "rimraf dist",
1129
"prettier": "prettier src --write",
12-
"build": "yarn clean && tsc --skipLibCheck && yarn build:prod && yarn build:dev",
13-
"build:prod": "NODE_ENV=production rollup --config",
14-
"build:dev": "NODE_ENV=development rollup --config",
30+
"build": "yarn clean && tsc --skipLibCheck && rollup --config --bundleConfigAsCjs",
1531
"commit": "yarn git-cz"
1632
},
1733
"repository": {
@@ -38,10 +54,11 @@
3854
"Electron"
3955
],
4056
"devDependencies": {
41-
"@rollup/plugin-commonjs": "^15.0.0",
42-
"@rollup/plugin-node-resolve": "^9.0.0",
43-
"@rollup/plugin-replace": "^2.3.3",
57+
"@rollup/plugin-commonjs": "^28.0.3",
58+
"@rollup/plugin-node-resolve": "^16.0.1",
59+
"@rollup/plugin-replace": "^6.0.2",
4460
"@rollup/plugin-terser": "^0.4.4",
61+
"@rollup/plugin-typescript": "^12.1.2",
4562
"@types/chrome": "^0.0.193",
4663
"@types/firefox-webext-browser": "^94.0.1",
4764
"@types/jest": "^27.4.0",
@@ -61,7 +78,7 @@
6178
"jest-environment-jsdom": "^29.5.0",
6279
"prettier": "^2.8.5",
6380
"rimraf": "^3.0.2",
64-
"rollup": "^2.26.5",
81+
"rollup": "^4.39.0",
6582
"ts-jest": "^29.1.0",
6683
"ts-node": "^10.9.2",
6784
"tslib": "^2.8.1",

rollup.config.js

Lines changed: 95 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,102 @@
1+
import fs from 'fs';
12
import resolve from '@rollup/plugin-node-resolve';
23
import commonjs from '@rollup/plugin-commonjs';
34
import replace from '@rollup/plugin-replace';
45
import terser from '@rollup/plugin-terser';
5-
import pkg from './package.json';
6+
import typescript from '@rollup/plugin-typescript';
67

7-
const isProduction = process.env.NODE_ENV === 'production';
8-
const input = './dist/index.js';
8+
import pkg from './package.json' with { type: 'json' };
99

10-
export default isProduction
11-
? {
12-
input,
13-
output: [
14-
{
15-
format: 'cjs',
16-
exports: 'auto',
17-
file: 'dist/index.cjs.js',
18-
sourcemap: true,
19-
},
20-
{
21-
format: 'umd',
22-
name: pkg.name
23-
.split('-')
24-
.map(([s, ...rest]) => [s.toUpperCase(), ...rest].join(''))
25-
.join(''),
26-
file: pkg.unpkg,
27-
sourcemap: true,
28-
},
29-
],
30-
plugins: [
31-
resolve({
32-
browser: true,
33-
}),
34-
commonjs(),
35-
replace({
36-
__DEV__: 'false',
37-
}),
38-
terser(),
39-
],
40-
}
41-
: {
42-
input,
43-
output: [
44-
{
45-
format: 'cjs',
46-
exports: 'auto',
47-
file: 'dist/index.cjs.development.js',
48-
sourcemap: true,
10+
export default [
11+
{
12+
input: 'src/index.ts',
13+
output: [
14+
{
15+
format: 'cjs',
16+
file: 'dist/index.cjs.production.min.js',
17+
sourcemap: true,
18+
plugins: [terser()],
19+
},
20+
{
21+
format: 'umd',
22+
name: pkg.name
23+
.split('-')
24+
.map(([s, ...rest]) => [s.toUpperCase(), ...rest].join(''))
25+
.join(''),
26+
file: pkg.unpkg,
27+
sourcemap: true,
28+
plugins: [terser()],
29+
},
30+
],
31+
plugins: [
32+
resolve(),
33+
commonjs(),
34+
typescript({
35+
declaration: true,
36+
declarationDir: 'dist',
37+
}),
38+
replace({
39+
__DEV__: 'false',
40+
preventAssignment: true,
41+
}),
42+
],
43+
},
44+
{
45+
input: 'src/index.ts',
46+
output: [
47+
{
48+
format: 'cjs',
49+
file: 'dist/index.cjs.development.js',
50+
sourcemap: true,
51+
},
52+
{
53+
format: 'es',
54+
file: 'dist/index.esm.js',
55+
sourcemap: true,
56+
},
57+
{
58+
format: 'es',
59+
file: 'dist/index.esm.mjs',
60+
sourcemap: true,
61+
},
62+
{
63+
format: 'umd',
64+
name: pkg.name
65+
.split('-')
66+
.map(([s, ...rest]) => [s.toUpperCase(), ...rest].join(''))
67+
.join(''),
68+
file: pkg.unpkg.replace('.production.min.js', '.development.js'),
69+
sourcemap: true,
70+
},
71+
],
72+
plugins: [
73+
resolve(),
74+
commonjs(),
75+
typescript({
76+
declaration: true,
77+
declarationDir: 'dist',
78+
}),
79+
replace({
80+
__DEV__: 'true',
81+
preventAssignment: true,
82+
}),
83+
{
84+
name: 'create-cjs-index',
85+
buildEnd: () => {
86+
fs.writeFileSync(
87+
'dist/index.js',
88+
`
89+
'use strict'
90+
91+
if (process.env.NODE_ENV === 'production') {
92+
module.exports = require('./index.cjs.production.min.js')
93+
} else {
94+
module.exports = require('./index.cjs.development.js')
95+
}
96+
`
97+
);
4998
},
50-
],
51-
plugins: [
52-
resolve({
53-
browser: true,
54-
}),
55-
commonjs(),
56-
replace({
57-
__DEV__: 'true',
58-
}),
59-
],
60-
};
99+
},
100+
],
101+
},
102+
];

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/* Basic Options */
44
// "incremental": true, /* Enable incremental compilation */
55
"target": "ES5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
6-
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
6+
"module": "esnext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
77
"lib": [
88
"ES2019",
99
"WebWorker",
@@ -43,7 +43,7 @@
4343
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
4444

4545
/* Module Resolution Options */
46-
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
46+
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
4747
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
4848
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
4949
"rootDirs": [

0 commit comments

Comments
 (0)