@simitgroup/simpleapp-generator 1.0.20 → 1.0.22
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/README copy.md +882 -0
- package/README.md +53 -824
- package/definations/category.cat.jsonschema.json +11 -13
- package/definations/level.lvl.jsonschema.json +48 -0
- package/definations/product.prd.jsonschema.json +8 -2
- package/dist/framework.js +180 -0
- package/dist/framework.js.map +1 -0
- package/dist/generate.js +5 -5
- package/dist/generate.js.map +1 -1
- package/dist/index.js +45 -28
- package/dist/index.js.map +1 -1
- package/openapitools.json +7 -0
- package/package.json +2 -10
- package/sampleconfig.json +3 -0
- package/src/framework.ts +151 -0
- package/src/generate.ts +5 -5
- package/src/index.ts +23 -42
- package/templates/nest/nest.env.eta +7 -0
- package/templates/{nest.main.eta → nest/nest.main.eta} +1 -1
- package/templates/nuxt/env.eta +5 -3
- package/backend1/.eslintrc.js +0 -25
- package/backend1/.prettierrc +0 -4
- package/backend1/README.md +0 -73
- package/backend1/nest-cli.json +0 -8
- package/backend1/package.json +0 -69
- package/backend1/pnpm-lock.yaml +0 -5208
- package/backend1/src/app.controller.js +0 -71
- package/backend1/src/app.controller.js.map +0 -1
- package/backend1/src/app.controller.spec.js +0 -21
- package/backend1/src/app.controller.spec.js.map +0 -1
- package/backend1/src/app.controller.spec.ts +0 -22
- package/backend1/src/app.controller.ts +0 -12
- package/backend1/src/app.module.js +0 -67
- package/backend1/src/app.module.js.map +0 -1
- package/backend1/src/app.module.ts +0 -10
- package/backend1/src/app.service.js +0 -64
- package/backend1/src/app.service.js.map +0 -1
- package/backend1/src/app.service.ts +0 -8
- package/backend1/src/main.js +0 -10
- package/backend1/src/main.js.map +0 -1
- package/backend1/src/main.ts +0 -8
- package/backend1/test/app.e2e-spec.js +0 -45
- package/backend1/test/app.e2e-spec.js.map +0 -1
- package/backend1/test/app.e2e-spec.ts +0 -24
- package/backend1/test/jest-e2e.json +0 -9
- package/backend1/tsconfig.build.json +0 -4
- package/backend1/tsconfig.json +0 -21
- package/src/installdependency.ts +0 -4
- package/templates/SimpleAppClient.eta +0 -116
- package/templates/app.vue.eta +0 -21
- package/templates/nest.env.eta +0 -5
- /package/templates/{SimpleAppController.eta → nest/SimpleAppController.eta} +0 -0
- /package/templates/{SimpleAppService.eta → nest/SimpleAppService.eta} +0 -0
- /package/templates/{app.module.eta → nest/app.module.eta} +0 -0
package/src/framework.ts
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import fs from 'fs'
|
|
2
|
+
import {spawn,exec} from "child_process"
|
|
3
|
+
import { Logger, ILogObj } from "tslog";
|
|
4
|
+
import * as constants from './constant'
|
|
5
|
+
import {Eta} from 'eta';
|
|
6
|
+
const log: Logger<ILogObj> = new Logger();
|
|
7
|
+
|
|
8
|
+
let config = {
|
|
9
|
+
"definationsFolder":"./definations",
|
|
10
|
+
"backendFolder":"./mybackend",
|
|
11
|
+
"backendPort":"8000",
|
|
12
|
+
"mongoConnectStr":'mongodb://<user>:<pass>@<host>:<port>/<db>?authMechanism=DEFAULT',
|
|
13
|
+
"frontendFolder":"./myfrontend",
|
|
14
|
+
"frontendPort":"8080",
|
|
15
|
+
"openapi3Yaml":"../openapi.yaml",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const setConfiguration=(paraconfig)=>{
|
|
19
|
+
config=paraconfig
|
|
20
|
+
}
|
|
21
|
+
//create empty nest project
|
|
22
|
+
export const runCreateNest= (callback:Function) =>{
|
|
23
|
+
const backendFolder=config.backendFolder
|
|
24
|
+
if(!fs.existsSync(backendFolder)){
|
|
25
|
+
const child = spawn('npm',['install','-g','pnpm', '@nestjs/cli', '@openapitools/openapi-generator-cli', 'nuxi'],
|
|
26
|
+
{ stdio: 'inherit',})
|
|
27
|
+
child.on('close',(exitCode)=>{
|
|
28
|
+
const child2 = spawn('nest',['new', '-p', 'pnpm', backendFolder],{ stdio: "inherit"})
|
|
29
|
+
child2.on('close',(exitCode)=>{
|
|
30
|
+
callback()
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
}else{
|
|
34
|
+
callback()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//create empty nuxt project
|
|
38
|
+
export const runCreateNuxt = (callback:Function) =>{
|
|
39
|
+
const frontendFolder=config.frontendFolder
|
|
40
|
+
if(!fs.existsSync(frontendFolder)){
|
|
41
|
+
const child3 = spawn('npx',['nuxi@latest','init',frontendFolder],{ stdio: 'inherit',})
|
|
42
|
+
child3.on('close',(exitCode)=>{
|
|
43
|
+
callback()
|
|
44
|
+
})
|
|
45
|
+
}else{
|
|
46
|
+
callback()
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const prepareNest = (callback:Function)=>{
|
|
51
|
+
const targetfolder =config.backendFolder
|
|
52
|
+
log.info(`creating backend project ${targetfolder}`)
|
|
53
|
+
exec(`cd ${targetfolder};pnpm install --save @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`,async (error, stdout, stderr)=>{
|
|
54
|
+
// log.info(`dependency installed`)
|
|
55
|
+
if(!error){
|
|
56
|
+
exec(`pnpm install ajv ajv-formats axios json-schema`, (error, stdout, stderr)=>{
|
|
57
|
+
const eta = new Eta({views: constants.templatedir});
|
|
58
|
+
const variables={
|
|
59
|
+
backendPort:config.backendPort,
|
|
60
|
+
mongoConnectStr:config.mongoConnectStr
|
|
61
|
+
}
|
|
62
|
+
const txtEnv = eta.render('./nest/nest.env.eta', variables);
|
|
63
|
+
const txtMain = eta.render('./nest/nest.main.eta', variables);
|
|
64
|
+
|
|
65
|
+
fs.writeFileSync(`${targetfolder}/.env`, txtEnv);
|
|
66
|
+
fs.writeFileSync(`${targetfolder}/src/main.ts`, txtMain);
|
|
67
|
+
const tsconfigpath = process.cwd()+'/'+`${targetfolder}/tsconfig.json`
|
|
68
|
+
const tsconfig = require(tsconfigpath)
|
|
69
|
+
tsconfig.compilerOptions.esModuleInterop=true
|
|
70
|
+
tsconfig.compilerOptions.resolveJsonModule=true
|
|
71
|
+
fs.writeFileSync(tsconfigpath, JSON.stringify(tsconfig));
|
|
72
|
+
|
|
73
|
+
log.info("nest project completed")
|
|
74
|
+
callback()
|
|
75
|
+
})
|
|
76
|
+
} else{
|
|
77
|
+
log.error(stderr)
|
|
78
|
+
throw error
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
//prepare nuxt project for simpleapp generator
|
|
83
|
+
export const prepareNuxt = (callback:Function)=>{
|
|
84
|
+
const targetfolder = config.frontendFolder
|
|
85
|
+
if(!fs.existsSync(`${targetfolder}/.env`)){
|
|
86
|
+
//asume no environment. prepare now
|
|
87
|
+
exec(`cd ${targetfolder};pnpm install;pnpm install -D @types/node @vueuse/nuxt @sidebase/nuxt-auth @vueuse/core nuxt-security prettier @nuxtjs/tailwindcss`, (error, stdout, stderr)=>{
|
|
88
|
+
//;pnpm install
|
|
89
|
+
console.log(error, stdout, stderr)
|
|
90
|
+
exec(`cd ${targetfolder};pnpm install --save ajv dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr)=>{
|
|
91
|
+
console.log(error, stdout, stderr)
|
|
92
|
+
|
|
93
|
+
fs.mkdirSync(`${targetfolder}/assets/css/`,{recursive:true})
|
|
94
|
+
fs.mkdirSync(`${targetfolder}/layouts`,{recursive:true})
|
|
95
|
+
fs.mkdirSync(`${targetfolder}/components`,{recursive:true})
|
|
96
|
+
fs.mkdirSync(`${targetfolder}/server/api`,{recursive:true})
|
|
97
|
+
fs.mkdirSync(`${targetfolder}/pages`,{recursive:true})
|
|
98
|
+
fs.mkdirSync(`${targetfolder}/plugins`,{recursive:true})
|
|
99
|
+
const eta = new Eta({views: `${constants.templatedir}/nuxt`});
|
|
100
|
+
const variables={
|
|
101
|
+
backendPort:config.backendPort,
|
|
102
|
+
frontendPort:config.frontendPort
|
|
103
|
+
}
|
|
104
|
+
const writes = {
|
|
105
|
+
'./app.vue.eta':'app.vue',
|
|
106
|
+
'./components.eventmonitor.vue.eta':'components/EventMonitor.vue',
|
|
107
|
+
'./components.menus.vue.eta':'components/Menus.vue',
|
|
108
|
+
'./components.crudsimple.vue.eta':'components/CrudSimple.vue',
|
|
109
|
+
'./components.debugdocdata.vue.eta':'components/DebugDocumentData.vue',
|
|
110
|
+
'./layouts.default.vue.eta':'layouts/default.vue',
|
|
111
|
+
'./server.api.ts.eta':'server/api/[...].ts',
|
|
112
|
+
'./nuxt.config.ts.eta':'nuxt.config.ts',
|
|
113
|
+
'./pages.index.vue.eta':'pages/index.vue',
|
|
114
|
+
'./plugins.simpleapp.ts.eta':'plugins/simpleapp.ts',
|
|
115
|
+
'./tailwind.config.ts.eta':'tailwind.config.ts',
|
|
116
|
+
'./tailwind.css.eta':'assets/css/tailwind.css',
|
|
117
|
+
'./env.eta':'.env',
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const templates = Object.getOwnPropertyNames(writes)
|
|
121
|
+
for(let i=0; i<templates.length;i++){
|
|
122
|
+
const template = templates[i]
|
|
123
|
+
const filename = writes[template]
|
|
124
|
+
const txt = eta.render(template, variables);
|
|
125
|
+
const file =`${targetfolder}/${filename}`
|
|
126
|
+
log.info("writing ",file)
|
|
127
|
+
fs.writeFileSync(file, txt);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
log.info("nuxt project completed")
|
|
131
|
+
callback()
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
})
|
|
135
|
+
}else{
|
|
136
|
+
//assume environment ready
|
|
137
|
+
callback()
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export const prettyNuxt = ()=>{
|
|
142
|
+
exec(`cd ${config.frontendFolder};npx prettier --write "./pages/**/*.vue" "./simpleapp/**/*" `)
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
export const prettyNest = ()=>{
|
|
146
|
+
exec(`cd ${config.backendFolder};npx run format `)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export const prepareOpenApiClient = () => {
|
|
150
|
+
exec(`openapi-generator-cli generate -i ${config.openapi3Yaml} -o ${config.frontendFolder}/simpleapp/openapi -g typescript-axios --skip-validate-spec`)
|
|
151
|
+
}
|
package/src/generate.ts
CHANGED
|
@@ -21,7 +21,7 @@ const extjsonschema = '.jsonschema.json';
|
|
|
21
21
|
let jsonschemas = {};
|
|
22
22
|
const docs = [];
|
|
23
23
|
|
|
24
|
-
export const initialize = async (defFolder:string,backendfolder:string,frontendfolder:string) => {
|
|
24
|
+
export const initialize = async (defFolder:string,backendfolder:string,frontendfolder:string,callback:Function) => {
|
|
25
25
|
prepareEnvironments(backendfolder,frontendfolder)
|
|
26
26
|
let activatemodules:ModuleObject[]=[]
|
|
27
27
|
//
|
|
@@ -58,7 +58,7 @@ export const initialize = async (defFolder:string,backendfolder:string,frontend
|
|
|
58
58
|
log.info("Activated backend modules: ",JSON.stringify(activatemodules))
|
|
59
59
|
// log.info(activatemodules)
|
|
60
60
|
finalize(activatemodules,backendfolder,frontendfolder)
|
|
61
|
-
|
|
61
|
+
callback()
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
|
|
@@ -251,10 +251,10 @@ const prepareEnvironments = (backendfolder:string,frontendfolder:string)=>{
|
|
|
251
251
|
|
|
252
252
|
//copy over backend service class
|
|
253
253
|
|
|
254
|
-
copyFileSync(`${constants.templatedir}/SimpleAppService.eta`,`${targetfolder}/SimpleAppService.ts`)
|
|
254
|
+
copyFileSync(`${constants.templatedir}/nest/SimpleAppService.eta`,`${targetfolder}/SimpleAppService.ts`)
|
|
255
255
|
|
|
256
256
|
//copy over backend controller
|
|
257
|
-
copyFileSync(`${constants.templatedir}/SimpleAppController.eta`,`${targetfolder}/SimpleAppController.ts`)
|
|
257
|
+
copyFileSync(`${constants.templatedir}/nest/SimpleAppController.eta`,`${targetfolder}/SimpleAppController.ts`)
|
|
258
258
|
|
|
259
259
|
//copy over frontend apiabstract class
|
|
260
260
|
// copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
|
|
@@ -271,7 +271,7 @@ const finalize=(modules:ModuleObject[],backendfolder:string,frontendfolder:strin
|
|
|
271
271
|
mkdirSync(`${frontendfolder}/composables/`,{ recursive: true });
|
|
272
272
|
|
|
273
273
|
const eta = new Eta({views:constants.templatedir});
|
|
274
|
-
const txtMainModule = eta.render('app.module.eta', modules);
|
|
274
|
+
const txtMainModule = eta.render('./nest/app.module.eta', modules);
|
|
275
275
|
writeFileSync(`${backendfolder}/src/app.module.ts`, txtMainModule);
|
|
276
276
|
|
|
277
277
|
const foreignkeyfile =`${backendfolder}/src/dicts/foreignkeys.json`
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
2
|
import { error } from "console"
|
|
3
|
+
import * as fw from './framework'
|
|
4
|
+
import * as generate from './generate'
|
|
3
5
|
const program = require("commander") // add this line
|
|
4
6
|
const Fieldtypes= require( './type')
|
|
5
|
-
const
|
|
7
|
+
// const generate= require( './generate')
|
|
8
|
+
|
|
6
9
|
const fs = require( 'fs')
|
|
7
10
|
const createproject =require( './createproject')
|
|
8
11
|
const ps = require( "child_process")
|
|
@@ -40,48 +43,26 @@ if(!options.configFile){
|
|
|
40
43
|
}
|
|
41
44
|
const configs = require(path)
|
|
42
45
|
console.log("configurations: ",configs)
|
|
43
|
-
const definationsFolder = configs.definationsFolder
|
|
44
|
-
const backendFolder = configs.backendFolder
|
|
45
|
-
const frontendFolder = configs.frontendFolder
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
const definationsFolder = configs.definationsFolder
|
|
47
|
+
const backendFolder = configs.backendFolder
|
|
48
|
+
const frontendFolder = configs.frontendFolder
|
|
49
|
+
const openapi3Yaml = configs.openapi3Yaml
|
|
53
50
|
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
const run = async()=>{
|
|
52
|
+
fw.setConfiguration(configs)
|
|
53
|
+
fw.runCreateNuxt(()=>{
|
|
54
|
+
fw.runCreateNest(()=>{
|
|
55
|
+
fw.prepareNest(()=>{
|
|
56
|
+
fw.prepareNuxt(()=>{
|
|
57
|
+
generate.initialize(definationsFolder,backendFolder,frontendFolder,()=>{
|
|
58
|
+
fw.prepareOpenApiClient()
|
|
59
|
+
fw.prettyNuxt()
|
|
60
|
+
fw.prettyNest()
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
64
|
})
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
if(!fs.existsSync(frontendFolder)){
|
|
68
|
-
// const child3 = ps.spawn('npx',['nuxi@latest','init',frontendFolder],{ stdio: 'inherit',})
|
|
69
|
-
}
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
// child.stdout.on('data', (data) => {
|
|
73
|
-
// console.log(`child stdout:\n${data}`);
|
|
74
|
-
// });
|
|
75
|
-
// process.stdin.pipe(child.stdin)
|
|
76
|
-
|
|
77
|
-
// const installnest=()=>{}
|
|
78
|
-
// const installnuxt=()=>{}
|
|
79
|
-
// const installdependency=()=>{}
|
|
80
|
-
// Promise.all([installdependency(),installnuxt(),installnest()]).then(()=>{
|
|
81
|
-
// //run generate source code
|
|
82
|
-
|
|
83
|
-
// })
|
|
65
|
+
})
|
|
84
66
|
}
|
|
85
67
|
|
|
86
|
-
|
|
87
|
-
runGenerator()
|
|
68
|
+
run()
|
|
@@ -15,6 +15,6 @@ async function bootstrap() {
|
|
|
15
15
|
swaggerOptions: { showExtensions: true },
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
await app.listen(process.env.HTTP_PORT ??
|
|
18
|
+
await app.listen(process.env.HTTP_PORT ?? <%=it.backendPort%>); //listen which port
|
|
19
19
|
}
|
|
20
20
|
bootstrap();
|
package/templates/nuxt/env.eta
CHANGED
package/backend1/.eslintrc.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
parser: '@typescript-eslint/parser',
|
|
3
|
-
parserOptions: {
|
|
4
|
-
project: 'tsconfig.json',
|
|
5
|
-
tsconfigRootDir: __dirname,
|
|
6
|
-
sourceType: 'module',
|
|
7
|
-
},
|
|
8
|
-
plugins: ['@typescript-eslint/eslint-plugin'],
|
|
9
|
-
extends: [
|
|
10
|
-
'plugin:@typescript-eslint/recommended',
|
|
11
|
-
'plugin:prettier/recommended',
|
|
12
|
-
],
|
|
13
|
-
root: true,
|
|
14
|
-
env: {
|
|
15
|
-
node: true,
|
|
16
|
-
jest: true,
|
|
17
|
-
},
|
|
18
|
-
ignorePatterns: ['.eslintrc.js'],
|
|
19
|
-
rules: {
|
|
20
|
-
'@typescript-eslint/interface-name-prefix': 'off',
|
|
21
|
-
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
22
|
-
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
23
|
-
'@typescript-eslint/no-explicit-any': 'off',
|
|
24
|
-
},
|
|
25
|
-
};
|
package/backend1/.prettierrc
DELETED
package/backend1/README.md
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
|
|
6
|
-
[circleci-url]: https://circleci.com/gh/nestjs/nest
|
|
7
|
-
|
|
8
|
-
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
|
|
9
|
-
<p align="center">
|
|
10
|
-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
|
|
11
|
-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
|
|
12
|
-
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
|
|
13
|
-
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
|
|
14
|
-
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
|
|
15
|
-
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
|
|
16
|
-
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
|
|
17
|
-
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
|
|
18
|
-
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
|
|
19
|
-
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
|
|
20
|
-
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
|
|
21
|
-
</p>
|
|
22
|
-
<!--[](https://opencollective.com/nest#backer)
|
|
23
|
-
[](https://opencollective.com/nest#sponsor)-->
|
|
24
|
-
|
|
25
|
-
## Description
|
|
26
|
-
|
|
27
|
-
[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
|
|
28
|
-
|
|
29
|
-
## Installation
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
$ pnpm install
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Running the app
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
# development
|
|
39
|
-
$ pnpm run start
|
|
40
|
-
|
|
41
|
-
# watch mode
|
|
42
|
-
$ pnpm run start:dev
|
|
43
|
-
|
|
44
|
-
# production mode
|
|
45
|
-
$ pnpm run start:prod
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Test
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# unit tests
|
|
52
|
-
$ pnpm run test
|
|
53
|
-
|
|
54
|
-
# e2e tests
|
|
55
|
-
$ pnpm run test:e2e
|
|
56
|
-
|
|
57
|
-
# test coverage
|
|
58
|
-
$ pnpm run test:cov
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Support
|
|
62
|
-
|
|
63
|
-
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
|
|
64
|
-
|
|
65
|
-
## Stay in touch
|
|
66
|
-
|
|
67
|
-
- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)
|
|
68
|
-
- Website - [https://nestjs.com](https://nestjs.com/)
|
|
69
|
-
- Twitter - [@nestframework](https://twitter.com/nestframework)
|
|
70
|
-
|
|
71
|
-
## License
|
|
72
|
-
|
|
73
|
-
Nest is [MIT licensed](LICENSE).
|
package/backend1/nest-cli.json
DELETED
package/backend1/package.json
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "backend1",
|
|
3
|
-
"version": "0.0.1",
|
|
4
|
-
"description": "",
|
|
5
|
-
"author": "",
|
|
6
|
-
"private": true,
|
|
7
|
-
"license": "UNLICENSED",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"build": "nest build",
|
|
10
|
-
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
11
|
-
"start": "nest start",
|
|
12
|
-
"start:dev": "nest start --watch",
|
|
13
|
-
"start:debug": "nest start --debug --watch",
|
|
14
|
-
"start:prod": "node dist/main",
|
|
15
|
-
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
|
16
|
-
"test": "jest",
|
|
17
|
-
"test:watch": "jest --watch",
|
|
18
|
-
"test:cov": "jest --coverage",
|
|
19
|
-
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
|
20
|
-
"test:e2e": "jest --config ./test/jest-e2e.json"
|
|
21
|
-
},
|
|
22
|
-
"dependencies": {
|
|
23
|
-
"@nestjs/common": "^10.0.0",
|
|
24
|
-
"@nestjs/core": "^10.0.0",
|
|
25
|
-
"@nestjs/platform-express": "^10.0.0",
|
|
26
|
-
"reflect-metadata": "^0.1.13",
|
|
27
|
-
"rxjs": "^7.8.1"
|
|
28
|
-
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@nestjs/cli": "^10.0.0",
|
|
31
|
-
"@nestjs/schematics": "^10.0.0",
|
|
32
|
-
"@nestjs/testing": "^10.0.0",
|
|
33
|
-
"@types/express": "^4.17.17",
|
|
34
|
-
"@types/jest": "^29.5.2",
|
|
35
|
-
"@types/node": "^20.3.1",
|
|
36
|
-
"@types/supertest": "^2.0.12",
|
|
37
|
-
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
38
|
-
"@typescript-eslint/parser": "^6.0.0",
|
|
39
|
-
"eslint": "^8.42.0",
|
|
40
|
-
"eslint-config-prettier": "^9.0.0",
|
|
41
|
-
"eslint-plugin-prettier": "^5.0.0",
|
|
42
|
-
"jest": "^29.5.0",
|
|
43
|
-
"prettier": "^3.0.0",
|
|
44
|
-
"source-map-support": "^0.5.21",
|
|
45
|
-
"supertest": "^6.3.3",
|
|
46
|
-
"ts-jest": "^29.1.0",
|
|
47
|
-
"ts-loader": "^9.4.3",
|
|
48
|
-
"ts-node": "^10.9.1",
|
|
49
|
-
"tsconfig-paths": "^4.2.0",
|
|
50
|
-
"typescript": "^5.1.3"
|
|
51
|
-
},
|
|
52
|
-
"jest": {
|
|
53
|
-
"moduleFileExtensions": [
|
|
54
|
-
"js",
|
|
55
|
-
"json",
|
|
56
|
-
"ts"
|
|
57
|
-
],
|
|
58
|
-
"rootDir": "src",
|
|
59
|
-
"testRegex": ".*\\.spec\\.ts$",
|
|
60
|
-
"transform": {
|
|
61
|
-
"^.+\\.(t|j)s$": "ts-jest"
|
|
62
|
-
},
|
|
63
|
-
"collectCoverageFrom": [
|
|
64
|
-
"**/*.(t|j)s"
|
|
65
|
-
],
|
|
66
|
-
"coverageDirectory": "../coverage",
|
|
67
|
-
"testEnvironment": "node"
|
|
68
|
-
}
|
|
69
|
-
}
|