Use Typescript project references, improve functions build/deploy (#575)

* More liberal .gitignores on TS output directories

* Use project references for Typescript projects

* Use /dist dir for Cloud Functions deployment payload

* Disable `next build` typechecking

* Fiddle with GitHub tsc jobs
This commit is contained in:
Marshall Polaris 2022-06-24 22:41:30 -07:00 committed by GitHub
parent 3123021d94
commit 4edad9f19b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 32 additions and 13 deletions

View File

@ -48,8 +48,8 @@ jobs:
- name: Run Typescript checker on web client - name: Run Typescript checker on web client
if: ${{ success() || failure() }} if: ${{ success() || failure() }}
working-directory: web working-directory: web
run: tsc --pretty --project tsconfig.json --noEmit run: tsc -b -v --pretty
- name: Run Typescript checker on cloud functions - name: Run Typescript checker on cloud functions
if: ${{ success() || failure() }} if: ${{ success() || failure() }}
working-directory: functions working-directory: functions
run: tsc --pretty --project tsconfig.json --noEmit run: tsc -b -v --pretty

5
common/.gitignore vendored
View File

@ -1,6 +1,5 @@
# Compiled JavaScript files # Compiled JavaScript files
lib/**/*.js lib/
lib/**/*.js.map
# TypeScript v1 declaration files # TypeScript v1 declaration files
typings/ typings/
@ -10,4 +9,4 @@ node_modules/
package-lock.json package-lock.json
ui-debug.log ui-debug.log
firebase-debug.log firebase-debug.log

View File

@ -1,6 +1,8 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": "../", "baseUrl": "../",
"composite": true,
"module": "commonjs",
"moduleResolution": "node", "moduleResolution": "node",
"noImplicitReturns": true, "noImplicitReturns": true,
"outDir": "lib", "outDir": "lib",

View File

@ -1,8 +1,8 @@
{ {
"functions": { "functions": {
"predeploy": "npm --prefix \"$RESOURCE_DIR\" run build", "predeploy": "cd functions && yarn build",
"runtime": "nodejs16", "runtime": "nodejs16",
"source": "functions" "source": "functions/dist"
}, },
"firestore": { "firestore": {
"rules": "firestore.rules", "rules": "firestore.rules",

View File

@ -2,9 +2,11 @@
.env* .env*
.runtimeconfig.json .runtimeconfig.json
# GCP deployment artifact
dist/
# Compiled JavaScript files # Compiled JavaScript files
lib/**/*.js lib/
lib/**/*.js.map
# TypeScript v1 declaration files # TypeScript v1 declaration files
typings/ typings/

View File

@ -5,7 +5,8 @@
"firestore": "dev-mantic-markets.appspot.com" "firestore": "dev-mantic-markets.appspot.com"
}, },
"scripts": { "scripts": {
"build": "tsc", "build": "yarn compile && rm -r dist && mkdir -p dist/functions && cp -R ../common/lib dist/common && cp -R lib/src dist/functions/src && cp ../yarn.lock dist && cp package.json dist",
"compile": "tsc -b",
"watch": "tsc -w", "watch": "tsc -w",
"shell": "yarn build && firebase functions:shell", "shell": "yarn build && firebase functions:shell",
"start": "yarn shell", "start": "yarn shell",
@ -18,7 +19,7 @@
"db:backup-remote": "yarn db:rename-remote-backup-folder && gcloud firestore export gs://$npm_package_config_firestore/firestore_export/", "db:backup-remote": "yarn db:rename-remote-backup-folder && gcloud firestore export gs://$npm_package_config_firestore/firestore_export/",
"verify": "(cd .. && yarn verify)" "verify": "(cd .. && yarn verify)"
}, },
"main": "lib/functions/src/index.js", "main": "functions/src/index.js",
"dependencies": { "dependencies": {
"@amplitude/node": "1.10.0", "@amplitude/node": "1.10.0",
"fetch": "1.1.0", "fetch": "1.1.0",

View File

@ -1,6 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": "../", "baseUrl": "../",
"composite": true,
"module": "commonjs", "module": "commonjs",
"noImplicitReturns": true, "noImplicitReturns": true,
"outDir": "lib", "outDir": "lib",
@ -8,6 +9,11 @@
"strict": true, "strict": true,
"target": "es2017" "target": "es2017"
}, },
"references": [
{
"path": "../common"
}
],
"compileOnSave": true, "compileOnSave": true,
"include": ["src", "../common/**/*.ts"] "include": ["src"]
} }

View File

@ -4,6 +4,9 @@ const API_DOCS_URL = 'https://docs.manifold.markets/api'
module.exports = { module.exports = {
staticPageGenerationTimeout: 600, // e.g. stats page staticPageGenerationTimeout: 600, // e.g. stats page
reactStrictMode: true, reactStrictMode: true,
typescript: {
ignoreBuildErrors: true,
},
experimental: { experimental: {
externalDir: true, externalDir: true,
optimizeCss: true, optimizeCss: true,

View File

@ -1,6 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es5", "target": "es5",
"composite": true,
"baseUrl": "../", "baseUrl": "../",
"lib": ["dom", "dom.iterable", "esnext"], "lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true, "allowJs": true,
@ -16,10 +17,15 @@
"jsx": "preserve", "jsx": "preserve",
"incremental": true "incremental": true
}, },
"references": [
{
"path": "../common"
}
],
"watchOptions": { "watchOptions": {
"excludeDirectories": [".next"] "excludeDirectories": [".next"]
}, },
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "../common/**/*.ts"], "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }