create-ts-prod/index.js

37 lines
881 B
JavaScript
Raw Normal View History

2023-07-19 15:38:42 +03:00
#!/usr/bin/env node
const config = {
packages: {
dev: ["@types/node", "ts-node", "typescript"],
dep: ["dotenv"],
},
};
const spawn = require("cross-spawn");
const fs = require("fs");
const path = require("path");
//check if package.json exists
if (!fs.existsSync("package.json")) {
spawn.sync("npm", ["init", "-y"], { stdio: "inherit" });
}
//install packages
spawn.sync("npm", ["i", "-D", ...config.dev.packages]);
spawn.sync("npm", ["i", ...config.dep.packages]);
//copy files
fs.cpSync(path.join(__dirname, "files"), "./", { recursive: true });
//modify package.json
const package = JSON.parse(fs.readFileSync("package.json", "utf-8"));
package.main = "dist/app.js";
package.scripts.build = "tsc";
package.scripts.dev = "ts-node src/app.ts";
package.scripts.start = "node dist/app.js";
fs.writeFileSync("package.json", JSON.stringify(package, null, 2));