node-ff
Version:
A CLI for creating NodeJs projects
121 lines (108 loc) • 3.4 kB
text/typescript
import { IJson } from './interfaces';
class whichJSON {
private tscript: boolean | undefined;
private orm: boolean | string;
public json: IJson = {
name: 'project-node-js',
version: '1.0.0',
main: 'src/server.js',
license: 'MIT',
scripts: {
dev: 'nodemon src/server.js',
},
dependencies: {
'body-parser': '^1.20.0',
cors: '^2.8.5',
express: '^4.18.1',
},
devDependencies: {
nodemon: '^2.0.16',
prettier: '^2.7.1',
eslint: '^8.21.0',
'eslint-config-airbnb-base': '^15.0.0',
'eslint-config-prettier': '^8.5.0',
'eslint-plugin-import': '^2.25.2',
'eslint-plugin-prettier': '^4.2.1',
},
};
constructor(tscript: boolean | undefined, orm: boolean | string) {
this.tscript = tscript;
this.orm = orm;
this.typescript();
this.is_orm();
}
private typescript() {
if (this.tscript) {
delete this.json.devDependencies.nodemon;
this.json = {
name: 'project-node-ts',
main: 'src/server.ts',
scripts: {
dev: 'ts-node-dev --transpile-only --ignore-watch node_modules --respawn src/server.ts',
start: 'nodemon src/server.ts',
},
dependencies: this.json.dependencies,
devDependencies: {
...this.json.devDependencies,
typescript: '^4.7.2',
'ts-node-dev': '^2.0.0',
'@types/body-parser': '^1.19.2',
'@types/cors': '^2.8.12',
'@types/express': '^4.17.13',
'@types/node': '^18.7.2',
'@typescript-eslint/eslint-plugin': '^5.32.0',
'@typescript-eslint/parser': '^5.32.0',
},
};
}
}
private is_orm() {
if (this.orm && this.tscript) {
this.json.scripts = {
...this.json.scripts,
"dev": "ts-node-dev --transpile-only --ignore-watch node_modules --respawn app/server.ts",
"start": "nodemon app/server.ts",
"build": "/bin/sh tsc_eval.sh",
"db:init": "npx sequelize-cli init",
"db:create": "npx sequelize-cli db:create",
"db:migrate": "npx sequelize-cli db:migrate",
"db:seed": "npx sequelize-cli db:seed:all",
"db:rollback": "npx sequelize-cli db:migrate:undo",
"db:drop": "npx sequelize-cli db:drop"
};
this.json.dependencies = {
...this.json.dependencies,
sequelize: '^6.28.0',
mysql2: '^2.3.3',
dotenv: '^16.0.3',
};
this.json.devDependencies = {
...this.json.devDependencies,
'sequelize-cli': '^6.5.2',
};
this.json.main = 'app/server.ts';
return;
}
if (this.orm) {
this.json.scripts = {
...this.json.scripts,
dev: 'nodemon app/server.js',
'db:create': 'npx sequelize db:create',
'db:migrate': 'npx sequelize db:migrate',
'db:rollback': 'npx sequelize db:migrate:undo',
};
this.json.dependencies = {
...this.json.dependencies,
sequelize: '^6.28.0',
mysql2: '^2.3.3',
dotenv: '^16.0.3',
};
this.json.devDependencies = {
...this.json.devDependencies,
'sequelize-cli': '^6.5.2',
};
this.json.main = 'app/server.js';
}
}
}
export { whichJSON };