Vue.js 如何创建基于Vuetify的浏览器扩展?
我正在使用Vue CLI用户界面。Vue.js 如何创建基于Vuetify的浏览器扩展?,vue.js,google-chrome-extension,vuetify.js,vue-cli,browser-extension,Vue.js,Google Chrome Extension,Vuetify.js,Vue Cli,Browser Extension,我正在使用Vue CLI用户界面。 我已经创建了一个项目并添加了vue cli插件浏览器扩展 到目前为止还不错 现在,我正在尝试将Vuetify添加到组合中。 我尝试使用官方插件,但扩展的弹出窗口中没有显示任何内容。 我尝试了CDN方法,但是当我尝试将Vuetify添加到Vue实例时,我得到一个错误,说Vuetify未定义 有什么想法吗 同样重要:如果可能的话,我真的更愿意而不是使用CDN方法。有没有办法使用npm install来安装运行Vuetify所需的css和字体 NPM解决方案(使用C
我已经创建了一个项目并添加了
vue cli插件浏览器扩展
到目前为止还不错
现在,我正在尝试将Vuetify添加到组合中。我尝试使用官方插件,但扩展的弹出窗口中没有显示任何内容。
我尝试了CDN方法,但是当我尝试将Vuetify添加到Vue实例时,我得到一个错误,说Vuetify未定义 有什么想法吗 同样重要:如果可能的话,我真的更愿意而不是使用CDN方法。有没有办法使用
npm install
来安装运行Vuetify所需的css和字体 NPM解决方案(使用CDN引入css和字体)
明白了毕竟这并不难,但你需要注意常规应用程序和Vue插件创建的浏览器扩展之间的区别 主要区别在于:
public/index.html
npm安装vuetify
main.js
中,添加Vuetify:public/browser extension.html
,并在标题部分添加以下行:
就这样强>
如果您对如何将第4项转换为npm变体有什么想法,请与我们分享。关于最难的部分(第4点),下面是您可以做的
首先,确保你的网页可以加载css文件(我认为你需要mini-css-extract-plugin
)
然后只需使用以下工具导入Vuetify和材质设计图标:
导入'vuetify/dist/vuetify.min.css';
导入“材料设计图标iconfont/dist/material design icons.css”;
//或者,如果您喜欢:
导入“@fortwome/fontwome free/css/all.css”;
这是最简单的部分。现在要获得Roboto字体,您需要下载字体样式https://fonts.googleapis.com/css?family=Roboto:100,300400500700900
中的每种字体下载它并用本地路径替换url
路径。为此,我编写了可以使用Node执行的简单脚本:
const fetch=require(“节点提取”);
常数fs=要求(“fs”);
常量mkdirp=require('mkdirp');
const fontDirPath='。/font/Roboto';
mkdirp.sync(fontDirPath);
(异步()=>{
常量文本=等待(等待获取('https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900', {
标题:{
//我们需要提供用户代理标题,因为没有它,Google将返回不同的(不充分的)响应
“用户代理”:“Mozilla/5.0(Windows NT 10.0;Win64;x64;rv:78.0)Gecko/20100101 Firefox/78.0”,
}
})).text()
const fontCss=文本
.split(“\n”)
.map(行=>{
const hasURL=line.includes('url(https');
const[,url,fileName]=line.match(新的RegExp('(https://.*/(.*.woff2))\\))|【】;
if(hasURL)下载文件(url,`${fontDirPath}/${fileName}`);
返回hasURL?
行。替换(url、文件名):
线路;
})
.join('\n');
fs.writeFileSync(`fontDirPath}/font_roboto.css`,Buffer.from(fontCss,'utf-8');
})()
异步函数下载文件(url、路径){
const res=等待获取(url);
const fileStream=fs.createWriteStream(路径);
等待新的承诺((决定,拒绝)=>{
res.body.pipe(文件流);
res.body.on(“错误”,拒绝);
fileStream.on('finish',resolve);
});
}
脚本可以改进,现在它只寻找“woff2”字体
导入下载并编辑的CSS文件后:
import./font/Roboto/font_Roboto.css';
另一个选择是切换到Vue/Quasar框架,其中包括对创建浏览器扩展的支持
如果您想要脱机版本:
vue create my-app
cd my-app
vue add vuetify
然后回答以下问题:
Choose a preset:
> Configure (advanced)
Use fonts as a dependency (for Electron or offline)?
> Yes
我认为这是一个很好的方法,不需要编写任何代码。因为任何人都希望在没有任何CDN的情况下完成本地构建 已经有Vue+Vuetify+材质设计图标 我做了这个回购协议,它最初是从微软的回购协议中克隆出来的 克隆repo,然后安装依赖项并生成
npm-i
#用于生产
npm运行构建
#用于开发(没有HMR)
npm运行开发
您可以从文件夹/dist/
编辑webpack.config.js
以添加更多入口点
编辑/src/popup/popup.js
以添加vuex或vue路由器
清单文件是
/src/manifest.json
,它将在构建后复制到dist
文件夹中您可能需要将Vuetify添加到构建配置中(package.json等),请参见。文档中唯一相关的部分是关于使用CLI-我想这不起作用,因为两个插件之间存在冲突。其他的方法有Nuxt和WebPack,我都不使用。嘿,谢谢这条帮助我的帖子:)。你知道我是否需要在webpack.config
中添加一些规则吗?我用的是这个初学者样板
vue create my-app
cd my-app
vue add vuetify
Choose a preset:
> Configure (advanced)
Use fonts as a dependency (for Electron or offline)?
> Yes