vue.js - 如何避免从 CDN 捆绑 Vuetify 和使用?
问题描述
我正在尝试通过使用 firebase、Vue 和 Vuetify 的 CDN 来减小由 vue-cli 搭建的 Vue 项目的包大小。
所以,我在下面添加了这些 CDN 的链接public/index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>magiclabel</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css">
<link href="https://fonts.googleapis.com/css?family=Parisienne&display=swap" rel="stylesheet">
<script src="https://www.gstatic.com/firebasejs/8.6.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.2/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.js"></script>
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.css" />
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
</head>
<body>
<noscript>
<strong>We're sorry but t4v4 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
添加config.externals
如下vue.config.js
:
module.exports = {
"transpileDependencies": [
"vuetify"
],
chainWebpack: (config) => {
config.externals({
firebase: 'firebase',
'firebase/auth': 'firebase',
firebaseui: 'firebaseui',
vue: 'Vue',
vuetify: 'Vuetify',
'vuetify/lib': 'Vuetify',
})
}
}
然后,通过发出的report.html
创建yarn build --report
表明即使其他 firebaseVuetify
仍然在捆绑包中,并且 Vue 正在消失,如下所示:
是否有任何错误或不足的步骤?
解决方案
如果您从vue-cli-plugin-vuetify
( ) 使用 vuetify,则默认情况下会启用vue add vuetify
treeshaking 和自动组件导入,使用.vuetify-loader
如果您查看的源代码vue-cli-plugin-vuetify
,它仅vuetify-loader
在它存在于您的package.json
. 所以删除应该禁用此行为vuetify-loader
。package.json
推荐阅读
- analytics - Weka - loading an arff file, keep getting error @relation expected, but the format is correct
- bash - How to write Vault LDAP Auth Configuration from a json config file?
- python - KeyError and AtrributeError when trying to retrieve a shelved class - Python 3.6
- jetty - 调用类 org.jboss.resteasy.cdi.CdiInjectorFactory 被放置在多个 bean 档案中
- wordpress - 使用 Wordpress 作为 CMS 并通过 REST API 访问内容
- postgresql - PostgreSQL select query on table that is being updated
- ms-access - 使用 2 个字段的 MS Access 完全外部联接?
- c# - 如何在 MVC 5 中使用 DropdownListFor 在多个 DropDownList 中选择值
- javascript - JavaScript 基于浏览器语言重定向用户(Chrome 扩展)
- xpath - 如何在 XPath 中使用多个 OR 运算符