semantic-commit-emoji-config
Version:
Config loader for semantic-commit-emoji
53 lines (52 loc) • 1.58 kB
JavaScript
import { cosmiconfig } from "cosmiconfig";
import { TypeScriptLoader } from "cosmiconfig-typescript-loader";
const moduleName = "semantic-commit-emoji";
const explorer = cosmiconfig(moduleName, {
searchPlaces: [
"package.json",
`.${moduleName}rc`,
`.${moduleName}rc.json`,
`.${moduleName}rc.yaml`,
`.${moduleName}rc.yml`,
`.${moduleName}rc.ts`,
`.${moduleName}rc.mjs`,
`.${moduleName}rc.js`,
`${moduleName}.config.ts`,
`${moduleName}.config.mjs`,
`${moduleName}.config.js`,
],
loaders: {
".ts": TypeScriptLoader(),
".mjs": TypeScriptLoader(),
},
});
const defaultConfig = {
withSpace: false,
automaticTypes: {
fixup: "",
merge: "twisted_rightwards_arrows",
revert: "rewind",
version: "bookmark",
},
conventionalTypes: {
feat: "sparkles",
fix: "bug",
docs: "pencil",
refactor: "recycle",
style: "art",
test: "microscope",
perf: "zap",
hotfix: "ambulance",
locale: "globe_with_meridians",
ci: "construction_worker",
chore: "wrench",
types: "label",
},
};
export default async (path) => {
const result = await (path === undefined ? explorer.search() : explorer.load(path));
const config = Object.assign({}, defaultConfig, result?.config);
// Deep merge automaticTypes
config.automaticTypes = Object.assign({}, defaultConfig.automaticTypes, result?.config?.automaticTypes);
return config;
};