@xylabs/ts-scripts-yarn3 3.0.3 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(compile_exports);
|
|
|
34
34
|
var import_plugin_commonjs = __toESM(require("@rollup/plugin-commonjs"));
|
|
35
35
|
var import_plugin_typescript = __toESM(require("@rollup/plugin-typescript"));
|
|
36
36
|
var import_chalk = __toESM(require("chalk"));
|
|
37
|
+
var import_cosmiconfig = require("cosmiconfig");
|
|
37
38
|
var import_promises = require("fs/promises");
|
|
38
39
|
var import_rollup = require("rollup");
|
|
39
40
|
var import_rollup_plugin_exclude_dependencies_from_bundle = __toESM(require("rollup-plugin-exclude-dependencies-from-bundle"));
|
|
@@ -41,44 +42,79 @@ var import_rollup_plugin_node_externals = __toESM(require("rollup-plugin-node-ex
|
|
|
41
42
|
var import_loadPackageConfig = require("../../loadPackageConfig");
|
|
42
43
|
var import_publint = require("./publint");
|
|
43
44
|
const rollItUp = async (format, ext, subDir) => {
|
|
44
|
-
const
|
|
45
|
+
const dir = subDir === "." ? void 0 : subDir;
|
|
46
|
+
const input = await getInputs(dir);
|
|
47
|
+
const tsPlugIn = (0, import_plugin_typescript.default)({
|
|
48
|
+
baseUrl: "src",
|
|
49
|
+
declaration: !dir || !subDir,
|
|
50
|
+
declarationMap: !dir || !subDir,
|
|
51
|
+
emitDeclarationOnly: false,
|
|
52
|
+
esModuleInterop: true,
|
|
53
|
+
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
54
|
+
outDir: dir ? `dist/${dir}` : "dist",
|
|
55
|
+
rootDir: "src",
|
|
56
|
+
tsconfig: "tsconfig.json"
|
|
57
|
+
});
|
|
58
|
+
const errors = [];
|
|
59
|
+
const warnings = [];
|
|
60
|
+
const infos = [];
|
|
61
|
+
const debugs = [];
|
|
62
|
+
const options = {
|
|
63
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ["./src/index.ts"],
|
|
64
|
+
logLevel: "warn",
|
|
65
|
+
onLog: (level, log, defaultHandler) => {
|
|
66
|
+
if (log.code === "EMPTY_BUNDLE") {
|
|
67
|
+
return defaultHandler(level, log);
|
|
68
|
+
}
|
|
69
|
+
switch (level) {
|
|
70
|
+
case "warn": {
|
|
71
|
+
warnings.push(log);
|
|
72
|
+
console.warn(import_chalk.default.yellow(JSON.stringify(log, null, 2)));
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "info": {
|
|
76
|
+
infos.push(log);
|
|
77
|
+
console.info(import_chalk.default.white(JSON.stringify(log, null, 2)));
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case "debug": {
|
|
81
|
+
debugs.push(log);
|
|
82
|
+
console.debug(import_chalk.default.gray(JSON.stringify(log, null, 2)));
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
default: {
|
|
86
|
+
errors.push(log);
|
|
87
|
+
console.error(import_chalk.default.red(JSON.stringify(log, null, 2)));
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
console.log(`Log: ${level}: ${log.message}`);
|
|
92
|
+
return defaultHandler(level, log);
|
|
93
|
+
},
|
|
94
|
+
plugins: [(0, import_plugin_commonjs.default)(), (0, import_rollup_plugin_exclude_dependencies_from_bundle.default)(), (0, import_rollup_plugin_node_externals.default)(), tsPlugIn]
|
|
95
|
+
};
|
|
96
|
+
const outputOptions = {
|
|
97
|
+
dir: dir ? `dist/${dir}` : "dist",
|
|
98
|
+
dynamicImportInCjs: true,
|
|
99
|
+
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
100
|
+
format,
|
|
101
|
+
sourcemap: true
|
|
102
|
+
};
|
|
45
103
|
if (input.length) {
|
|
46
|
-
await (await (0, import_rollup.rollup)(
|
|
47
|
-
input: input.map((file) => `./src/${file}`),
|
|
48
|
-
logLevel: "warn",
|
|
49
|
-
perf: true,
|
|
50
|
-
plugins: [
|
|
51
|
-
(0, import_plugin_commonjs.default)(),
|
|
52
|
-
(0, import_rollup_plugin_exclude_dependencies_from_bundle.default)(),
|
|
53
|
-
(0, import_rollup_plugin_node_externals.default)(),
|
|
54
|
-
(0, import_plugin_typescript.default)({
|
|
55
|
-
baseUrl: "src",
|
|
56
|
-
declaration: !subDir,
|
|
57
|
-
declarationMap: !subDir,
|
|
58
|
-
emitDeclarationOnly: false,
|
|
59
|
-
esModuleInterop: true,
|
|
60
|
-
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
61
|
-
outDir: subDir ? `dist/${subDir}` : "dist",
|
|
62
|
-
rootDir: "src",
|
|
63
|
-
tsconfig: "tsconfig.json"
|
|
64
|
-
})
|
|
65
|
-
]
|
|
66
|
-
})).write({
|
|
67
|
-
dir: subDir ? `dist/${subDir}` : "dist",
|
|
68
|
-
dynamicImportInCjs: true,
|
|
69
|
-
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
70
|
-
format,
|
|
71
|
-
sourcemap: true
|
|
72
|
-
});
|
|
104
|
+
await (await (0, import_rollup.rollup)(options)).write(outputOptions);
|
|
73
105
|
}
|
|
106
|
+
return errors.length + warnings.length;
|
|
74
107
|
};
|
|
75
108
|
const getInputs = async (subDir) => {
|
|
76
109
|
return (await (0, import_promises.readdir)(subDir ? `src/${subDir}` : "src", { recursive: false })).filter((file) => (file.endsWith(".ts") || file.endsWith(".tsx")) && !file.endsWith("d.ts") && !file.endsWith("spec.ts")).map((file) => subDir ? `${subDir}/${file}` : file);
|
|
77
110
|
};
|
|
78
|
-
const getInputDirs = async () => {
|
|
111
|
+
const getInputDirs = async (depth) => {
|
|
112
|
+
if (depth === 0) {
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
79
115
|
return [
|
|
80
|
-
|
|
81
|
-
...(await (0, import_promises.readdir)("src", { recursive:
|
|
116
|
+
".",
|
|
117
|
+
...(await (0, import_promises.readdir)("src", { recursive: depth > 1, withFileTypes: true })).filter((file) => file.isDirectory()).map((file) => {
|
|
82
118
|
const pathParts = file.path.split("/");
|
|
83
119
|
pathParts.shift();
|
|
84
120
|
if (pathParts.length) {
|
|
@@ -96,17 +132,16 @@ const getDistTypeFiles = async () => {
|
|
|
96
132
|
const getDistTypeMapFiles = async () => {
|
|
97
133
|
return (await (0, import_promises.readdir)("dist", { recursive: true })).filter((file) => file.endsWith("d.ts.map")).map((file) => `dist/${file}`);
|
|
98
134
|
};
|
|
99
|
-
const buildIt = async (pkg) => {
|
|
100
|
-
const inputDirs = await getInputDirs();
|
|
135
|
+
const buildIt = async (pkg, compileDepth) => {
|
|
136
|
+
const inputDirs = await getInputDirs(compileDepth);
|
|
101
137
|
const pkgType = pkg.type ?? "commonjs";
|
|
102
138
|
const esmExt = pkgType === "module" ? "js" : "mjs";
|
|
103
139
|
const cjsExt = pkgType === "commonjs" ? "js" : "cjs";
|
|
104
|
-
await Promise.all(
|
|
140
|
+
const rollupResult = inputDirs.length ? await Promise.all(
|
|
105
141
|
inputDirs.map(async (inputDir) => {
|
|
106
|
-
await rollItUp("esm", esmExt, inputDir);
|
|
107
|
-
await rollItUp("cjs", cjsExt, inputDir);
|
|
142
|
+
return await rollItUp("esm", esmExt, inputDir) + await rollItUp("cjs", cjsExt, inputDir);
|
|
108
143
|
})
|
|
109
|
-
);
|
|
144
|
+
) : [await rollItUp("esm", esmExt) + await rollItUp("cjs", cjsExt)];
|
|
110
145
|
const distTypeFiles = await getDistTypeFiles();
|
|
111
146
|
await Promise.all(
|
|
112
147
|
distTypeFiles.map(async (file) => {
|
|
@@ -119,14 +154,16 @@ const buildIt = async (pkg) => {
|
|
|
119
154
|
await (0, import_promises.copyFile)(file, file.replace("d.ts.map", "d.mts.map"));
|
|
120
155
|
})
|
|
121
156
|
);
|
|
122
|
-
return 0;
|
|
157
|
+
return rollupResult.reduce((prev, item) => prev + item, 0);
|
|
123
158
|
};
|
|
124
159
|
const packageCompile = async ({ publint = true, verbose } = { verbose: false }) => {
|
|
160
|
+
const xyConfig = await (0, import_cosmiconfig.cosmiconfig)("xy").search();
|
|
161
|
+
const compileDepth = xyConfig?.config.compile?.depth ?? 0;
|
|
125
162
|
const pkgName = process.env.npm_package_name;
|
|
126
163
|
if (verbose) {
|
|
127
164
|
console.log(import_chalk.default.green(`Compiling ${pkgName} Start`));
|
|
128
165
|
}
|
|
129
|
-
const result = await buildIt(await (0, import_loadPackageConfig.loadPackageConfig)()) + (publint ? await (0, import_publint.packagePublint)() : 0);
|
|
166
|
+
const result = await buildIt(await (0, import_loadPackageConfig.loadPackageConfig)(), compileDepth) + (publint ? await (0, import_publint.packagePublint)() : 0);
|
|
130
167
|
if (result) {
|
|
131
168
|
const input = await getInputs();
|
|
132
169
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { copyFile, readdir } from 'fs/promises'\nimport { rollup } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const input = await getInputs(subDir)\n if (input.length) {\n await (\n await rollup({\n input: input.map((file) => `./src/${file}`),\n logLevel: 'warn',\n perf: true,\n plugins: [\n commonjs(),\n externalDeps(),\n nodeExternals(),\n typescript({\n baseUrl: 'src',\n declaration: !subDir,\n declarationMap: !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: subDir ? `dist/${subDir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n }),\n ],\n })\n ).write({\n dir: subDir ? `dist/${subDir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n })\n }\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async () => {\n return [\n undefined,\n ...(await readdir('src', { recursive: true, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx) => {\n const inputDirs = await getInputDirs()\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n await Promise.all(\n inputDirs.map(async (inputDir) => {\n await rollItUp('esm', esmExt, inputDir)\n await rollItUp('cjs', cjsExt, inputDir)\n }),\n )\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return 0\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig())) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":["commonjs","externalDeps","nodeExternals","typescript","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const dir = subDir === '.' ? undefined : subDir\n const input = await getInputs(dir)\n const tsPlugIn = typescript({\n baseUrl: 'src',\n declaration: !dir || !subDir,\n declarationMap: !dir || !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: dir ? `dist/${dir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n })\n\n const errors: RollupLog[] = []\n const warnings: RollupLog[] = []\n const infos: RollupLog[] = []\n const debugs: RollupLog[] = []\n\n const options: RollupOptions = {\n input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],\n logLevel: 'warn',\n onLog: (level, log, defaultHandler) => {\n if (log.code === 'EMPTY_BUNDLE') {\n return defaultHandler(level, log)\n }\n switch (level) {\n case 'warn': {\n warnings.push(log)\n console.warn(chalk.yellow(JSON.stringify(log, null, 2)))\n break\n }\n case 'info': {\n infos.push(log)\n console.info(chalk.white(JSON.stringify(log, null, 2)))\n break\n }\n case 'debug': {\n debugs.push(log)\n console.debug(chalk.gray(JSON.stringify(log, null, 2)))\n break\n }\n default: {\n errors.push(log)\n console.error(chalk.red(JSON.stringify(log, null, 2)))\n break\n }\n }\n console.log(`Log: ${level}: ${log.message}`)\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],\n }\n\n const outputOptions: OutputOptions = {\n dir: dir ? `dist/${dir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n }\n\n if (input.length) {\n await (await rollup(options)).write(outputOptions)\n }\n\n return errors.length + warnings.length\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async (depth: number) => {\n if (depth === 0) {\n return []\n }\n return [\n '.',\n ...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {\n const inputDirs = await getInputDirs(compileDepth)\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n const rollupResult = inputDirs.length\n ? await Promise.all(\n inputDirs.map(async (inputDir) => {\n return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))\n }),\n )\n : [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return rollupResult.reduce((prev, item) => prev + item, 0)\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const xyConfig = await cosmiconfig('xy').search()\n const compileDepth: number = xyConfig?.config.compile?.depth ?? 0\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":["typescript","chalk","commonjs","externalDeps","nodeExternals"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import commonjs from "@rollup/plugin-commonjs";
|
|
2
2
|
import typescript from "@rollup/plugin-typescript";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
+
import { cosmiconfig } from "cosmiconfig";
|
|
4
5
|
import { copyFile, readdir } from "fs/promises";
|
|
5
6
|
import { rollup } from "rollup";
|
|
6
7
|
import externalDeps from "rollup-plugin-exclude-dependencies-from-bundle";
|
|
@@ -8,44 +9,79 @@ import nodeExternals from "rollup-plugin-node-externals";
|
|
|
8
9
|
import { loadPackageConfig } from "../../loadPackageConfig";
|
|
9
10
|
import { packagePublint } from "./publint";
|
|
10
11
|
const rollItUp = async (format, ext, subDir) => {
|
|
11
|
-
const
|
|
12
|
+
const dir = subDir === "." ? void 0 : subDir;
|
|
13
|
+
const input = await getInputs(dir);
|
|
14
|
+
const tsPlugIn = typescript({
|
|
15
|
+
baseUrl: "src",
|
|
16
|
+
declaration: !dir || !subDir,
|
|
17
|
+
declarationMap: !dir || !subDir,
|
|
18
|
+
emitDeclarationOnly: false,
|
|
19
|
+
esModuleInterop: true,
|
|
20
|
+
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
21
|
+
outDir: dir ? `dist/${dir}` : "dist",
|
|
22
|
+
rootDir: "src",
|
|
23
|
+
tsconfig: "tsconfig.json"
|
|
24
|
+
});
|
|
25
|
+
const errors = [];
|
|
26
|
+
const warnings = [];
|
|
27
|
+
const infos = [];
|
|
28
|
+
const debugs = [];
|
|
29
|
+
const options = {
|
|
30
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ["./src/index.ts"],
|
|
31
|
+
logLevel: "warn",
|
|
32
|
+
onLog: (level, log, defaultHandler) => {
|
|
33
|
+
if (log.code === "EMPTY_BUNDLE") {
|
|
34
|
+
return defaultHandler(level, log);
|
|
35
|
+
}
|
|
36
|
+
switch (level) {
|
|
37
|
+
case "warn": {
|
|
38
|
+
warnings.push(log);
|
|
39
|
+
console.warn(chalk.yellow(JSON.stringify(log, null, 2)));
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case "info": {
|
|
43
|
+
infos.push(log);
|
|
44
|
+
console.info(chalk.white(JSON.stringify(log, null, 2)));
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case "debug": {
|
|
48
|
+
debugs.push(log);
|
|
49
|
+
console.debug(chalk.gray(JSON.stringify(log, null, 2)));
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
default: {
|
|
53
|
+
errors.push(log);
|
|
54
|
+
console.error(chalk.red(JSON.stringify(log, null, 2)));
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
console.log(`Log: ${level}: ${log.message}`);
|
|
59
|
+
return defaultHandler(level, log);
|
|
60
|
+
},
|
|
61
|
+
plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn]
|
|
62
|
+
};
|
|
63
|
+
const outputOptions = {
|
|
64
|
+
dir: dir ? `dist/${dir}` : "dist",
|
|
65
|
+
dynamicImportInCjs: true,
|
|
66
|
+
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
67
|
+
format,
|
|
68
|
+
sourcemap: true
|
|
69
|
+
};
|
|
12
70
|
if (input.length) {
|
|
13
|
-
await (await rollup(
|
|
14
|
-
input: input.map((file) => `./src/${file}`),
|
|
15
|
-
logLevel: "warn",
|
|
16
|
-
perf: true,
|
|
17
|
-
plugins: [
|
|
18
|
-
commonjs(),
|
|
19
|
-
externalDeps(),
|
|
20
|
-
nodeExternals(),
|
|
21
|
-
typescript({
|
|
22
|
-
baseUrl: "src",
|
|
23
|
-
declaration: !subDir,
|
|
24
|
-
declarationMap: !subDir,
|
|
25
|
-
emitDeclarationOnly: false,
|
|
26
|
-
esModuleInterop: true,
|
|
27
|
-
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
28
|
-
outDir: subDir ? `dist/${subDir}` : "dist",
|
|
29
|
-
rootDir: "src",
|
|
30
|
-
tsconfig: "tsconfig.json"
|
|
31
|
-
})
|
|
32
|
-
]
|
|
33
|
-
})).write({
|
|
34
|
-
dir: subDir ? `dist/${subDir}` : "dist",
|
|
35
|
-
dynamicImportInCjs: true,
|
|
36
|
-
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
37
|
-
format,
|
|
38
|
-
sourcemap: true
|
|
39
|
-
});
|
|
71
|
+
await (await rollup(options)).write(outputOptions);
|
|
40
72
|
}
|
|
73
|
+
return errors.length + warnings.length;
|
|
41
74
|
};
|
|
42
75
|
const getInputs = async (subDir) => {
|
|
43
76
|
return (await readdir(subDir ? `src/${subDir}` : "src", { recursive: false })).filter((file) => (file.endsWith(".ts") || file.endsWith(".tsx")) && !file.endsWith("d.ts") && !file.endsWith("spec.ts")).map((file) => subDir ? `${subDir}/${file}` : file);
|
|
44
77
|
};
|
|
45
|
-
const getInputDirs = async () => {
|
|
78
|
+
const getInputDirs = async (depth) => {
|
|
79
|
+
if (depth === 0) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
46
82
|
return [
|
|
47
|
-
|
|
48
|
-
...(await readdir("src", { recursive:
|
|
83
|
+
".",
|
|
84
|
+
...(await readdir("src", { recursive: depth > 1, withFileTypes: true })).filter((file) => file.isDirectory()).map((file) => {
|
|
49
85
|
const pathParts = file.path.split("/");
|
|
50
86
|
pathParts.shift();
|
|
51
87
|
if (pathParts.length) {
|
|
@@ -63,17 +99,16 @@ const getDistTypeFiles = async () => {
|
|
|
63
99
|
const getDistTypeMapFiles = async () => {
|
|
64
100
|
return (await readdir("dist", { recursive: true })).filter((file) => file.endsWith("d.ts.map")).map((file) => `dist/${file}`);
|
|
65
101
|
};
|
|
66
|
-
const buildIt = async (pkg) => {
|
|
67
|
-
const inputDirs = await getInputDirs();
|
|
102
|
+
const buildIt = async (pkg, compileDepth) => {
|
|
103
|
+
const inputDirs = await getInputDirs(compileDepth);
|
|
68
104
|
const pkgType = pkg.type ?? "commonjs";
|
|
69
105
|
const esmExt = pkgType === "module" ? "js" : "mjs";
|
|
70
106
|
const cjsExt = pkgType === "commonjs" ? "js" : "cjs";
|
|
71
|
-
await Promise.all(
|
|
107
|
+
const rollupResult = inputDirs.length ? await Promise.all(
|
|
72
108
|
inputDirs.map(async (inputDir) => {
|
|
73
|
-
await rollItUp("esm", esmExt, inputDir);
|
|
74
|
-
await rollItUp("cjs", cjsExt, inputDir);
|
|
109
|
+
return await rollItUp("esm", esmExt, inputDir) + await rollItUp("cjs", cjsExt, inputDir);
|
|
75
110
|
})
|
|
76
|
-
);
|
|
111
|
+
) : [await rollItUp("esm", esmExt) + await rollItUp("cjs", cjsExt)];
|
|
77
112
|
const distTypeFiles = await getDistTypeFiles();
|
|
78
113
|
await Promise.all(
|
|
79
114
|
distTypeFiles.map(async (file) => {
|
|
@@ -86,14 +121,16 @@ const buildIt = async (pkg) => {
|
|
|
86
121
|
await copyFile(file, file.replace("d.ts.map", "d.mts.map"));
|
|
87
122
|
})
|
|
88
123
|
);
|
|
89
|
-
return 0;
|
|
124
|
+
return rollupResult.reduce((prev, item) => prev + item, 0);
|
|
90
125
|
};
|
|
91
126
|
const packageCompile = async ({ publint = true, verbose } = { verbose: false }) => {
|
|
127
|
+
const xyConfig = await cosmiconfig("xy").search();
|
|
128
|
+
const compileDepth = xyConfig?.config.compile?.depth ?? 0;
|
|
92
129
|
const pkgName = process.env.npm_package_name;
|
|
93
130
|
if (verbose) {
|
|
94
131
|
console.log(chalk.green(`Compiling ${pkgName} Start`));
|
|
95
132
|
}
|
|
96
|
-
const result = await buildIt(await loadPackageConfig()) + (publint ? await packagePublint() : 0);
|
|
133
|
+
const result = await buildIt(await loadPackageConfig(), compileDepth) + (publint ? await packagePublint() : 0);
|
|
97
134
|
if (result) {
|
|
98
135
|
const input = await getInputs();
|
|
99
136
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { copyFile, readdir } from 'fs/promises'\nimport { rollup } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const dir = subDir === '.' ? undefined : subDir\n const input = await getInputs(dir)\n const tsPlugIn = typescript({\n baseUrl: 'src',\n declaration: !dir || !subDir,\n declarationMap: !dir || !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: dir ? `dist/${dir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n })\n\n const errors: RollupLog[] = []\n const warnings: RollupLog[] = []\n const infos: RollupLog[] = []\n const debugs: RollupLog[] = []\n\n const options: RollupOptions = {\n input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],\n logLevel: 'warn',\n onLog: (level, log, defaultHandler) => {\n if (log.code === 'EMPTY_BUNDLE') {\n return defaultHandler(level, log)\n }\n switch (level) {\n case 'warn': {\n warnings.push(log)\n console.warn(chalk.yellow(JSON.stringify(log, null, 2)))\n break\n }\n case 'info': {\n infos.push(log)\n console.info(chalk.white(JSON.stringify(log, null, 2)))\n break\n }\n case 'debug': {\n debugs.push(log)\n console.debug(chalk.gray(JSON.stringify(log, null, 2)))\n break\n }\n default: {\n errors.push(log)\n console.error(chalk.red(JSON.stringify(log, null, 2)))\n break\n }\n }\n console.log(`Log: ${level}: ${log.message}`)\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],\n }\n\n const outputOptions: OutputOptions = {\n dir: dir ? `dist/${dir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n }\n\n if (input.length) {\n await (await rollup(options)).write(outputOptions)\n }\n\n return errors.length + warnings.length\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async (depth: number) => {\n if (depth === 0) {\n return []\n }\n return [\n '.',\n ...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {\n const inputDirs = await getInputDirs(compileDepth)\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n const rollupResult = inputDirs.length\n ? await Promise.all(\n inputDirs.map(async (inputDir) => {\n return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))\n }),\n )\n : [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return rollupResult.reduce((prev, item) => prev + item, 0)\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const xyConfig = await cosmiconfig('xy').search()\n const compileDepth: number = xyConfig?.config.compile?.depth ?? 0\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -65,8 +65,9 @@
|
|
|
65
65
|
"@types/yargs": "^17.0.24",
|
|
66
66
|
"@typescript-eslint/eslint-plugin": "^6.7.0",
|
|
67
67
|
"@typescript-eslint/parser": "^6.7.0",
|
|
68
|
-
"@xylabs/tsconfig": "~3.0.
|
|
68
|
+
"@xylabs/tsconfig": "~3.0.5",
|
|
69
69
|
"chalk": "^4.1.2",
|
|
70
|
+
"cosmiconfig": "^8.3.6",
|
|
70
71
|
"cpy": "^8.1.2",
|
|
71
72
|
"depcheck": "^1.4.6",
|
|
72
73
|
"eslint": "^8.49.0",
|
|
@@ -108,8 +109,8 @@
|
|
|
108
109
|
"@types/license-checker": "^25.0.4",
|
|
109
110
|
"@types/lodash": "^4.14.198",
|
|
110
111
|
"@types/parse-git-config": "^3.0.1",
|
|
111
|
-
"@xylabs/eslint-config": "^3.0.
|
|
112
|
-
"@xylabs/tsconfig": "^3.0.
|
|
112
|
+
"@xylabs/eslint-config": "^3.0.5",
|
|
113
|
+
"@xylabs/tsconfig": "^3.0.5",
|
|
113
114
|
"publint": "^0.2.2",
|
|
114
115
|
"tsup": "^7.2.0",
|
|
115
116
|
"typescript": "^5.2.2"
|
|
@@ -167,5 +168,5 @@
|
|
|
167
168
|
"package-clean": "echo Not cleaning..."
|
|
168
169
|
},
|
|
169
170
|
"sideEffects": false,
|
|
170
|
-
"version": "3.0.
|
|
171
|
+
"version": "3.0.5"
|
|
171
172
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import commonjs from '@rollup/plugin-commonjs'
|
|
2
2
|
import typescript from '@rollup/plugin-typescript'
|
|
3
3
|
import chalk from 'chalk'
|
|
4
|
+
import { cosmiconfig } from 'cosmiconfig'
|
|
4
5
|
import { copyFile, readdir } from 'fs/promises'
|
|
5
|
-
import { rollup } from 'rollup'
|
|
6
|
+
import { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'
|
|
6
7
|
import externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'
|
|
7
8
|
import nodeExternals from 'rollup-plugin-node-externals'
|
|
8
9
|
|
|
@@ -15,38 +16,73 @@ export interface CompilePackageParams {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {
|
|
18
|
-
const
|
|
19
|
+
const dir = subDir === '.' ? undefined : subDir
|
|
20
|
+
const input = await getInputs(dir)
|
|
21
|
+
const tsPlugIn = typescript({
|
|
22
|
+
baseUrl: 'src',
|
|
23
|
+
declaration: !dir || !subDir,
|
|
24
|
+
declarationMap: !dir || !subDir,
|
|
25
|
+
emitDeclarationOnly: false,
|
|
26
|
+
esModuleInterop: true,
|
|
27
|
+
exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],
|
|
28
|
+
outDir: dir ? `dist/${dir}` : 'dist',
|
|
29
|
+
rootDir: 'src',
|
|
30
|
+
tsconfig: 'tsconfig.json',
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
const errors: RollupLog[] = []
|
|
34
|
+
const warnings: RollupLog[] = []
|
|
35
|
+
const infos: RollupLog[] = []
|
|
36
|
+
const debugs: RollupLog[] = []
|
|
37
|
+
|
|
38
|
+
const options: RollupOptions = {
|
|
39
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],
|
|
40
|
+
logLevel: 'warn',
|
|
41
|
+
onLog: (level, log, defaultHandler) => {
|
|
42
|
+
if (log.code === 'EMPTY_BUNDLE') {
|
|
43
|
+
return defaultHandler(level, log)
|
|
44
|
+
}
|
|
45
|
+
switch (level) {
|
|
46
|
+
case 'warn': {
|
|
47
|
+
warnings.push(log)
|
|
48
|
+
console.warn(chalk.yellow(JSON.stringify(log, null, 2)))
|
|
49
|
+
break
|
|
50
|
+
}
|
|
51
|
+
case 'info': {
|
|
52
|
+
infos.push(log)
|
|
53
|
+
console.info(chalk.white(JSON.stringify(log, null, 2)))
|
|
54
|
+
break
|
|
55
|
+
}
|
|
56
|
+
case 'debug': {
|
|
57
|
+
debugs.push(log)
|
|
58
|
+
console.debug(chalk.gray(JSON.stringify(log, null, 2)))
|
|
59
|
+
break
|
|
60
|
+
}
|
|
61
|
+
default: {
|
|
62
|
+
errors.push(log)
|
|
63
|
+
console.error(chalk.red(JSON.stringify(log, null, 2)))
|
|
64
|
+
break
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
console.log(`Log: ${level}: ${log.message}`)
|
|
68
|
+
return defaultHandler(level, log)
|
|
69
|
+
},
|
|
70
|
+
plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const outputOptions: OutputOptions = {
|
|
74
|
+
dir: dir ? `dist/${dir}` : 'dist',
|
|
75
|
+
dynamicImportInCjs: true,
|
|
76
|
+
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
77
|
+
format,
|
|
78
|
+
sourcemap: true,
|
|
79
|
+
}
|
|
80
|
+
|
|
19
81
|
if (input.length) {
|
|
20
|
-
await (
|
|
21
|
-
await rollup({
|
|
22
|
-
input: input.map((file) => `./src/${file}`),
|
|
23
|
-
logLevel: 'warn',
|
|
24
|
-
perf: true,
|
|
25
|
-
plugins: [
|
|
26
|
-
commonjs(),
|
|
27
|
-
externalDeps(),
|
|
28
|
-
nodeExternals(),
|
|
29
|
-
typescript({
|
|
30
|
-
baseUrl: 'src',
|
|
31
|
-
declaration: !subDir,
|
|
32
|
-
declarationMap: !subDir,
|
|
33
|
-
emitDeclarationOnly: false,
|
|
34
|
-
esModuleInterop: true,
|
|
35
|
-
exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],
|
|
36
|
-
outDir: subDir ? `dist/${subDir}` : 'dist',
|
|
37
|
-
rootDir: 'src',
|
|
38
|
-
tsconfig: 'tsconfig.json',
|
|
39
|
-
}),
|
|
40
|
-
],
|
|
41
|
-
})
|
|
42
|
-
).write({
|
|
43
|
-
dir: subDir ? `dist/${subDir}` : 'dist',
|
|
44
|
-
dynamicImportInCjs: true,
|
|
45
|
-
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
46
|
-
format,
|
|
47
|
-
sourcemap: true,
|
|
48
|
-
})
|
|
82
|
+
await (await rollup(options)).write(outputOptions)
|
|
49
83
|
}
|
|
84
|
+
|
|
85
|
+
return errors.length + warnings.length
|
|
50
86
|
}
|
|
51
87
|
|
|
52
88
|
const getInputs = async (subDir?: string) => {
|
|
@@ -55,10 +91,13 @@ const getInputs = async (subDir?: string) => {
|
|
|
55
91
|
.map((file) => (subDir ? `${subDir}/${file}` : file))
|
|
56
92
|
}
|
|
57
93
|
|
|
58
|
-
const getInputDirs = async () => {
|
|
94
|
+
const getInputDirs = async (depth: number) => {
|
|
95
|
+
if (depth === 0) {
|
|
96
|
+
return []
|
|
97
|
+
}
|
|
59
98
|
return [
|
|
60
|
-
|
|
61
|
-
...(await readdir('src', { recursive:
|
|
99
|
+
'.',
|
|
100
|
+
...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))
|
|
62
101
|
.filter((file) => file.isDirectory())
|
|
63
102
|
.map((file) => {
|
|
64
103
|
const pathParts = file.path.split('/')
|
|
@@ -81,20 +120,21 @@ const getDistTypeMapFiles = async () => {
|
|
|
81
120
|
return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)
|
|
82
121
|
}
|
|
83
122
|
|
|
84
|
-
const buildIt = async (pkg: PackageJsonEx) => {
|
|
85
|
-
const inputDirs = await getInputDirs()
|
|
123
|
+
const buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {
|
|
124
|
+
const inputDirs = await getInputDirs(compileDepth)
|
|
86
125
|
|
|
87
126
|
const pkgType = pkg.type ?? 'commonjs'
|
|
88
127
|
|
|
89
128
|
const esmExt = pkgType === 'module' ? 'js' : 'mjs'
|
|
90
129
|
const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'
|
|
91
130
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
131
|
+
const rollupResult = inputDirs.length
|
|
132
|
+
? await Promise.all(
|
|
133
|
+
inputDirs.map(async (inputDir) => {
|
|
134
|
+
return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))
|
|
135
|
+
}),
|
|
136
|
+
)
|
|
137
|
+
: [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]
|
|
98
138
|
|
|
99
139
|
//hybrid packages want two copies of the types
|
|
100
140
|
const distTypeFiles = await getDistTypeFiles()
|
|
@@ -111,15 +151,17 @@ const buildIt = async (pkg: PackageJsonEx) => {
|
|
|
111
151
|
}),
|
|
112
152
|
)
|
|
113
153
|
|
|
114
|
-
return 0
|
|
154
|
+
return rollupResult.reduce((prev, item) => prev + item, 0)
|
|
115
155
|
}
|
|
116
156
|
|
|
117
157
|
export const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {
|
|
158
|
+
const xyConfig = await cosmiconfig('xy').search()
|
|
159
|
+
const compileDepth: number = xyConfig?.config.compile?.depth ?? 0
|
|
118
160
|
const pkgName = process.env.npm_package_name
|
|
119
161
|
if (verbose) {
|
|
120
162
|
console.log(chalk.green(`Compiling ${pkgName} Start`))
|
|
121
163
|
}
|
|
122
|
-
const result = (await buildIt(await loadPackageConfig())) + (publint ? await packagePublint() : 0)
|
|
164
|
+
const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)
|
|
123
165
|
if (result) {
|
|
124
166
|
const input = await getInputs()
|
|
125
167
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)
|