@modyqyw/fabric
Version:
Opinionated shareable specifications for git-based JavaScript/TypeScript projects.
168 lines (162 loc) • 6.91 kB
JavaScript
'use strict';
const node_fs = require('node:fs');
const node_path = require('node:path');
const process = require('node:process');
const localPkg = require('local-pkg');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
const process__default = /*#__PURE__*/_interopDefaultCompat(process);
const hasTypeScript = localPkg.isPackageExists("typescript");
const hasNuxt = localPkg.isPackageExists("nuxt");
const getNuxtVersion = () => {
const pkg = localPkg.getPackageInfoSync("nuxt", { paths: [process__default.cwd()] });
if (pkg && typeof pkg.version === "string" && !Number.isNaN(+pkg.version[0])) {
return +pkg.version[0];
}
return 3;
};
const hasNuxt3 = getNuxtVersion() === 3;
const hasVuePress = localPkg.isPackageExists("vuepress");
const hasVitePress = localPkg.isPackageExists("vitepress");
const hasSlidev = localPkg.isPackageExists("@slidev/cli");
const hasUniApp = localPkg.isPackageExists("@dcloudio/vite-plugin-uni") || localPkg.isPackageExists("@dcloudio/vue-cli-plugin-uni");
const hasTaroVue = [
"@tarojs/taro",
"@tarojs/plugin-framework-vue"
].every((p) => localPkg.isPackageExists(p));
const hasIonicVue = localPkg.isPackageExists("@ionic/vue");
const hasVue = localPkg.isPackageExists("vue") || hasNuxt || hasVuePress || hasVitePress || hasSlidev || hasUniApp || hasTaroVue || hasIonicVue;
const getVueVersion = () => {
const pkg = localPkg.getPackageInfoSync("vue", { paths: [process__default.cwd()] });
if (pkg && typeof pkg.version === "string" && !Number.isNaN(+pkg.version[0])) {
return +pkg.version[0];
}
return 3;
};
const hasVue3 = getVueVersion() === 3;
const hasNext = ["next"].some((p) => localPkg.isPackageExists(p));
const hasRemix = [
"@remix-run/node",
"@remix-run/react",
"@remix-run/serve",
"@remix-run/dev",
"remix"
].some((p) => localPkg.isPackageExists(p));
const hasReactRouter = [
"@react-router/node",
"@react-router/react",
"@react-router/serve",
"@react-router/dev"
].some((p) => localPkg.isPackageExists(p));
const hasReactNative = ["react-native", "@expo/cli"].some(
(p) => localPkg.isPackageExists(p)
);
const hasIonicReact = localPkg.isPackageExists("@ionic/react");
const hasDocusaurus = localPkg.isPackageExists("docusaurus");
const hasTaroReact = [
"@tarojs/taro",
"@tarojs/plugin-framework-react"
].every((p) => localPkg.isPackageExists(p));
const hasReact = localPkg.isPackageExists("react") || hasNext || hasRemix || hasReactNative || hasIonicReact || hasDocusaurus || hasTaroReact;
const hasSvelteKit = localPkg.isPackageExists("@sveltejs/kit");
const hasTaroSvelte = [
"@tarojs/taro",
"@tarojs/plugin-framework-svelte"
].every((p) => localPkg.isPackageExists(p));
const hasSvelte = hasSvelteKit || hasTaroSvelte || localPkg.isPackageExists("svelte");
const hasSolidStart = localPkg.isPackageExists("solid-start");
const hasTaroSolid = [
"@tarojs/taro",
"@tarojs/plugin-framework-solid"
].every((p) => localPkg.isPackageExists(p));
const hasSolid = hasSolidStart || hasTaroSolid || localPkg.isPackageExists("solid-js");
const hasAstro = localPkg.isPackageExists("astro");
const hasTaro = localPkg.isPackageExists("@tarojs/taro");
const hasMiniProgram = hasUniApp || hasTaro;
const hasScss = localPkg.isPackageExists("sass");
const hasLess = localPkg.isPackageExists("less");
const hasUnoCss = localPkg.isPackageExists("unocss");
const hasWindiCss = localPkg.isPackageExists("windicss");
const hasTailwindCss = localPkg.isPackageExists("tailwindcss");
const hasVite = localPkg.isPackageExists("vite");
const hasLerna = localPkg.isPackageExists("lerna") || localPkg.isPackageExists("@lerna-lite/cli");
const hasNx = localPkg.isPackageExists("nx");
const hasRush = localPkg.isPackageExists("@microsoft/rush");
const hasPnpmWorkspace = node_fs.existsSync(
node_path.resolve(process__default.cwd(), "pnpm-workspace.yaml")
);
const hasMonoRepo = hasLerna || hasNx || hasRush || hasPnpmWorkspace;
const hasVitest = localPkg.isPackageExists("vitest");
const hasTsconfigVitestJson = node_fs.existsSync(
node_path.resolve(process__default.cwd(), "tsconfig.vitest.json")
);
const hasTsconfigTestJson = node_fs.existsSync(
node_path.resolve(process__default.cwd(), "tsconfig.test.json")
);
const hasTsconfigAppJson = node_fs.existsSync(
node_path.resolve(process__default.cwd(), "tsconfig.app.json")
);
const hasBiome = localPkg.isPackageExists("biome");
const hasESLint = localPkg.isPackageExists("eslint");
const hasOxlint = localPkg.isPackageExists("oxlint");
const hasStylelint = localPkg.isPackageExists("stylelint");
const hasPrettier = localPkg.isPackageExists("prettier");
const hasTsc = localPkg.isPackageExists("typescript");
const hasVueTsc = localPkg.isPackageExists("vue-tsc");
const hasMarkdownlintCli = localPkg.isPackageExists("markdownlint-cli");
const hasLintStaged = localPkg.isPackageExists("lint-staged");
const hasCommitlint = localPkg.isPackageExists("@commitlint/cli") || localPkg.isPackageExists("commitlint-cli");
exports.getNuxtVersion = getNuxtVersion;
exports.getVueVersion = getVueVersion;
exports.hasAstro = hasAstro;
exports.hasBiome = hasBiome;
exports.hasCommitlint = hasCommitlint;
exports.hasDocusaurus = hasDocusaurus;
exports.hasESLint = hasESLint;
exports.hasIonicReact = hasIonicReact;
exports.hasIonicVue = hasIonicVue;
exports.hasLerna = hasLerna;
exports.hasLess = hasLess;
exports.hasLintStaged = hasLintStaged;
exports.hasMarkdownlintCli = hasMarkdownlintCli;
exports.hasMiniProgram = hasMiniProgram;
exports.hasMonoRepo = hasMonoRepo;
exports.hasNext = hasNext;
exports.hasNuxt = hasNuxt;
exports.hasNuxt3 = hasNuxt3;
exports.hasNx = hasNx;
exports.hasOxlint = hasOxlint;
exports.hasPnpmWorkspace = hasPnpmWorkspace;
exports.hasPrettier = hasPrettier;
exports.hasReact = hasReact;
exports.hasReactNative = hasReactNative;
exports.hasReactRouter = hasReactRouter;
exports.hasRemix = hasRemix;
exports.hasRush = hasRush;
exports.hasScss = hasScss;
exports.hasSlidev = hasSlidev;
exports.hasSolid = hasSolid;
exports.hasSolidStart = hasSolidStart;
exports.hasStylelint = hasStylelint;
exports.hasSvelte = hasSvelte;
exports.hasSvelteKit = hasSvelteKit;
exports.hasTailwindCss = hasTailwindCss;
exports.hasTaro = hasTaro;
exports.hasTaroReact = hasTaroReact;
exports.hasTaroSolid = hasTaroSolid;
exports.hasTaroSvelte = hasTaroSvelte;
exports.hasTaroVue = hasTaroVue;
exports.hasTsc = hasTsc;
exports.hasTsconfigAppJson = hasTsconfigAppJson;
exports.hasTsconfigTestJson = hasTsconfigTestJson;
exports.hasTsconfigVitestJson = hasTsconfigVitestJson;
exports.hasTypeScript = hasTypeScript;
exports.hasUniApp = hasUniApp;
exports.hasUnoCss = hasUnoCss;
exports.hasVite = hasVite;
exports.hasVitePress = hasVitePress;
exports.hasVitest = hasVitest;
exports.hasVue = hasVue;
exports.hasVue3 = hasVue3;
exports.hasVuePress = hasVuePress;
exports.hasVueTsc = hasVueTsc;
exports.hasWindiCss = hasWindiCss;