mirror of
https://github.com/artegoser/create-ts-prod.git
synced 2024-10-05 06:36:05 +03:00
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const config = {
|
|
packages: {
|
|
dev: [
|
|
"@types/node",
|
|
"ts-node",
|
|
"typescript",
|
|
"eslint",
|
|
"@typescript-eslint/parser",
|
|
"@typescript-eslint/eslint-plugin",
|
|
],
|
|
dep: ["dotenv"],
|
|
},
|
|
};
|
|
|
|
const spawn = require("cross-spawn");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
//check if package.json exists
|
|
console.log("Check if package.json exists");
|
|
if (!fs.existsSync("package.json")) {
|
|
console.log("package.json does not exist, creating...");
|
|
spawn.sync("npm", ["init", "-y"], { stdio: "inherit" });
|
|
} else {
|
|
console.log("package.json exists, skipping...");
|
|
}
|
|
|
|
//install packages
|
|
console.log("Install packages");
|
|
spawn.sync("npm", ["i", "-D", ...config.packages.dev], { stdio: "inherit" });
|
|
spawn.sync("npm", ["i", ...config.packages.dep], { stdio: "inherit" });
|
|
console.log("Packages installed");
|
|
|
|
//copy files
|
|
|
|
console.log("Copy files");
|
|
fs.cpSync(path.join(__dirname, "files"), "./", { recursive: true });
|
|
console.log("Files copied");
|
|
|
|
//modify package.json
|
|
|
|
console.log("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));
|
|
|
|
console.log("package.json modified");
|
|
console.log("Done");
|