@checkdigit/typescript-config 5.1.1-PR.49-ae5b → 5.1.1-PR.49-8f68
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.
- package/bin/builder.mjs +34 -7
- package/package.json +1 -1
package/bin/builder.mjs
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
// src/builder/index.mts
|
3
|
-
import { strict as
|
3
|
+
import { strict as assert3 } from "node:assert";
|
4
4
|
import { promises as fs2 } from "node:fs";
|
5
5
|
import path2 from "node:path";
|
6
6
|
import { parseArgs } from "node:util";
|
@@ -71,7 +71,8 @@ async function builder_default({
|
|
71
71
|
outFile: outFile2,
|
72
72
|
external: external2 = [],
|
73
73
|
minify: minify2 = false,
|
74
|
-
sourceMap: sourceMap2
|
74
|
+
sourceMap: sourceMap2,
|
75
|
+
workingDirectory = process.cwd()
|
75
76
|
}) {
|
76
77
|
const messages = [];
|
77
78
|
assert.ok(
|
@@ -143,6 +144,7 @@ async function builder_default({
|
|
143
144
|
entryPoints: productionSourceFiles,
|
144
145
|
bundle: true,
|
145
146
|
minify: minify2,
|
147
|
+
absWorkingDir: workingDirectory,
|
146
148
|
platform: "node",
|
147
149
|
format: type2 === "module" ? "esm" : "cjs",
|
148
150
|
treeShaking: type2 === "module",
|
@@ -185,8 +187,30 @@ async function builder_default({
|
|
185
187
|
}
|
186
188
|
|
187
189
|
// src/builder/analyze.mts
|
190
|
+
import { strict as assert2 } from "node:assert";
|
188
191
|
function analyze(metafile) {
|
189
|
-
|
192
|
+
const source = new Set(Object.keys(metafile.inputs).filter((key) => !key.startsWith("node_modules")));
|
193
|
+
const modules = new Set(Object.keys(metafile.inputs).filter((key) => key.startsWith("node_modules")));
|
194
|
+
const [output] = Object.entries(metafile.outputs);
|
195
|
+
assert2.ok(output !== void 0);
|
196
|
+
const [, bundle] = output;
|
197
|
+
const sourceBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
|
198
|
+
if (source.has(file)) {
|
199
|
+
return bytes + value.bytesInOutput;
|
200
|
+
}
|
201
|
+
return bytes;
|
202
|
+
}, 0);
|
203
|
+
const moduleBytes = Object.entries(bundle.inputs).reduce((bytes, [file, value]) => {
|
204
|
+
if (modules.has(file)) {
|
205
|
+
return bytes + value.bytesInOutput;
|
206
|
+
}
|
207
|
+
return bytes;
|
208
|
+
}, 0);
|
209
|
+
return {
|
210
|
+
sourceBytes,
|
211
|
+
moduleBytes,
|
212
|
+
totalBytes: bundle.bytes
|
213
|
+
};
|
190
214
|
}
|
191
215
|
|
192
216
|
// src/builder/index.mts
|
@@ -204,9 +228,9 @@ var {
|
|
204
228
|
sourceMap: { type: "boolean", short: "s", default: false }
|
205
229
|
}
|
206
230
|
});
|
207
|
-
|
208
|
-
|
209
|
-
|
231
|
+
assert3.ok(type === "module" || type === "commonjs" || type === "types", "type must be types, module or commonjs");
|
232
|
+
assert3.ok(inDir !== void 0, "inDir is required");
|
233
|
+
assert3.ok(outDir !== void 0, "outDir is required");
|
210
234
|
var buildResult = await builder_default({
|
211
235
|
type,
|
212
236
|
inDir: path2.join(process.cwd(), inDir),
|
@@ -224,6 +248,9 @@ await Promise.all(
|
|
224
248
|
})
|
225
249
|
);
|
226
250
|
if (buildResult.metafile !== void 0) {
|
227
|
-
analyze(buildResult.metafile);
|
251
|
+
const analysis = analyze(buildResult.metafile);
|
228
252
|
await fs2.writeFile(path2.join(outDir, "metafile.json"), JSON.stringify(buildResult.metafile, void 0, 2));
|
253
|
+
console.log(
|
254
|
+
`${outFile}: src ${analysis.sourceBytes}, node_modules ${analysis.moduleBytes}, total ${analysis.totalBytes}`
|
255
|
+
);
|
229
256
|
}
|
package/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"@checkdigit/typescript-config","version":"5.1.1-PR.49-
|
1
|
+
{"name":"@checkdigit/typescript-config","version":"5.1.1-PR.49-8f68","description":"Check Digit standard Typescript configuration","prettier":"@checkdigit/prettier-config","engines":{"node":">=18"},"bin":{"builder":"./bin/builder.mjs"},"peerDependencies":{"@types/node":">=18","esbuild":"0.19.5","typescript":">=5.2.2 <5.3"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/typescript-config.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/typescript-config/issues"},"homepage":"https://github.com/checkdigit/typescript-config#readme","scripts":{"prepublishOnly":"npm run build-builder","lint:fix":"eslint --ignore-path .gitignore . --fix","lint":"eslint --max-warnings 0 --ignore-path .gitignore .","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","build-builder":"esbuild src/builder/index.mts --bundle --platform=node --format=esm --external:typescript --external:esbuild --outfile=build-builder/builder.mjs && mkdir -p bin && { echo '#!/usr/bin/env node'; cat build-builder/builder.mjs; } > bin/builder.mjs && chmod +x bin/builder.mjs","build-types":"rimraf build-types && bin/builder.mjs --type=types --outDir=build-types","build-cjs":"rimraf build-cjs && bin/builder.mjs --type=commonjs --outDir=build-cjs","build-cjs-bundle":"rimraf build-cjs-bundle && bin/builder.mjs --type=commonjs --entryPoint=test/index.test.ts --outDir=build-cjs-bundle --outFile=test/index.test.cjs --sourceMap","build-cjs-bundle-minify":"rimraf build-cjs-bundle-minify && bin/builder.mjs --type=commonjs --entryPoint=test/index.test.ts --outDir=build-cjs-bundle-minify --outFile=test/index.test.cjs --minify --sourceMap","build-cjs-bundle-no-external":"rimraf build-cjs-bundle-no-external && bin/builder.mjs --type=commonjs --external=./node_modules/* --entryPoint=test/index.test.ts --outDir=build-cjs-bundle-no-external --outFile=test/index.test.cjs","build-esm":"rimraf build-esm && bin/builder.mjs --type=module --outDir=build-esm","build-esm-bundle":"rimraf build-esm-bundle && bin/builder.mjs --type=module --outDir=build-esm-bundle --entryPoint=test/index.test.ts --outFile=test/index.test.mjs","build-esm-bundle-minify":"rimraf build-esm-bundle-minify && bin/builder.mjs --type=module --minify --outDir=build-esm-bundle-minify --entryPoint=test/index.test.ts --outFile=test/index.test.mjs","build-esm-bundle-no-external":"rimraf build-esm-bundle-no-external && bin/builder.mjs --type=module --external=./node_modules/* --outDir=build-esm-bundle-no-external --entryPoint=test/index.test.ts --outFile=test/index.test.mjs --minify","test-jest-esm":"NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage=false src/*.mts src/*/*.mts src/*/*/*.mts","test-jest-cjs":"jest --coverage=false src/*.ts src/*/*.ts src/*/*/*.ts","test-cjs":"node --test build-cjs/test/index.test.cjs","test-cjs-bundle":"node --test build-cjs-bundle/test/index.test.cjs","test-cjs-bundle-minify":"node --test build-cjs-bundle-minify/test/index.test.cjs","test-cjs-bundle-no-external":"node --test build-cjs-bundle-no-external/test/index.test.cjs","test-esm":"node --test build-esm/test/index.test.mjs","test-esm-bundle":"node --test build-esm-bundle/test/index.test.mjs","test-esm-bundle-minify":"node --test build-esm-bundle-minify/test/index.test.mjs","test-esm-bundle-no-external":"node --test build-esm-bundle-no-external/test/index.test.mjs","ci:test":"npm run test-jest-cjs && npm run test-jest-esm && npm run test-cjs && npm run test-cjs-bundle && npm run test-cjs-bundle-no-external && npm run test-esm && npm run test-esm-bundle && npm run test-esm-bundle-no-external","ci:compile":"tsc --noEmit && npm run build-builder && npm run build-types && npm run build-cjs && npm run build-cjs-bundle && npm run build-cjs-bundle-minify && npm run build-cjs-bundle-no-external && npm run build-esm && npm run build-esm-bundle && npm run build-esm-bundle-minify && npm run build-esm-bundle-no-external","ci:lint":"npm run lint","ci:style":"npm run prettier"},"devDependencies":{"@apidevtools/json-schema-ref-parser":"^11.1.0","@checkdigit/prettier-config":"^4.1.0","@types/debug":"^4.1.10","@types/jest":"^29.5.7","@types/uuid":"^9.0.6","@typescript-eslint/eslint-plugin":"^6.9.1","@typescript-eslint/parser":"^6.9.1","debug":"^4.3.4","eslint":"^8.52.0","eslint-config-prettier":"^9.0.0","get-port":"^7.0.0","got":"^11.8.6","jest":"^29.7.0","node-fetch":"^3.3.2","rimraf":"^5.0.5","ts-jest":"^29.1.1","uuid":"^9.0.1"},"eslintConfig":{"parser":"@typescript-eslint/parser","plugins":["@typescript-eslint"],"parserOptions":{"project":"./tsconfig.json"},"extends":["eslint:all","plugin:@typescript-eslint/recommended","plugin:@typescript-eslint/recommended-requiring-type-checking","plugin:@typescript-eslint/strict","prettier"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"error","capitalized-comments":"off","one-var":"off","sort-keys":"off","sort-imports":"off","max-lines":["error",{"max":500,"skipBlankLines":true,"skipComments":true}],"func-style":["error","declaration",{"allowArrowFunctions":true}],"no-magic-numbers":["error",{"ignore":[0,1,2]}],"no-undefined":"off","no-ternary":"off"},"overrides":[{"files":["*.spec.mts","*.test.mts","*.spec.ts","*.test.ts"],"rules":{"@typescript-eslint/non-nullable-type-assertion-style":"off","@typescript-eslint/ban-types":"off","@typescript-eslint/require-await":"off","@typescript-eslint/consistent-type-definitions":"off","@typescript-eslint/ban-ts-comment":"off","@typescript-eslint/no-unnecessary-condition":"off","@typescript-eslint/consistent-indexed-object-style":"off","@typescript-eslint/no-unused-vars":"off","@typescript-eslint/no-unsafe-member-access":"off","line-comment-position":"off","no-inline-comments":"off","no-param-reassign":"off","id-length":"off","no-magic-numbers":"off","func-names":"off","no-duplicate-imports":"off","symbol-description":"off","no-invalid-this":"off","max-lines-per-function":"off","max-lines":"off","max-statements":"off","no-await-in-loop":"off"}}]},"jest":{"moduleFileExtensions":["js","mjs","cjs","ts","mts","json","node"],"extensionsToTreatAsEsm":[".mts"],"transform":{"^.+\\.mts$":["ts-jest",{"isolatedModules":true,"diagnostics":false,"useESM":true}],"^.+\\.ts$":["ts-jest",{"isolatedModules":true,"diagnostics":false,"useESM":false}]},"collectCoverageFrom":["<rootDir>/src/**"],"testMatch":["<rootDir>/src/**/*.spec.ts","<rootDir>/src/**/*.spec.mts"]},"files":["bin","tsconfig.json","SECURITY.md"]}
|