1
1
const fs = require ( 'fs' ) ;
2
2
const path = require ( 'path' ) ;
3
-
4
- const projectRootPath = fs . existsSync ( './project' )
5
- ? fs . realpathSync ( './project' )
6
- : fs . realpathSync ( './../../../' ) ;
7
- const packageJson = require ( path . join ( projectRootPath , 'package.json' ) ) ;
8
- const jsConfig = require ( path . join ( projectRootPath , 'jsconfig.json' ) ) . compilerOptions ;
9
-
10
- const pathsConfig = jsConfig . paths ;
3
+ const projectRootPath = fs . realpathSync ( __dirname + '/../../../' ) ;
11
4
12
5
let voltoPath = path . join ( projectRootPath , 'node_modules/@plone/volto' ) ;
6
+ let configFile ;
7
+ if ( fs . existsSync ( `${ projectRootPath } /tsconfig.json` ) )
8
+ configFile = `${ projectRootPath } /tsconfig.json` ;
9
+ else if ( fs . existsSync ( `${ projectRootPath } /jsconfig.json` ) )
10
+ configFile = `${ projectRootPath } /jsconfig.json` ;
11
+
12
+ if ( configFile ) {
13
+ const jsConfig = require ( configFile ) . compilerOptions ;
14
+ const pathsConfig = jsConfig . paths ;
15
+ if ( pathsConfig [ '@plone/volto' ] )
16
+ voltoPath = `./${ jsConfig . baseUrl } /${ pathsConfig [ '@plone/volto' ] [ 0 ] } ` ;
17
+ }
13
18
14
- Object . keys ( pathsConfig ) . forEach ( pkg => {
15
- if ( pkg === '@plone/volto' ) {
16
- voltoPath = `./${ jsConfig . baseUrl } /${ pathsConfig [ pkg ] [ 0 ] } ` ;
17
- }
18
- } ) ;
19
19
const AddonConfigurationRegistry = require ( `${ voltoPath } /addon-registry.js` ) ;
20
20
const reg = new AddonConfigurationRegistry ( projectRootPath ) ;
21
21
22
22
// Extends ESlint configuration for adding the aliases to `src` directories in Volto addons
23
- const addonAliases = Object . keys ( reg . packages ) . map ( o => [
23
+ const addonAliases = Object . keys ( reg . packages ) . map ( ( o ) => [
24
24
o ,
25
25
reg . packages [ o ] . modulePath ,
26
26
] ) ;
27
27
28
+ const addonExtenders = reg . getEslintExtenders ( ) . map ( ( m ) => require ( m ) ) ;
28
29
29
- module . exports = {
30
- extends : `${ projectRootPath } /node_modules/@plone/volto /.eslintrc` ,
30
+ const defaultConfig = {
31
+ extends : `${ voltoPath } /.eslintrc` ,
31
32
settings : {
32
33
'import/resolver' : {
33
34
alias : {
34
35
map : [
35
36
[ '@plone/volto' , '@plone/volto/src' ] ,
37
+ [ '@plone/volto-slate' , '@plone/volto/packages/volto-slate/src' ] ,
36
38
...addonAliases ,
37
39
[ '@package' , `${ __dirname } /src` ] ,
40
+ [ '@root' , `${ __dirname } /src` ] ,
38
41
[ '~' , `${ __dirname } /src` ] ,
39
42
] ,
40
43
extensions : [ '.js' , '.jsx' , '.json' ] ,
@@ -53,3 +56,10 @@ module.exports = {
53
56
] ,
54
57
}
55
58
} ;
59
+
60
+ const config = addonExtenders . reduce (
61
+ ( acc , extender ) => extender . modify ( acc ) ,
62
+ defaultConfig ,
63
+ ) ;
64
+
65
+ module . exports = config ;
0 commit comments