@@ -136,6 +136,30 @@ function getCdnPathNpmInfo(
136136 }
137137}
138138
139+ function parseImportMapLocalConfig ( importMapLocalConfig ) {
140+ let parsedImportMapLocalConfig = importMapLocalConfig
141+
142+ if ( ! parsedImportMapLocalConfig || typeof parsedImportMapLocalConfig !== 'object' ) {
143+ logger . warn ( '[import-map-local-plugin]: Invalid importMapLocalConfig, using defaults' )
144+
145+ parsedImportMapLocalConfig = { importMap : { imports : { } } , copy : { } }
146+ }
147+
148+ if ( ! parsedImportMapLocalConfig . importMap || typeof parsedImportMapLocalConfig . importMap !== 'object' ) {
149+ logger . warn ( '[import-map-local-plugin]: Invalid importMapConfig, using defaults' )
150+
151+ parsedImportMapLocalConfig . importMap = { imports : { } }
152+ }
153+
154+ if ( ! parsedImportMapLocalConfig . copy || typeof parsedImportMapLocalConfig . copy !== 'object' ) {
155+ logger . warn ( '[import-map-local-plugin]: Invalid copyConfig, using defaults' )
156+
157+ parsedImportMapLocalConfig . copy = { }
158+ }
159+
160+ return parsedImportMapLocalConfig
161+ }
162+
139163/**
140164 * 本地化CDN插件
141165 * @param {Object } options - 配置选项
@@ -153,32 +177,18 @@ export function importMapLocalPlugin({
153177 cdnDir = 'local-cdn-static' , // 构建目录中的CDN文件夹名称
154178 bundleTempDir = 'bundle-deps/local-cdn' // 临时存放下载的包的目录
155179} ) {
156- let importMapConfig = importMapLocalConfig . importMap
157-
158- if ( ! importMapConfig || typeof importMapConfig !== 'object' ) {
159- logger . warn ( '[import-map-local-plugin]: Invalid importMapLocalConfig, using defaults' )
160-
161- importMapConfig = { imports : { } , copy : { } }
162- }
163-
164- if ( ! importMapConfig . imports || typeof importMapConfig . imports !== 'object' ) {
165- logger . warn ( '[import-map-local-plugin]: Invalid importMapConfig, using defaults' )
166-
167- importMapConfig . imports = { }
168- }
169-
170- if ( ! importMapConfig . copy || typeof importMapConfig . copy !== 'object' ) {
171- logger . warn ( '[import-map-local-plugin]: Invalid copyConfig, using defaults' )
172-
173- importMapConfig . copy = { }
174- }
180+ let parsedImportMapLocalConfig = parseImportMapLocalConfig ( importMapLocalConfig )
175181
176- const copyConfig = importMapConfig . copy || { }
182+ const copyConfig = parsedImportMapLocalConfig . copy || { }
177183 const defaultImportMapConfig = JSON . parse (
178184 fs . readFileSync ( path . resolve ( process . cwd ( ) , './node_modules/@opentiny/tiny-engine/dist/import-map.json' ) , 'utf-8' )
179185 )
180- const parsedDefaultImportMapConfig = Object . values ( defaultImportMapConfig . imports ) . map ( ( item ) => extractInfo ( item ) )
181- const parsedImportMapConfig = Object . values ( importMapConfig . imports ) . map ( ( item ) => extractInfo ( item ) )
186+ const parsedDefaultImportMapConfig = Object . values ( defaultImportMapConfig . imports )
187+ . map ( ( item ) => extractInfo ( item ) )
188+ . filter ( Boolean )
189+ const parsedImportMapConfig = Object . values ( parsedImportMapLocalConfig . importMap . imports )
190+ . map ( ( item ) => extractInfo ( item ) )
191+ . filter ( Boolean )
182192 const overriddenImportMap = parsedDefaultImportMapConfig . filter ( ( item ) => {
183193 return ! parsedImportMapConfig . find ( ( parsedItem ) => parsedItem . packageName === item . packageName )
184194 } )
0 commit comments