@@ -3,50 +3,76 @@ import webpack, { Configuration } from 'webpack';
3
3
import { LoaderConfOptions } from 'kkt' ;
4
4
import lessModules from '@kkt/less-modules' ;
5
5
import rawModules from '@kkt/raw-modules' ;
6
+ import reactLibrary from '@kkt/react-library' ;
6
7
import scopePluginOptions from '@kkt/scope-plugin-options' ;
7
8
import pkg from './package.json' ;
8
9
9
10
export default ( conf : Configuration , env : 'development' | 'production' , options : LoaderConfOptions ) => {
10
- conf = rawModules ( conf , env , {
11
- ...options ,
12
- test : / \. ( t x t | m d ) $ / i,
13
- esModule : true ,
14
- } ) ;
15
- conf = scopePluginOptions ( conf , env , {
16
- ...options ,
17
- allowedFiles : [ path . resolve ( process . cwd ( ) , 'src' ) , path . resolve ( process . cwd ( ) , 'README.md' ) ] ,
18
- } ) ;
19
- conf = lessModules ( conf , env , options ) ;
20
- // Get the project version.
21
- conf . plugins ! . push (
22
- new webpack . DefinePlugin ( {
23
- VERSION : JSON . stringify ( pkg . version ) ,
24
- } ) ,
25
- ) ;
26
- if ( env === 'production' ) {
27
- conf . optimization = {
28
- ...conf . optimization ,
29
- splitChunks : {
30
- cacheGroups : {
31
- reactvendor : {
32
- test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( r e a c t | r e a c t - d o m ) [ \\ / ] / ,
33
- name : 'react-vendor' ,
34
- chunks : 'all' ,
35
- } ,
36
- refractor : {
37
- test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( r e f r a c t o r ) [ \\ / ] / ,
38
- name : 'refractor-vendor' ,
39
- chunks : 'all' ,
40
- } ,
41
- codemirror : {
42
- test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( @ c o d e m i r r o r ) [ \\ / ] / ,
43
- name : 'codemirror-vendor' ,
44
- chunks : 'all' ,
45
- } ,
11
+ if ( options . bundle ) {
12
+ conf = lessModules ( conf , env , options ) ;
13
+ conf = reactLibrary ( conf , env , {
14
+ ...options ,
15
+ ...pkg ,
16
+ name : 'codemirror' ,
17
+ main : 'dist/codemirror.js' ,
18
+ // webpack externals options
19
+ dependencies : {
20
+ react : {
21
+ root : 'React' ,
22
+ commonjs2 : 'react' ,
23
+ commonjs : 'react' ,
24
+ amd : 'react' ,
25
+ } ,
26
+ 'react-dom' : {
27
+ root : 'ReactDOM' ,
28
+ commonjs2 : 'react-dom' ,
29
+ commonjs : 'react-dom' ,
30
+ amd : 'react-dom' ,
46
31
} ,
47
32
} ,
48
- } ;
49
- conf . output = { ...conf . output , publicPath : './' } ;
33
+ } ) ;
34
+ } else {
35
+ conf = rawModules ( conf , env , {
36
+ ...options ,
37
+ test : / \. ( t x t | m d ) $ / i,
38
+ esModule : true ,
39
+ } ) ;
40
+ conf = scopePluginOptions ( conf , env , {
41
+ ...options ,
42
+ allowedFiles : [ path . resolve ( process . cwd ( ) , 'src' ) , path . resolve ( process . cwd ( ) , 'README.md' ) ] ,
43
+ } ) ;
44
+ conf = lessModules ( conf , env , options ) ;
45
+ // Get the project version.
46
+ conf . plugins ! . push (
47
+ new webpack . DefinePlugin ( {
48
+ VERSION : JSON . stringify ( pkg . version ) ,
49
+ } ) ,
50
+ ) ;
51
+ if ( env === 'production' ) {
52
+ conf . optimization = {
53
+ ...conf . optimization ,
54
+ splitChunks : {
55
+ cacheGroups : {
56
+ reactvendor : {
57
+ test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( r e a c t | r e a c t - d o m ) [ \\ / ] / ,
58
+ name : 'react-vendor' ,
59
+ chunks : 'all' ,
60
+ } ,
61
+ refractor : {
62
+ test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( r e f r a c t o r ) [ \\ / ] / ,
63
+ name : 'refractor-vendor' ,
64
+ chunks : 'all' ,
65
+ } ,
66
+ codemirror : {
67
+ test : / [ \\ / ] n o d e _ m o d u l e s [ \\ / ] ( @ c o d e m i r r o r ) [ \\ / ] / ,
68
+ name : 'codemirror-vendor' ,
69
+ chunks : 'all' ,
70
+ } ,
71
+ } ,
72
+ } ,
73
+ } ;
74
+ conf . output = { ...conf . output , publicPath : './' } ;
75
+ }
50
76
}
51
77
return conf ;
52
78
} ;
0 commit comments