From 1d7e9153fb03caecdcae649f32662736e9256d31 Mon Sep 17 00:00:00 2001 From: Paul Schmiedmayer Date: Sun, 29 Oct 2023 11:57:09 -0700 Subject: [PATCH] Update Setup --- .eslintrc.json | 4 +- .github/workflows/nextjs-github-pages.yml | 2 + .gitignore | 3 + README.md | 14 ++- package-lock.json | 101 +++++++++++++++++++++- package.json | 7 +- packages/example-package/tsconfig.json | 1 - tsconfig.json | 8 +- 8 files changed, 130 insertions(+), 10 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index e5ce80f..460314f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,9 +1,7 @@ { "extends": ["next/core-web-vitals", "prettier"], "plugins": ["prettier"], - "ignorePatterns": [ - "**/dist/*.js" - ], + "ignorePatterns": ["**/dist/*.js"], "rules": { "prettier/prettier": "error" } diff --git a/.github/workflows/nextjs-github-pages.yml b/.github/workflows/nextjs-github-pages.yml index d859e54..9cff0c6 100644 --- a/.github/workflows/nextjs-github-pages.yml +++ b/.github/workflows/nextjs-github-pages.yml @@ -47,6 +47,8 @@ jobs: NEXT_JS_OUTPUT: 'export' NEXT_JS_BASE_PATH: '/${{ github.event.repository.name }}' NEXT_JS_IMAGES_UNOPTIMIZED: true + - name: Build Docs + run: npm run docs:ci --if-present - name: Upload artifact uses: actions/upload-pages-artifact@v2 with: diff --git a/.gitignore b/.gitignore index 65aa1aa..76fafae 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,6 @@ next-env.d.ts # lint eslint_report.json + +# docs +docs \ No newline at end of file diff --git a/README.md b/README.md index bcc617e..b11056c 100644 --- a/README.md +++ b/README.md @@ -12,16 +12,26 @@ SPDX-License-Identifier: MIT ## How To Use This Template -The template repository contains a template TypeScript Project. +The template repository contains a template for a Next.js project providing automated GitHub Actions and setups for code linting, testing & test coverage report, docker deployments, a docker compose setup, local packages for modular deployment, and documentation generation and deployment. Follow these steps to customize it to your needs: -1. Rename the TypeScript project. +1. Rename the NextJS project. +2. Modify, add, or remove the local packages found at `/packages/*` to separate code out into smaller modules. +3. Add additional dependencies and edit the project in `/app` and the local Node packages. ## Getting Started You can run the project using the following command. You will need to install Node.js and npm, e.g., using [homebrew (recommended for macOS)](https://formulae.brew.sh/formula/node) or the official [Node.js installer](https://nodejs.org/en/download). +1. Install All Dependencies + +```bash +npm install +``` + +1. Start the Next.js Application + ```bash npm run dev ``` diff --git a/package-lock.json b/package-lock.json index 2b6d01e..4bd2a5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,6 @@ "": { "name": "typescripttemplate", "version": "0.1.0", - "hasInstallScript": true, "license": "MIT", "dependencies": { "@stanfordbdhg/example-package": "file:../packages/example-package", @@ -34,6 +33,7 @@ "postcss": "^8", "prettier": "^3", "ts-jest": "^29", + "typedoc": "^0.25.2", "typescript": "^5" } }, @@ -2057,6 +2057,12 @@ "node": ">=8" } }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", + "dev": true + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6028,6 +6034,12 @@ "json5": "lib/cli.js" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -6159,6 +6171,12 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", @@ -6198,6 +6216,18 @@ "tmpl": "1.0.5" } }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -7647,6 +7677,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/shiki": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", + "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", + "dev": true, + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -8370,6 +8412,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedoc": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.2.tgz", + "integrity": "sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.3", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", @@ -8490,6 +8577,18 @@ "node": ">=10.12.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", diff --git a/package.json b/package.json index 52a75b1..6e7eb39 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "typescripttemplate", "version": "0.1.0", "license": "MIT", - "description": "Stanford BDHG TypeScript Template", + "description": "Stanford Biodesign Digital Health TypeScript Template", "keywords": [ "Stanford", "Biodesign" @@ -21,7 +21,9 @@ "lint:fix": "eslint . --fix & prettier --write .", "lint:ci": "eslint --output-file eslint_report.json --format json .", "pretest": "npm --prefix packages/example-package run build", - "test": "jest" + "test": "jest", + "docs": "typedoc", + "docs:ci": "typedoc --out ./out/docs --githubPages true" }, "dependencies": { "@stanfordbdhg/example-package": "file:../packages/example-package", @@ -48,6 +50,7 @@ "postcss": "^8", "prettier": "^3", "ts-jest": "^29", + "typedoc": "^0.25", "typescript": "^5" } } diff --git a/packages/example-package/tsconfig.json b/packages/example-package/tsconfig.json index b55615d..7f1ed38 100644 --- a/packages/example-package/tsconfig.json +++ b/packages/example-package/tsconfig.json @@ -8,7 +8,6 @@ }, "include": ["src"], "typedocOptions": { - "$schema": "https://typedoc.org/schema.json", "includeVersion": true, "entryPoints": ["src/index.ts"] } diff --git a/tsconfig.json b/tsconfig.json index 0f0c798..b52f684 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,5 +24,11 @@ } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "exclude": ["node_modules"], + "typedocOptions": { + "entryPoints": ["packages/*"], + "name": "Stanford Biodesign Digital Health TypeScript Template", + "entryPointStrategy": "packages", + "includeVersion": false + } }