104 lines
2.3 KiB
JavaScript
104 lines
2.3 KiB
JavaScript
|
const fs = require('fs');
|
|||
|
const path = require('path');
|
|||
|
//格式化生成文件
|
|||
|
const prettier = require('prettier');
|
|||
|
|
|||
|
const options = {
|
|||
|
printWidth: 999,
|
|||
|
tabWidth: 4,
|
|||
|
proseWrap: 'never',
|
|||
|
trailingComma: 'none',
|
|||
|
//生成接口文件,和类型文件时,不要把semi设置为false,否则vue文件无法生成
|
|||
|
semi: true,
|
|||
|
singleQuote: true,
|
|||
|
jsxSingleQuote: true,
|
|||
|
vueIndentScriptAndStyle: false,
|
|||
|
parser: 'typescript',
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* 生成文件
|
|||
|
* @param {*} filePath 文件路径
|
|||
|
* @param {*} content 内容
|
|||
|
* @param {*} opt prettier配置
|
|||
|
*/
|
|||
|
function renderFile(filePath, content, opt) {
|
|||
|
const directory = path.dirname(filePath);
|
|||
|
|
|||
|
fs.mkdir(directory, { recursive: true }, async (err) => {
|
|||
|
if (err) {
|
|||
|
console.error(filePath + '创建目录时发生错误:', err);
|
|||
|
return;
|
|||
|
}
|
|||
|
// 将代码格式化
|
|||
|
const formattedCode = await prettier.format(content, opt ? opt : options);
|
|||
|
|
|||
|
// 同步写入文件
|
|||
|
try {
|
|||
|
fs.writeFileSync(filePath, formattedCode);
|
|||
|
// console.log(filePath + '文件写入成功')
|
|||
|
} catch (err) {
|
|||
|
console.error(filePath + '写入文件时发生错误:', err);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 将蛇形命名修改成驼峰命名 (首字母大写)
|
|||
|
* @param {string} s 蛇形命名字符串
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
function snakeToCamel(s) {
|
|||
|
return s
|
|||
|
.split('-')
|
|||
|
.map((word, index) => {
|
|||
|
if (index === 0) {
|
|||
|
return word.charAt(0).toUpperCase() + word.slice(1);
|
|||
|
} else {
|
|||
|
return word.charAt(0).toUpperCase() + word.slice(1);
|
|||
|
}
|
|||
|
})
|
|||
|
.join('');
|
|||
|
}
|
|||
|
|
|||
|
// 将蛇形命名修改成驼峰命名 (首字母小写)
|
|||
|
// function snakeToCamel(s) {
|
|||
|
// return s.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
|
|||
|
// }
|
|||
|
|
|||
|
/**
|
|||
|
* 将字符串的首字母改为小写
|
|||
|
* @param {string} str 字符串
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
function toLowerCaseFirstLetter(str) {
|
|||
|
return str.charAt(0).toLowerCase() + str.slice(1);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 将字符串的首字母改为大写
|
|||
|
* @param {string} str 字符串
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
function toCapitalizeFirstLetter(str) {
|
|||
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 获取url请求头
|
|||
|
* @param {string} url url地址
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
function getProtocol(url) {
|
|||
|
var protocol = url.split(':')[0];
|
|||
|
return protocol;
|
|||
|
}
|
|||
|
|
|||
|
module.exports = {
|
|||
|
renderFile,
|
|||
|
snakeToCamel,
|
|||
|
toCapitalizeFirstLetter,
|
|||
|
toLowerCaseFirstLetter,
|
|||
|
getProtocol,
|
|||
|
};
|