Skip to content

Commit 7b29759

Browse files
feat: build with both cjs and esm as targets (#60)
1 parent 7bd1e8e commit 7b29759

File tree

2 files changed

+40
-9
lines changed

2 files changed

+40
-9
lines changed

gulpfile.js

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,27 @@ task('clean', (done) => {
1515
done();
1616
});
1717

18-
task('ts-compile', () => {
18+
function compileTs(modules = false) {
1919
return src(['src/**/*.{ts,tsx}', '!src/**/__stories__/**/*.{ts,tsx}'])
2020
.pipe(replace(/import '.+\.scss';/g, (match) => match.replace('.scss', '.css')))
2121
.pipe(
2222
babel({
23-
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
23+
presets: [
24+
['@babel/preset-env', {modules: modules ? false : 'cjs'}],
25+
'@babel/preset-react',
26+
'@babel/preset-typescript',
27+
],
2428
}),
2529
)
26-
.pipe(dest(path.resolve(BUILD_DIR)));
30+
.pipe(dest(path.resolve(BUILD_DIR, modules ? 'esm' : 'cjs')));
31+
}
32+
33+
task('ts-compile-esm', () => {
34+
return compileTs(true);
35+
});
36+
37+
task('ts-compile-cjs', () => {
38+
return compileTs();
2739
});
2840

2941
task('ts-declaration', () => {
@@ -35,19 +47,30 @@ task('ts-declaration', () => {
3547

3648
return src(['src/**/*.{ts,tsx}', '!src/**/__stories__/**/*.{ts,tsx}'])
3749
.pipe(tsProject())
38-
.pipe(dest(path.resolve(BUILD_DIR)));
50+
.pipe(dest(path.resolve(BUILD_DIR, 'esm')))
51+
.pipe(dest(path.resolve(BUILD_DIR, 'cjs')));
3952
});
4053

4154
task('i18n', () => {
42-
return src('src/**/i18n/*.json').pipe(dest(path.resolve(BUILD_DIR)));
55+
return src('src/**/i18n/*.json')
56+
.pipe(dest(path.resolve(BUILD_DIR, 'esm')))
57+
.pipe(dest(path.resolve(BUILD_DIR, 'cjs')));
4358
});
4459

4560
task('styles', () => {
4661
return src(['src/**/*.scss', '!src/**/__stories__/**/*.scss'])
4762
.pipe(sass().on('error', sass.logError))
48-
.pipe(dest(path.resolve(BUILD_DIR)));
63+
.pipe(dest(path.resolve(BUILD_DIR, 'esm')))
64+
.pipe(dest(path.resolve(BUILD_DIR, 'cjs')));
4965
});
5066

51-
task('build', series(['clean', parallel(['ts-compile', 'ts-declaration', 'i18n']), 'styles']));
67+
task(
68+
'build',
69+
series([
70+
'clean',
71+
parallel(['ts-compile-cjs', 'ts-compile-esm', 'ts-declaration', 'i18n']),
72+
'styles',
73+
]),
74+
);
5275

5376
task('default', series(['build']));

package.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@
33
"version": "3.3.1",
44
"description": "",
55
"license": "MIT",
6-
"main": "build/index.js",
7-
"types": "build/index.d.ts",
6+
"exports": {
7+
".": {
8+
"types": "./build/esm/index.d.ts",
9+
"require": "./build/cjs/index.js",
10+
"import": "./build/esm/index.js"
11+
}
12+
},
13+
"main": "./build/cjs/index.js",
14+
"module": "./build/esm/index.js",
15+
"types": "./build/esm/index.d.ts",
816
"sideEffects": [
917
"*.css",
1018
"*.scss"

0 commit comments

Comments
 (0)