第一种方法
这个很简单直接以import的形式引入,在后面加一个?raw,然后使用yaml模块进行解析即可
import config from '@/assets/managerCool.config.yml?raw'
import {parse} from 'yaml'
console.log(parse(config))
第二种方法
1. 转文件对象函数
记得安装axios
import axios from "axios";
async function urlToFile(url:string, fileName:string) {
try {
const response = await axios.get(url, { responseType: 'blob' });
return new File([response.data], fileName, { type: response.headers['content-type'] });
} catch (error) {
console.error('Error fetching image:', error);
}
}
export {
urlToFile
}
2. 读取文件内容函数
/**
* 读取文件的方法,返回Promise对象
* @param file 要读取的文件对象
* @param encoding 文件编码格式,默认为'utf-8'
*/
function readFile(file: File, encoding = 'utf-8'): Promise<string> {
return new Promise((resolve, reject) => {
// 创建FileReader对象
const reader = new FileReader();
// 当文件读取完成后,调用resolve方法返回文件内容
reader.onload = function () {
resolve(reader.result as string);
};
// 当文件读取出错时,调用reject方法返回错误信息
reader.onerror = function () {
reject(reader.error);
};
// 以指定的编码格式读取文件内容
reader.readAsText(file, encoding);
});
}
export {
readFile
}
3. 解析yaml文件
需要安装yaml模块
import {parse} from 'yaml'
parse('文件内容')
4. 使用
const url = import.meta.env.VITE_CONFIG_URL;这个是我自己的配置的地址,具体的可以查看vite官网的env配置,其实这里的url就是一个指向yaml文件地址的字符串,你直接写你的yaml文件所在位置就行
import {readFile} from "@/tools/readFile.ts";
import {urlToFile} from "@/tools/urlToFile.ts";
import {parse} from 'yaml'
const url = import.meta.env.VITE_CONFIG_URL;
const name = 'config.yml';
urlToFile(url, name).then(file => {
// 使用转换后的File对象
readFile(file as File).then(res=>{
console.log(parse(res))
})
});