package.json
{
"name": "node-rest-starter",
"description": "Starter for a REST API using Node and Express.js",
"version": "0.0.0",
"private": true,
"repository": {
"type": "git",
"url": "https://github.com:Asymmetrik/node-rest-starter.git"
},
"engines": {
"node": ">=18.19.1",
"npm": ">=10.2.4",
"yarn": ">=1.5.1"
},
"scripts": {
"init": "npm ci && npm run init:env:dev",
"init:mongo": "npm run init && npm run init:mongo:up",
"init:env:dev": "cp config/env/development.template.js config/development.js",
"init:mongo:up": "docker compose -p node-rest-starter -f dev/mongo.yml up -d",
"init:mongo:express": "docker compose -p node-rest-starter -f dev/mongo-express.yml up -d",
"init:mongo:down": "docker compose -p node-rest-starter -f dev/mongo.yml down",
"clean": "rm -rf dist",
"start": "nodemon ./src/server.ts --exec 'npm run lint && node --inspect -r @swc-node/register'",
"start:dev": "export NODE_ENV=development && npm run start",
"start:prod": "cd dist && node ./src/server.js",
"test": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nodemon -r @swc-node/register src/test.ts",
"test:build": "cd dist && node -r @swc-node/register src/test.ts",
"test:ci": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nyc --reporter=lcov --reporter=text-summary node -r @swc-node/register src/test.ts --ci",
"test:gitlab": "NODE_ENV=testgitlab ALLOW_CONFIG_MUTATIONS=true nyc --reporter=lcov --reporter=text-summary node -r @swc-node/register src/test.ts --ci",
"test:debug": "NODE_ENV=test ALLOW_CONFIG_MUTATIONS=true nodemon src/test.ts --exec 'node -r @swc-node/register --inspect-brk=:9339'",
"build": "npm run lint",
"build:prod": "npm run lint && npm run clean && npm run compile:prod && npm run link:prod",
"compile:prod": "swc src --config-file .prod.swcrc -d dist --copy-files",
"link:prod": "ln -s ../config ./dist/config && ln -s ../node_modules ./dist/node_modules && ln -s ../package.json ./dist/package.json && ln -s ../package-lock.json ./dist/package-lock.json",
"lint": "npm run lint:eslint",
"lint:fix": "npm run lint:eslint:fix",
"lint:eslint": "eslint \"./**/*.{js,ts}\"",
"lint:eslint:fix": "eslint \"./**/*.{js,ts}\" --fix",
"tsc:check": "tsc --project tsconfig.json --noEmit",
"tsc:watch": "tsc --watch --noEmit",
"prepare": "husky"
},
"nyc": {
"include": "src",
"exclude": [
"**/*.spec.js",
"**/*.spec.ts",
"src/test.ts"
]
},
"dependencies": {
"agenda": "^4.3.0",
"async": "^3.2.5",
"compression": "1.7",
"config": "^3.3.11",
"connect-mongo": "^5.1.0",
"cors": "^2.8.5",
"csv-stringify": "4.0",
"express": "4.19",
"express-actuator": "^1.8.4",
"express-async-errors": "^3.1.1",
"express-json-validator-middleware": "^3.0.1",
"express-session": "^1.18.0",
"glob": "10.3.10",
"handlebars": "^4.7.7",
"helmet": "^7.1.0",
"http-status-codes": "^2.3.0",
"jsonpath": "^1.1.1",
"lodash": "4.17.21",
"luxon": "^1.28.1",
"method-override": "3.0",
"migrate-mongo": "^11.0.0",
"mongoose": "^8.4.4",
"mongoose-unique-validator": "^5.0.1",
"morgan": "1.9",
"multipipe": "^4.0.0",
"nodemailer": "6.9.9",
"passport": "0.6.0",
"passport-local": "1.0.0",
"path": "0.12",
"platform": "1.3",
"socket.io": "^4.6.2",
"socketio-sticky-session": "0.4",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1",
"through2": "^4.0.2",
"typescript": "^5.4.5",
"uuid": "^10.0.0",
"winston": "^3.13.0",
"winston-daily-rotate-file": "^5.0.0",
"yargs": "^17.7.2"
},
"devDependencies": {
"@swc-node/register": "^1.9.2",
"@swc/cli": "^0.3.12",
"@swc/core": "^1.6.3",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/compression": "^1.7.5",
"@types/config": "^3.3.4",
"@types/express": "4.16",
"@types/express-actuator": "^1.8.3",
"@types/express-session": "^1.18.0",
"@types/jsonpath": "^0.2.0",
"@types/lodash": "^4.14.176",
"@types/luxon": "^1.27.1",
"@types/method-override": "^0.0.35",
"@types/migrate-mongo": "^10.0.4",
"@types/mocha": "^8.2.1",
"@types/morgan": "^1.9.9",
"@types/multipipe": "^3.0.5",
"@types/passport": "1.0.10",
"@types/q": "1.5",
"@types/swagger-jsdoc": "^6.0.4",
"@types/swagger-ui-express": "^4.1.6",
"@types/through2": "^2.0.36",
"@types/uuid": "^9.0.8",
"@types/yargs": "^17.0.10",
"@typescript-eslint/eslint-plugin": "^7.13.1",
"@typescript-eslint/parser": "^7.13.1",
"eslint": "^8.45.0",
"eslint-config-prettier": "^8.9.0",
"eslint-import-resolver-typescript": "^3.5.5",
"eslint-plugin-deprecation": "^1.5.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsdoc": "^46.4.5",
"eslint-plugin-prettier": "^5.0.0",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"mocha": "^10.4.0",
"nodemon": "^3.1.4",
"nyc": "^17.0.0",
"prettier": "^3.0.0",
"should": "^13.2.3",
"sinon": "^18.0.0",
"swagger-parser": "^10.0.3"
},
"lint-staged": {
"*.{js,ts}": "eslint --fix"
}
}