1
1
/* eslint-env node */
2
2
const path = require ( 'path' ) ;
3
3
4
+ const utils = require ( '@gravity-ui/gulp-utils' ) ;
4
5
const { task, src, dest, series, parallel} = require ( 'gulp' ) ;
5
- const replace = require ( 'gulp-replace' ) ;
6
6
const sass = require ( 'gulp-sass' ) ( require ( 'sass' ) ) ;
7
- const ts = require ( 'gulp-typescript ' ) ;
7
+ const sourcemaps = require ( 'gulp-sourcemaps ' ) ;
8
8
const { rimrafSync} = require ( 'rimraf' ) ;
9
9
10
10
const BUILD_DIR = path . resolve ( 'build' ) ;
@@ -15,27 +15,50 @@ task('clean', (done) => {
15
15
done ( ) ;
16
16
} ) ;
17
17
18
- function compileTs ( modules = false ) {
19
- const tsProject = ts . createProject ( 'tsconfig.json' , {
20
- declaration : true ,
21
- module : modules ? 'esnext' : 'nodenext' ,
22
- moduleResolution : modules ? 'bundler' : 'nodenext' ,
23
- ...( modules ? undefined : { verbatimModuleSyntax : false } ) ,
18
+ async function compileTs ( modules = false ) {
19
+ const tsProject = await utils . createTypescriptProject ( {
20
+ compilerOptions : {
21
+ declaration : true ,
22
+ module : modules ? 'esnext' : 'nodenext' ,
23
+ moduleResolution : modules ? 'bundler' : 'nodenext' ,
24
+ ...( modules ? undefined : { verbatimModuleSyntax : false } ) ,
25
+ } ,
24
26
} ) ;
25
27
26
- return src ( [
27
- 'src/**/*.{ts,tsx}' ,
28
- '!src/demo/**/*' ,
29
- '!src/stories/**/*' ,
30
- '!src/**/__stories__/**/*' ,
31
- '!src/**/__tests__/**/*' ,
32
- '!src/**/__mocks__/**/*' ,
33
- '!src/**/*.test.{ts,tsx}' ,
34
- '!src/**/__snapshots__/**/*' ,
35
- ] )
36
- . pipe ( replace ( / ( i m p o r t .+ ) \. s c s s / g, '$1.css' ) )
37
- . pipe ( tsProject ( ) )
38
- . pipe ( dest ( path . resolve ( BUILD_DIR , modules ? 'esm' : 'cjs' ) ) ) ;
28
+ const transformers = [
29
+ tsProject . customTransformers . transformScssImports ,
30
+ tsProject . customTransformers . transformLocalModules ,
31
+ ] ;
32
+ return new Promise ( ( resolve ) => {
33
+ src ( [
34
+ 'src/**/*.{ts,tsx}' ,
35
+ '!src/demo/**/*' ,
36
+ '!src/stories/**/*' ,
37
+ '!src/**/__stories__/**/*' ,
38
+ '!src/**/__tests__/**/*' ,
39
+ '!src/**/__mocks__/**/*' ,
40
+ '!src/**/*.test.{ts,tsx}' ,
41
+ '!src/**/__snapshots__/**/*' ,
42
+ ] )
43
+ . pipe ( sourcemaps . init ( ) )
44
+ . pipe (
45
+ tsProject ( {
46
+ customTransformers : {
47
+ before : transformers ,
48
+ afterDeclarations : transformers ,
49
+ } ,
50
+ } ) ,
51
+ )
52
+ . pipe ( sourcemaps . write ( '.' , { includeContent : true , sourceRoot : '../../src' } ) )
53
+ . pipe (
54
+ utils . addVirtualFile ( {
55
+ fileName : 'package.json' ,
56
+ text : JSON . stringify ( { type : modules ? 'module' : 'commonjs' } ) ,
57
+ } ) ,
58
+ )
59
+ . pipe ( dest ( path . resolve ( BUILD_DIR , modules ? 'esm' : 'cjs' ) ) )
60
+ . on ( 'end' , resolve ) ;
61
+ } ) ;
39
62
}
40
63
41
64
task ( 'compile-to-esm' , ( ) => {
0 commit comments