-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
是否有方法将CDN资源替换为离线资源 #86
Comments
是指沙箱里的依赖吗?如果没有比较好的网络环境的话,可能只能尝试私有化部署沙箱依赖的这些服务了,例如 dependency-packager 和 unpkg,然后修改沙箱的源码,将上面的服务的地址改成私有化服务的地址 不过私有化部署后估计也会遇到网络问题,因此你可能需要将 registry 指向国内的 mirror 具体私有化部署相关服务的方法,可以参考 https://juejin.cn/post/6882541950205952013#heading-8 |
感谢回答,目前我是启动环境之后,在控制台看到了CDN访问的错误,还没有仔细研究是哪块的CDN资源
这个是指在 https://github.com/NetEase/codesandbox-client.git 全局搜索替换吗? |
项目的示例应用里用到的依赖,其 umd 资源都是从 沙箱自己安装依赖,会按照解析成功或失败依次按照 dependency-packager (
是的,替换后需要重新构建资源 另外如果需要走私有化部署的方案,可能还需要屏蔽掉从 jsdelivr 安装依赖,来强制走 unpkg,具体来说应该是要改下面的部分: {
protocol: preloadedProtocols.unpkg,
condition: () => true,
},
// { protocol: preloadedProtocols.jsdelivr, condition: () => true }, |
是的,目前是这么一个逻辑,当指定了 UMD 资源后,沙箱会跳过该依赖的资源抓取,直接从指定的全局变量上抓取资源。如果没有指定 的话,自然会按照默认的逻辑加载
恭喜你发现了一个盲点,沙箱对 UMD 的支持是魔改了 CodeSandbox 的源码实现的,具体的实现可以参考 NetEase/codesandbox-client@7c6b640...e236ead (中间可能夹杂了其他的 commit,不过影响不大) 如上一个问题所述,魔改后的沙箱在加载 UMD 资源时,会跳过依赖获取与转译,并直接从全局变量上取值,从而优化项目的加载速度。不过上述 UMD 资源可以理解为是通过 不过目前上面的情况不是什么大问题,因为应用的默认模板只会给 React 这类比较基础的依赖,以及基础组件库这类依赖了上述 external 掉的依赖添加 UMD 资源而已。对于非 UMD 引入(走默认的转译逻辑)的依赖,如果它们需要用到这些通过 UMD 加载的依赖,也是能通过上述修改的代码从全局变量上取值 至于之前提到的资源无法加载的问题,建议试试看将上一条回复中提到的域名加入代理,确认下是否能正常加载 |
好的,明白了,就是不管怎么说,项目里面的 |
由于网络原因,经常无法访问cdn资源,导致项目运行不起来
请问有没有手段使用本地的资源?
目前只看到
apps/playground/.umirc.ts
里面有一点点可以更改的地方The text was updated successfully, but these errors were encountered: