@@ -99,6 +99,30 @@ function aliasJest(options) {
9999 }
100100}
101101
102+ function autoscan ( tasks ) {
103+ const dirlist = dir =>
104+ fs . readdirSync ( dir ) . filter (
105+ file => fs . statSync ( path . resolve ( dir , file ) ) . isDirectory ( ) )
106+ if ( ! Array . isArray ( tasks ) ) tasks = tasks ? [ tasks ] : [ ]
107+ tasks = tasks . map ( task => ( task === task + '' ) ? { path : task } : task )
108+ tasks = tasks . map ( task => ( {
109+ prefix : '' ,
110+ suffix : '' ,
111+ ...task ,
112+ } ) )
113+ const aliasMap = tasks . map ( task => (
114+ dirlist ( task . path ) . reduce (
115+ ( a , alias ) => ( {
116+ ...a ,
117+ [ task . prefix + alias + task . suffix ] :
118+ path . join ( task . path , alias )
119+ } ) ,
120+ { }
121+ )
122+ ) ) . reduce ( ( a , map ) => ( { ...a , ...map } ) , { } )
123+ return aliasMap
124+ }
125+
102126function configFilePath ( configPath = '' ) {
103127 if (
104128 configPath . length > 0 && fs . existsSync ( path . resolve ( paths . appPath , configPath ) )
@@ -140,22 +164,28 @@ function configPathsRaw(confPath) {
140164function configPaths ( configPath = '' ) {
141165 const confPath = configFilePath ( configPath )
142166 const paths = configPathsRaw ( confPath )
143- return Object . keys ( paths ) . reduce ( ( a , path ) => {
167+ const aliasMap = Object . keys ( paths ) . reduce ( ( a , path ) => {
144168 const value = paths [ path ]
145169 const target = Array . isArray ( value ) ? value [ 0 ] : value
146170 a [ path . replace ( / \/ \* $ / , '' ) ] = target . replace ( / \/ \* $ / , '' )
147171 return a
148172 } , { } )
173+ return aliasMap
149174}
150175
151176function defaultOptions ( options ) {
152177 const configPath = configFilePath (
153178 options . tsconfig || options . jsconfig
154179 )
155180 const aliasMap = options . alias || configPaths ( configPath )
181+ const aliasAutoMap = autoscan ( options . autoscan )
182+
156183 const opts = {
157184 ...options ,
158- aliasMap,
185+ aliasMap : {
186+ ...aliasAutoMap ,
187+ ...aliasMap ,
188+ } ,
159189 }
160190 return opts
161191}
@@ -182,6 +212,7 @@ const CracoAliasPlugin = {
182212module . exports = {
183213 aliasWebpack,
184214 aliasJest,
215+ autoscan,
185216 configFilePath,
186217 configPathsRaw,
187218 configPaths,
0 commit comments