infly-libs
Version:
工具组件库
49 lines (44 loc) • 1.41 kB
JavaScript
const fs = require("fs");
const path = require("path");
/**
* 覆盖写入构建脚本
* @param {String} filePath - 覆盖文件路径
* @param {Array | Object} scriptsList - 写入脚本配置
* @param {String} 更新字段值
*/
function scriptWrite(filePath, scriptsList, updateKey = "scripts") {
const pkg = JSON.parse(fs.readFileSync(filePath));
pkg[updateKey] = pkg[updateKey] || {};
if (Array.isArray(scriptsList)) {
scriptsList.forEach((item) => {
pkg[updateKey][item.key] = item.value;
});
} else if (typeof scriptsList === "object") {
pkg[updateKey] = scriptsList;
}
fs.writeFileSync(filePath, JSON.stringify(pkg, null, 2));
}
/**
* 获取文件绝对路径
* @param {String} filePath - 文件路径
* @returns
*/
function targetProjectFileResolve(filePath) {
// 初始脚本自动执行路径会自动读取node_modules
const projectRoot = process.cwd();
const absoluteProjectRoot = projectRoot.replace(/\\node_modules.*$/g, "");
return path.resolve(absoluteProjectRoot, filePath);
}
/**
* 获取文件绝对路径
* @param {String} filePath - 文件路径
* @returns
*/
function currentProjectFileResolve(filePath) {
return path.join(__dirname, filePath);
}
module.exports = {
scriptWrite,
targetProjectFileResolve,
currentProjectFileResolve
};