nonzzz / vite-plugin-cdn

replace module with CDN. work with vite.
MIT License
73 stars 5 forks source link

使用报错 #15

Closed vivid05 closed 11 months ago

vivid05 commented 11 months ago
image
nonzzz commented 11 months ago

提供你的配置文件

vivid05 commented 11 months ago

提供你的配置文件

{ url: 'https://xxx', modules: [ 'vue', 'vue-router', 'vue-i18n', '@sentry/vue', '@sentry/tracing', 'axios' ], resolve: resolver }

const filterModules = [ {name: 'vue', path: 'vue.js'}, .... ] const resolver = (base, { name }) => { const path = filterModules.find(item => item.name === name)?.path return base + path }

nonzzz commented 11 months ago

根据你的代码我目前无法判断是什么问题。你可以打开f12看一下请求的cdn资源是否正确加载了。

vivid05 commented 11 months ago

根据你的代码我目前无法判断是什么问题。你可以打开f12看一下请求的cdn资源是否正确加载了。

报错的那三个没有加载cdn,其他的有正常加载。另外有个问题是,项目用了unplugin-vue-components插件对vant进行按需引入,使用你的插件之后会把如需引入的vant给丢失掉了

nonzzz commented 11 months ago

如果cdn正确加载了 控制台信息呢

nonzzz commented 11 months ago

'@sentry/vue','@sentry/tracing', 插件找不到全局名称。 你得手动传入

vivid05 commented 11 months ago

'@sentry/vue','@sentry/tracing', 插件找不到全局名称。 你得手动传入

全局名称是指什么名称

nonzzz commented 11 months ago

umd或者iife文件的 name。比如vue对应的是Vue@sentry/vue 和后面的包并没有提供相关的global name,这个你得自己去找一下

nonzzz commented 11 months ago

不过我看了下sentry并没有提供umd或者iife文件。

vivid05 commented 11 months ago

另外有个问题是,项目用了unplugin-vue-components插件对vant进行按需引入,使用你的插件之后会把如需引入的vant给丢失掉了。这个问题怎么说,用vite-plugin-cdn-import,同样存在

nonzzz commented 11 months ago

vant 有正确加载cdn吗? cdn插件需要放在unplugin的插件后面

vivid05 commented 11 months ago

vant没有配置cdn,就只是按需引入打包的

nonzzz commented 11 months ago

由于你vue配置了cdn那么他就不会打包进去 这时候vant 根据构建工具他读取不到vue。因为这时候vue只会挂载在window上。

vivid05 commented 11 months ago

由于你vue配置了cdn那么他就不会打包进去 这时候vant 根据构建工具他读取不到vue。因为这时候vue只会挂载在window上。

那解决方案只能是把vant也配置cdn了吧

nonzzz commented 11 months ago

是的。根据importMap来看这个方式还有待考虑

vivid05 commented 11 months ago

是的。根据importMap来看这个方式还有待考虑

感谢大佬🙏

nonzzz commented 11 months ago

你依赖了sentry。sentry vue具体做了什么我不太清楚。不过前面几个正确依赖的话是没问题的。按照我的理解使用Unplugin他更多的是自动按需导入。那么涉及到cdn的话 cdn是可以在生产环境下全量导入的因为他可以并行

nonzzz commented 11 months ago

image 根据调试结果来看是符合预期的。 sentry我刚刚看了下 他并没有依赖于vue。目前是没法进行cdn优化的。

nonzzz commented 11 months ago

你可以试一下modules里面设置['vue','vue-router','vue-i18n','vant','axios']

vivid05 commented 11 months ago

你可以试一下modules里面设置['vue','vue-router','vue-i18n','vant','axios']

vant按需打包的话比cdn全量引入体积小多了,没有别的办法了吗😭

nonzzz commented 11 months ago

没有。其实cdn和按需引入在不同项目体积下的表现是不一致的