Skip to content

Commit f24db28

Browse files
committed
Adds basic build setup
1 parent 01a2dd3 commit f24db28

File tree

5 files changed

+1064
-0
lines changed

5 files changed

+1064
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
dist
3+
.vscode

package.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "tsbuild-node",
3+
"version": "1.0.0",
4+
"main": "./dist/index.js",
5+
"bin": {
6+
"tsbuild-node": "./dist/index.js"
7+
},
8+
"license": "MIT",
9+
"scripts": {
10+
"build": "tsc"
11+
},
12+
"devDependencies": {
13+
"@types/node": "^14.6.4",
14+
"typescript": "^4.0.2"
15+
},
16+
"dependencies": {
17+
"cpy": "^8.1.1",
18+
"esbuild": "^0.6.32"
19+
}
20+
}

src/index.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { build } from "esbuild";
2+
import glob from "globby";
3+
import cpy from "cpy";
4+
import path from "path";
5+
6+
async function buildSourceFiles(srcDir: string, destDir: string) {
7+
const sourceFiles = await glob(`${srcDir}/**/*.{js,ts,tsx,jsx}`);
8+
return await build({
9+
entryPoints: sourceFiles,
10+
minify: false,
11+
sourcemap: "inline",
12+
target: "es2015",
13+
bundle: false,
14+
format: "cjs",
15+
platform: "node",
16+
outdir: destDir,
17+
});
18+
}
19+
20+
async function copyNonSourceFiles(srcDir: string, destDir: string) {
21+
const relativeDestDir = path.relative(srcDir, destDir);
22+
return await cpy(["**", `!**/*.{ts,js,tsx,jsx}`], relativeDestDir, {
23+
cwd: srcDir,
24+
parents: true,
25+
});
26+
}
27+
28+
async function main() {
29+
const src = "src";
30+
const dest = "build";
31+
await Promise.all([
32+
buildSourceFiles(src, dest),
33+
copyNonSourceFiles(src, dest),
34+
]);
35+
}
36+
37+
console.time("Built in");
38+
39+
main()
40+
.then(() => {
41+
console.timeEnd("Built in");
42+
process.exit(0);
43+
})
44+
.catch((err) => {
45+
console.error(err);
46+
process.exit(1);
47+
});

tsconfig.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es6",
4+
"module": "commonjs",
5+
"declaration": true,
6+
"sourceMap": true,
7+
"outDir": "./dist",
8+
"strict": true,
9+
"moduleResolution": "node",
10+
"esModuleInterop": true,
11+
"skipLibCheck": true,
12+
"forceConsistentCasingInFileNames": true
13+
},
14+
"include": ["src"]
15+
}

0 commit comments

Comments
 (0)