Skip to content

Commit fac8e83

Browse files
committed
build: Distribute CommonJS for projects that cannot use ESM
Signed-off-by: Kenny Elshoff <[email protected]>
1 parent 865c3ed commit fac8e83

10 files changed

+109
-48
lines changed

jest.config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"preset": "ts-jest",
33
"testEnvironment": "jsdom",
44
"bail": true,
5-
"resolver": "<rootDir>/src/internal/utils/jest-ts-resolver.js",
5+
"resolver": "<rootDir>/src/internal/utils/jest-ts-resolver.cjs",
66
"collectCoverageFrom": [
77
"<rootDir>/src/**/*.ts",
88
"<rootDir>/scripts/**/*.ts",
@@ -27,7 +27,7 @@
2727
"diagnostics": false
2828
}
2929
},
30-
"reporters": [
30+
"reporters": [
3131
"default",
3232
["jest-html-reporters", {
3333
"publicPath" : "./public/progress/",

package.json

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"test:unit:watch": "jest --watch --reporters default",
1212
"build": "bash ./scripts/build.sh",
1313
"test:types": "tsc --project tsconfig.test.json",
14-
"build:ESM": "tsc --project tsconfig.json",
15-
"build:UMD": "rollup -c",
14+
"build:ESM": "tsc --project tsconfig.json --outDir dist --declaration true",
15+
"build:rollup": "rollup -c",
1616
"build:docs": "node ./scripts/buildDocs.js",
1717
"build:entryPoints": "ts-node ./scripts/createEntrypoints.ts",
1818
"build:injectPackageVersion": "ts-node ./scripts/injectPackageVersionToDistFiles.ts",
@@ -33,9 +33,12 @@
3333
"@babel/core": "^7.9.0",
3434
"@babel/preset-env": "^7.9.0",
3535
"@release-it/bumper": "^2.0.0",
36+
"@rollup/plugin-babel": "^5.3.0",
37+
"@rollup/plugin-commonjs": "^21.0.0",
3638
"@rollup/plugin-json": "^4.1.0",
3739
"@rollup/plugin-node-resolve": "^7.1.1",
3840
"@rollup/plugin-replace": "^3.0.0",
41+
"@rollup/plugin-typescript": "^8.2.5",
3942
"@types/jest": "^25.2.3",
4043
"@types/mock-fs": "^4.10.0",
4144
"@types/node": "^15.14.2",
@@ -75,10 +78,8 @@
7578
"replace-in-file": "^6.2.0",
7679
"rimraf": "^3.0.2",
7780
"rollup": "^2.57.0",
78-
"rollup-plugin-babel": "^4.4.0",
79-
"rollup-plugin-commonjs": "^10.1.0",
81+
"rollup-plugin-multi-input": "^1.3.1",
8082
"rollup-plugin-serve": "^1.0.1",
81-
"rollup-plugin-typescript": "^1.0.1",
8283
"sanitize-html": "^1.18.2",
8384
"ts-jest": "^26.0.0",
8485
"ts-node": "^8.10.2",
@@ -94,20 +95,50 @@
9495
"exports": {
9596
"./bundles/umd/package.json": "./bundles/umd/package.json",
9697
"./package.json": "./package.json",
97-
"./actions/*": "./actions/*.js",
98-
"./assets/*": "./assets/*.js",
99-
"./backwards/*": "./backwards/*.js",
100-
"./bundles/*": "./bundles/*.js",
101-
"./config/*": "./config/*.js",
102-
"./instance/*": "./instance/*.js",
103-
"./qualifiers/*": "./qualifiers/*.js",
104-
"./sdkAnalytics/*": "./sdkAnalytics/*.js",
105-
"./transformation/*": "./transformation/*.js",
106-
"./types/*": "./types/*.js",
98+
"./actions/*": {
99+
"require": "./actions/*.cjs",
100+
"import": "./actions/*.js"
101+
},
102+
"./assets/*": {
103+
"require": "./assets/*.cjs",
104+
"import": "./assets/*.js"
105+
},
106+
"./backwards/*": {
107+
"require": "./backwards/*.cjs",
108+
"import": "./backwards/*.js"
109+
},
110+
"./bundles/*": {
111+
"require": "./bundles/*.cjs",
112+
"import": "./bundles/*.js"
113+
},
114+
"./config/*": {
115+
"require": "./config/*.cjs",
116+
"import": "./config/*.js"
117+
},
118+
"./instance/*": {
119+
"require": "./instance/*.cjs",
120+
"import": "./instance/*.js"
121+
},
122+
"./qualifiers/*": {
123+
"require": "./qualifiers/*.cjs",
124+
"import": "./qualifiers/*.js"
125+
},
126+
"./sdkAnalytics/*": {
127+
"require": "./sdkAnalytics/*.cjs",
128+
"import": "./sdkAnalytics/*.js"
129+
},
130+
"./transformation/*": {
131+
"require": "./transformation/*.cjs",
132+
"import": "./transformation/*.js"
133+
},
134+
"./types/*": {
135+
"require": "./types/*.cjs",
136+
"import": "./types/*.js"
137+
},
107138
".": {
108139
"node": "./index.js",
109140
"require": "./bundles/umd/base.js",
110141
"default": "./index.js"
111142
}
112143
}
113-
}
144+
}

rollup.config.js

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,50 @@
11
import resolve from '@rollup/plugin-node-resolve';
2-
import typescript from 'rollup-plugin-typescript';
2+
import typescript from '@rollup/plugin-typescript';
33
import json from '@rollup/plugin-json';
4-
import commonjs from 'rollup-plugin-commonjs';
4+
import commonjs from '@rollup/plugin-commonjs';
55
import replace from '@rollup/plugin-replace';
6+
import multi from 'rollup-plugin-multi-input';
67
import {version} from './package.json';
78

8-
export default [{
9-
input: 'src/index.ts',
10-
output: [
11-
{
12-
file: 'dist/bundles/umd/base.js',
13-
format: 'umd',
14-
name:'CloudinaryBaseSDK'
15-
}
16-
],
17-
plugins: [
18-
json(),
19-
resolve(),
20-
replace({
21-
'PACKAGE_VERSION_INJECTED_DURING_BUILD': version
22-
}),
23-
typescript({ target: "es5"}),
24-
commonjs()
25-
]
26-
}];
9+
export default [
10+
{
11+
input: 'src/index.ts',
12+
output: [
13+
{
14+
file: 'dist/bundles/umd/base.js',
15+
format: 'umd',
16+
name: 'CloudinaryBaseSDK',
17+
},
18+
],
19+
plugins: [
20+
json(),
21+
resolve(),
22+
replace({
23+
'PACKAGE_VERSION_INJECTED_DURING_BUILD': version,
24+
}),
25+
typescript({ target: 'es5' }),
26+
commonjs(),
27+
],
28+
},
29+
{
30+
input: 'src/**/*.ts',
31+
output: {
32+
format: 'cjs',
33+
dir: 'dist',
34+
entryFileNames: '[name].cjs',
35+
chunkFileNames: '[name]-[hash].cjs',
36+
exports: 'auto',
37+
},
38+
plugins: [
39+
multi(),
40+
json(),
41+
resolve(),
42+
replace({
43+
'PACKAGE_VERSION_INJECTED_DURING_BUILD': version,
44+
}),
45+
typescript({ target: "es5" }),
46+
commonjs()
47+
]
48+
}
49+
];
2750

rollup.dev.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import resolve from '@rollup/plugin-node-resolve';
2-
import babel from 'rollup-plugin-babel';
2+
import babel from '@rollup/plugin-babel';
33
import serve from 'rollup-plugin-serve';
4-
import typescript from "rollup-plugin-typescript";
4+
import typescript from "@rollup/plugin-typescript";
55
import json from '@rollup/plugin-json';
66
import replace from '@rollup/plugin-replace';
77
import {version} from './package.json';

scripts/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ set -e;
33
rimraf ./dist
44
npm run lint
55
npm run build:ESM
6-
npm run build:UMD
6+
npm run build:rollup
77
npm run build:entryPoints
88
npm run build:docs
99
npm run build:injectPackageVersion

scripts/injectPackageVersionToDistFiles.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const {resolve} = require('path');
99

1010
const distFolder = resolve('./dist');
1111
const options = {
12-
files: [`${distFolder}/**/*.js`, `${distFolder}/**/*.ts`],
12+
files: [`${distFolder}/**/*.js`, `${distFolder}/**/*.cjs`, `${distFolder}/**/*.ts`],
1313
from: /PACKAGE_VERSION_INJECTED_DURING_BUILD/g,
1414
to: version
1515
};

scripts/lib/entryPointsLib.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ function copyPackageJson(fileDestination = 'dist') {
3939
projectJson.main = './bundles/umd/base.js';
4040
projectJson.browser = './index.js';
4141
projectJson.module = './index.js';
42+
projectJson.type = 'module',
4243

4344
Object.assign(projectJson, commonPackageProperties);
4445
fs.writeFileSync(`./${fileDestination}/package.json`, JSON.stringify(projectJson, null, '\t'));

scripts/updatePackageJsonExports.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,17 @@ const distSubDirectoriesArray: string[] = readdirSync(resolve('./dist'), {withFi
2727
// Sort alphabetically
2828
.sort();
2929

30-
// Convert directory string to object of {[directory/*]: directory/*.js}
31-
const distSubDirectoriesObj: Record<string, string> = distSubDirectoriesArray
32-
.reduce((obj, dir) => ({...obj, ...{[`${dir}/*`]: `${dir}/*.js`}}), {}); //
30+
// Convert directory string to object of {[./directory/*]: { require: "directory/*.mjs", import: "directory/*.js" }}
31+
const distSubDirectoriesObj: Record<
32+
string,
33+
Record<string, string>
34+
> = distSubDirectoriesArray.reduce(
35+
(obj, dir) => ({
36+
...obj,
37+
...{ [`${dir}/*`]: { require: `${dir}/*.cjs`, import: `${dir}/*.js` } },
38+
}),
39+
{}
40+
);
3341

3442
// Generate updated package json object
3543
const resultPackageJson = JSON.stringify({

tsconfig.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
{
22
"compilerOptions": {
33
"noImplicitAny": true,
4-
"outDir": "./dist",
54
"target": "ES2015",
6-
"declaration": true,
75
"module": "ES2015",
86
"moduleResolution": "node",
97
"baseUrl": "src",

0 commit comments

Comments
 (0)