Skip to content

Commit f506bb8

Browse files
committed
build: setup build
1 parent ade5a78 commit f506bb8

File tree

9 files changed

+2580
-116
lines changed

9 files changed

+2580
-116
lines changed

gulpfile.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/* eslint-env node */
2+
const path = require('path');
3+
const {task, src, dest, series, parallel} = require('gulp');
4+
const rimraf = require('rimraf');
5+
const replace = require('gulp-replace');
6+
const ts = require('gulp-typescript');
7+
const babel = require('gulp-babel');
8+
const sass = require('gulp-dart-sass');
9+
10+
const BUILD_DIR = path.resolve('build');
11+
12+
task('clean', (done) => {
13+
rimraf.sync(BUILD_DIR);
14+
rimraf.sync('styles/**/*.css');
15+
done();
16+
});
17+
18+
task('ts-compile', () => {
19+
return src(['src/**/*.{ts,tsx}', '!src/**/__stories__/**/*.{ts,tsx}'])
20+
.pipe(replace(/import '.+\.scss';/g, (match) => match.replace('.scss', '.css')))
21+
.pipe(
22+
babel({
23+
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
24+
}),
25+
)
26+
.pipe(dest(path.resolve(BUILD_DIR)));
27+
});
28+
29+
task('ts-declaration', () => {
30+
const tsProject = ts.createProject('tsconfig.json', {
31+
declaration: true,
32+
emitDeclarationOnly: true,
33+
isolatedModules: false,
34+
});
35+
36+
return src(['src/**/*.{ts,tsx}', '!src/**/__stories__/**/*.{ts,tsx}'])
37+
.pipe(tsProject())
38+
.pipe(dest(path.resolve(BUILD_DIR)));
39+
});
40+
41+
task('styles', () => {
42+
return src(['src/**/*.scss', '!src/**/__stories__/**/*.scss'])
43+
.pipe(sass().on('error', sass.logError))
44+
.pipe(dest(path.resolve(BUILD_DIR)));
45+
});
46+
47+
task('build', series(['clean', parallel(['ts-compile', 'ts-declaration']), 'styles']));
48+
49+
task('default', series(['build']));

0 commit comments

Comments
 (0)