feat(script): add script
This commit is contained in:
parent
30e36a3ab5
commit
645914e43b
|
@ -5,7 +5,8 @@
|
|||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
"lint": "vue-cli-service lint",
|
||||
"remove-i18n": "node scripts/remove-i18n.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hyhello/vue-ball": "^1.0.0",
|
||||
|
@ -44,6 +45,7 @@
|
|||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"glob": "^11.0.1",
|
||||
"less": "^3.9.0",
|
||||
"less-loader": "^4.1.0",
|
||||
"prettier": "^2.2.1",
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const glob = require("glob");
|
||||
|
||||
// 读取中文语言包
|
||||
const zhCN = require("../i8n.js");
|
||||
|
||||
// 递归获取所有需要处理的文件
|
||||
function getAllFiles(dir, patterns) {
|
||||
return new Promise((resolve, reject) => {
|
||||
glob(
|
||||
patterns.join("|"),
|
||||
{
|
||||
cwd: dir,
|
||||
ignore: ["node_modules/**", "dist/**", "**/i18n/**", "**/languages/**"],
|
||||
},
|
||||
(err, files) => {
|
||||
if (err) reject(err);
|
||||
resolve(files);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// 获取嵌套对象的值
|
||||
function getNestedValue(obj, path) {
|
||||
return path.split(".").reduce((current, key) => current && current[key], obj);
|
||||
}
|
||||
|
||||
// 替换文件内容
|
||||
function replaceContent(content) {
|
||||
// 替换模板中的 $t('key')
|
||||
content = content.replace(/\$t\(['"]([^'"]+)['"]\)/g, (match, key) => {
|
||||
const value = getNestedValue(zhCN, key);
|
||||
return value ? `"${value}"` : match;
|
||||
});
|
||||
|
||||
// 替换 JavaScript 中的 this.$t('key')
|
||||
content = content.replace(/this\.\$t\(['"]([^'"]+)['"]\)/g, (match, key) => {
|
||||
const value = getNestedValue(zhCN, key);
|
||||
return value ? `"${value}"` : match;
|
||||
});
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
// 主函数
|
||||
async function main() {
|
||||
try {
|
||||
// 只处理 views 和 components 目录
|
||||
const patterns = ["views/**/*.{vue,js,ts}", "components/**/*.{vue,js,ts}"];
|
||||
const files = await getAllFiles(
|
||||
path.resolve(__dirname, "../src"),
|
||||
patterns
|
||||
);
|
||||
|
||||
for (const file of files) {
|
||||
const filePath = path.resolve(__dirname, "../src", file);
|
||||
let content = fs.readFileSync(filePath, "utf8");
|
||||
|
||||
// 替换内容
|
||||
const newContent = replaceContent(content);
|
||||
|
||||
// 如果内容有变化,则写入文件
|
||||
if (newContent !== content) {
|
||||
fs.writeFileSync(filePath, newContent, "utf8");
|
||||
console.log(`已处理文件: ${file}`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log("所有文件处理完成!");
|
||||
} catch (error) {
|
||||
console.error("处理过程中出错:", error);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
Loading…
Reference in New Issue