@phila/cli 0.0.12 → 0.0.13
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.md +6 -6
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/deploy.d.ts +8 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +18 -7
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +30 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/ship.js +2 -2
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +17 -7
- package/dist/commands/validate.js.map +1 -1
- package/dist/templates/_shared/city.config.json.tmpl +1 -0
- package/dist/templates/_shared/webapp-cdk-package.json.tmpl +0 -3
- package/dist/templates/lambda-api-nodejs/README.md.tmpl +5 -5
- package/dist/templates/lambda-api-nodejs/apps/__lambdaName__/index.ts +1 -1
- package/dist/templates/lambda-api-nodejs/apps/__lambdaName__/package.json +2 -2
- package/dist/templates/lambda-api-nodejs/cdk/app.ts.tmpl +2 -2
- package/dist/templates/lambda-api-nodejs/cdk/cdk.json +1 -1
- package/dist/templates/lambda-api-nodejs/cdk/package.json +0 -3
- package/dist/templates/lambda-api-nodejs/package.json.tmpl +3 -0
- package/dist/templates/lambda-dynamo-api/README.md.tmpl +5 -5
- package/dist/templates/lambda-dynamo-api/apps/__lambdaName__/index.ts +1 -1
- package/dist/templates/lambda-dynamo-api/apps/__lambdaName__/package.json +2 -2
- package/dist/templates/lambda-dynamo-api/cdk/app.ts.tmpl +2 -2
- package/dist/templates/lambda-dynamo-api/cdk/cdk.json +3 -8
- package/dist/templates/lambda-dynamo-api/cdk/package.json +0 -3
- package/dist/templates/lambda-dynamo-api/package.json.tmpl +3 -0
- package/dist/templates/lambda-postgres-api/README.md.tmpl +6 -6
- package/dist/templates/lambda-postgres-api/apps/__lambdaName__/index.ts +1 -1
- package/dist/templates/lambda-postgres-api/apps/__lambdaName__/package.json +2 -2
- package/dist/templates/lambda-postgres-api/cdk/app.ts.tmpl +2 -2
- package/dist/templates/lambda-postgres-api/cdk/cdk.json +1 -1
- package/dist/templates/lambda-postgres-api/cdk/package.json +0 -3
- package/dist/templates/lambda-postgres-api/package.json.tmpl +3 -0
- package/dist/templates/static-site/README.md.tmpl +2 -2
- package/dist/templates/static-site/cdk/app.ts.tmpl +2 -2
- package/dist/templates/static-site/cdk/cdk.json +1 -1
- package/dist/templates/static-site/cdk/package.json +0 -3
- package/dist/templates/static-site/frontend/README.md +4 -4
- package/dist/templates/static-site/package.json.tmpl +4 -1
- package/dist/templates/webapp-ecs-dotnet/README.md.tmpl +4 -4
- package/dist/templates/webapp-ecs-dotnet/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-ecs-dotnet/cdk/cdk.json +1 -1
- package/dist/templates/webapp-ecs-dotnet/package.json.tmpl +6 -3
- package/dist/templates/webapp-ecs-node/README.md.tmpl +7 -7
- package/dist/templates/webapp-ecs-node/apps/api/Dockerfile +5 -5
- package/dist/templates/webapp-ecs-node/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-ecs-node/cdk/cdk.json +1 -1
- package/dist/templates/webapp-ecs-node/package.json.tmpl +7 -4
- package/dist/templates/webapp-ecs-postgres-dotnet/README.md.tmpl +5 -5
- package/dist/templates/webapp-ecs-postgres-dotnet/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-ecs-postgres-dotnet/cdk/cdk.json +1 -1
- package/dist/templates/webapp-ecs-postgres-dotnet/package.json.tmpl +6 -3
- package/dist/templates/webapp-ecs-postgres-node/README.md.tmpl +8 -8
- package/dist/templates/webapp-ecs-postgres-node/apps/api/Dockerfile +5 -5
- package/dist/templates/webapp-ecs-postgres-node/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-ecs-postgres-node/cdk/cdk.json +1 -1
- package/dist/templates/webapp-ecs-postgres-node/package.json.tmpl +7 -4
- package/dist/templates/webapp-lambda-dotnet/README.md.tmpl +4 -4
- package/dist/templates/webapp-lambda-dotnet/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-dotnet/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-dotnet/package.json.tmpl +6 -3
- package/dist/templates/webapp-lambda-dynamo-dotnet/README.md.tmpl +4 -4
- package/dist/templates/webapp-lambda-dynamo-dotnet/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-dynamo-dotnet/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-dynamo-dotnet/package.json.tmpl +6 -3
- package/dist/templates/webapp-lambda-dynamo-node/README.md.tmpl +6 -6
- package/dist/templates/webapp-lambda-dynamo-node/apps/api/index.ts +1 -1
- package/dist/templates/webapp-lambda-dynamo-node/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-dynamo-node/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-dynamo-node/package.json.tmpl +6 -3
- package/dist/templates/webapp-lambda-node/README.md.tmpl +5 -5
- package/dist/templates/webapp-lambda-node/apps/api/index.ts +1 -1
- package/dist/templates/webapp-lambda-node/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-node/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-node/package.json.tmpl +6 -3
- package/dist/templates/webapp-lambda-postgres-dotnet/README.md.tmpl +5 -5
- package/dist/templates/webapp-lambda-postgres-dotnet/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-postgres-dotnet/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-postgres-dotnet/package.json.tmpl +6 -3
- package/dist/templates/webapp-lambda-postgres-node/README.md.tmpl +7 -7
- package/dist/templates/webapp-lambda-postgres-node/apps/api/index.ts +1 -1
- package/dist/templates/webapp-lambda-postgres-node/cdk/app.ts.tmpl +3 -4
- package/dist/templates/webapp-lambda-postgres-node/cdk/cdk.json +1 -1
- package/dist/templates/webapp-lambda-postgres-node/package.json.tmpl +6 -3
- package/dist/utils/install-env.d.ts +1 -1
- package/dist/utils/install-env.js +6 -6
- package/dist/utils/install-env.js.map +1 -1
- package/dist/utils/package-manager.d.ts +34 -2
- package/dist/utils/package-manager.d.ts.map +1 -1
- package/dist/utils/package-manager.js +102 -15
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/template.d.ts +7 -0
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +8 -1
- package/dist/utils/template.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,wFAAwF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCxF,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,10 +22,10 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# Install dependencies
|
|
25
|
-
|
|
25
|
+
{{installCommand}}
|
|
26
26
|
|
|
27
27
|
# Build all packages
|
|
28
|
-
|
|
28
|
+
{{runScriptPrefix}} build
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
### Deployment
|
|
@@ -48,13 +48,13 @@ city deploy prod
|
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
# Build TypeScript
|
|
51
|
-
|
|
51
|
+
{{runScriptPrefix}} build
|
|
52
52
|
|
|
53
53
|
# View CDK diff before deploying
|
|
54
|
-
|
|
54
|
+
{{runScriptPrefix}} diff
|
|
55
55
|
|
|
56
56
|
# Synthesize CloudFormation template
|
|
57
|
-
|
|
57
|
+
{{runScriptPrefix}} synth
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Project Structure
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* by the CDK construct when a database is attached to the stack.
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
-
import type { APIGWV1Payload } from '@phila/philaroute/dist/
|
|
42
|
+
import type { APIGWV1Payload } from '@phila/philaroute/dist/aws';
|
|
43
43
|
import type { RestAccumulator } from '@phila/philaroute/dist/types';
|
|
44
44
|
import { Router, http, validate } from '@phila/philaroute';
|
|
45
45
|
|
|
@@ -37,8 +37,8 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
37
37
|
stackName: '{{appName}}-' + environment,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
new LambdaApi(stack, '{{appName}}Api', {
|
|
40
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
41
|
+
new LambdaApi(stack as any, '{{appName}}Api', {
|
|
42
42
|
...context,
|
|
43
43
|
apiId: 'main',
|
|
44
44
|
runtime: 'nodejs20',
|
|
@@ -22,10 +22,10 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# Install dependencies
|
|
25
|
-
|
|
25
|
+
{{installCommand}}
|
|
26
26
|
|
|
27
27
|
# Build all packages
|
|
28
|
-
|
|
28
|
+
{{runScriptPrefix}} build
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
### Deployment
|
|
@@ -48,13 +48,13 @@ city deploy prod
|
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
# Build TypeScript
|
|
51
|
-
|
|
51
|
+
{{runScriptPrefix}} build
|
|
52
52
|
|
|
53
53
|
# View CDK diff before deploying
|
|
54
|
-
|
|
54
|
+
{{runScriptPrefix}} diff
|
|
55
55
|
|
|
56
56
|
# Synthesize CloudFormation template
|
|
57
|
-
|
|
57
|
+
{{runScriptPrefix}} synth
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Project Structure
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* DynamoDB integration using AWS SDK v3 DocumentClient
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type { APIGWV1Payload } from '@phila/philaroute/dist/
|
|
11
|
+
import type { APIGWV1Payload } from '@phila/philaroute/dist/aws';
|
|
12
12
|
import type { RestAccumulator } from '@phila/philaroute/dist/types';
|
|
13
13
|
import { Router, http, validate } from '@phila/philaroute';
|
|
14
14
|
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"description": "Lambda function handler with DynamoDB",
|
|
5
5
|
"private": true,
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "
|
|
8
|
-
"watch": "
|
|
7
|
+
"build": "{{execCommand}} tsc",
|
|
8
|
+
"watch": "{{execCommand}} tsc -w"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@phila/philaroute": "^1.0.12",
|
|
@@ -37,8 +37,8 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
37
37
|
stackName: '{{appName}}-' + environment,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
new LambdaDynamoApi(stack, '{{appName}}Api', {
|
|
40
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
41
|
+
new LambdaDynamoApi(stack as any, '{{appName}}Api', {
|
|
42
42
|
...context,
|
|
43
43
|
apiId: 'main',
|
|
44
44
|
runtime: 'nodejs20',
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"app": "
|
|
2
|
+
"app": "{{execCommand}} ts-node --prefer-ts-exts app.ts",
|
|
3
3
|
"watch": {
|
|
4
|
-
"include": [
|
|
5
|
-
"**"
|
|
6
|
-
],
|
|
4
|
+
"include": ["**"],
|
|
7
5
|
"exclude": [
|
|
8
6
|
"README.md",
|
|
9
7
|
"cdk*.json",
|
|
@@ -19,10 +17,7 @@
|
|
|
19
17
|
"context": {
|
|
20
18
|
"@aws-cdk/aws-lambda:recognizeLayerVersion": true,
|
|
21
19
|
"@aws-cdk/core:checkSecretUsage": true,
|
|
22
|
-
"@aws-cdk/core:target-partitions": [
|
|
23
|
-
"aws",
|
|
24
|
-
"aws-cn"
|
|
25
|
-
],
|
|
20
|
+
"@aws-cdk/core:target-partitions": ["aws", "aws-cn"],
|
|
26
21
|
"@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true,
|
|
27
22
|
"@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true,
|
|
28
23
|
"@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true,
|
|
@@ -22,10 +22,10 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# Install dependencies
|
|
25
|
-
|
|
25
|
+
{{installCommand}}
|
|
26
26
|
|
|
27
27
|
# Build all packages
|
|
28
|
-
|
|
28
|
+
{{runScriptPrefix}} build
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
### Deployment
|
|
@@ -48,13 +48,13 @@ city deploy prod
|
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
# Build TypeScript
|
|
51
|
-
|
|
51
|
+
{{runScriptPrefix}} build
|
|
52
52
|
|
|
53
53
|
# View CDK diff before deploying
|
|
54
|
-
|
|
54
|
+
{{runScriptPrefix}} diff
|
|
55
55
|
|
|
56
56
|
# Synthesize CloudFormation template
|
|
57
|
-
|
|
57
|
+
{{runScriptPrefix}} synth
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Project Structure
|
|
@@ -205,7 +205,7 @@ This application creates:
|
|
|
205
205
|
To use Aurora Serverless v2 instead of provisioned RDS, edit `cdk/app.ts`:
|
|
206
206
|
|
|
207
207
|
```typescript
|
|
208
|
-
new LambdaPostgresApi(stack, '{{appName}}Api', {
|
|
208
|
+
new LambdaPostgresApi(stack as any, '{{appName}}Api', {
|
|
209
209
|
...context,
|
|
210
210
|
apiId: 'main',
|
|
211
211
|
runtime: 'nodejs20',
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* by the CDK construct.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import type { APIGWV1Payload } from '@phila/philaroute/dist/
|
|
15
|
+
import type { APIGWV1Payload } from '@phila/philaroute/dist/aws';
|
|
16
16
|
import type { RestAccumulator } from '@phila/philaroute/dist/types';
|
|
17
17
|
import { Router, http, validate } from '@phila/philaroute';
|
|
18
18
|
import { getPool } from '@phila/db-postgres';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"description": "Lambda function handler with PostgreSQL database access",
|
|
5
5
|
"private": true,
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "
|
|
8
|
-
"watch": "
|
|
7
|
+
"build": "{{execCommand}} tsc",
|
|
8
|
+
"watch": "{{execCommand}} tsc -w"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@phila/philaroute": "^1.0.12",
|
|
@@ -37,8 +37,8 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
37
37
|
stackName: '{{appName}}-' + environment,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
new LambdaPostgresApi(stack, '{{appName}}Api', {
|
|
40
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
41
|
+
new LambdaPostgresApi(stack as any, '{{appName}}Api', {
|
|
42
42
|
...context,
|
|
43
43
|
apiId: 'main',
|
|
44
44
|
runtime: 'nodejs20',
|
|
@@ -20,11 +20,11 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
# Install dependencies
|
|
23
|
-
|
|
23
|
+
{{installCommand}}
|
|
24
24
|
|
|
25
25
|
# Set up frontend (replace placeholder with Nuxt)
|
|
26
26
|
cd frontend
|
|
27
|
-
|
|
27
|
+
{{execCommand}} nuxi@latest init .
|
|
28
28
|
# Configure nuxt.config.ts for SSG
|
|
29
29
|
```
|
|
30
30
|
|
|
@@ -37,8 +37,8 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
37
37
|
stackName: '{{appName}}-' + environment,
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//
|
|
41
|
-
new StaticSite(stack, '{{appName}}Site', {
|
|
40
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
41
|
+
new StaticSite(stack as any, '{{appName}}Site', {
|
|
42
42
|
...context,
|
|
43
43
|
assetDir: '../frontend/dist',
|
|
44
44
|
});
|
|
@@ -11,7 +11,7 @@ Replace this placeholder with a Nuxt project:
|
|
|
11
11
|
rm -rf frontend/*
|
|
12
12
|
|
|
13
13
|
# Create Nuxt project
|
|
14
|
-
|
|
14
|
+
{{execCommand}} nuxi@latest init frontend
|
|
15
15
|
|
|
16
16
|
# Configure for SSG in nuxt.config.ts:
|
|
17
17
|
# export default defineNuxtConfig({
|
|
@@ -26,14 +26,14 @@ npx nuxi@latest init frontend
|
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
cd frontend
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
{{installCommand}}
|
|
30
|
+
{{runScriptPrefix}} generate # Outputs to .output/public/
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## Deploy
|
|
34
34
|
|
|
35
35
|
The `city ship --web` command will:
|
|
36
|
-
1. Run `
|
|
36
|
+
1. Run `{{runScriptPrefix}} build` in this directory
|
|
37
37
|
2. Sync `dist/` to the S3 bucket
|
|
38
38
|
3. Invalidate the CloudFront cache
|
|
39
39
|
|
|
@@ -24,7 +24,7 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
# Install frontend and CDK dependencies
|
|
27
|
-
|
|
27
|
+
{{installCommand}}
|
|
28
28
|
|
|
29
29
|
# Restore .NET dependencies
|
|
30
30
|
cd apps/api && dotnet restore && cd ../..
|
|
@@ -34,16 +34,16 @@ cd apps/api && dotnet restore && cd ../..
|
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
36
|
# Run frontend dev server
|
|
37
|
-
|
|
37
|
+
{{runScriptPrefix}} dev
|
|
38
38
|
|
|
39
39
|
# Run API locally
|
|
40
40
|
cd apps/api && dotnet run
|
|
41
41
|
|
|
42
42
|
# Build frontend for production
|
|
43
|
-
|
|
43
|
+
{{runScriptPrefix}} build:frontend
|
|
44
44
|
|
|
45
45
|
# Build API Docker image
|
|
46
|
-
|
|
46
|
+
{{runScriptPrefix}} build:api
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
### Deployment
|
|
@@ -39,14 +39,13 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
39
39
|
stackName: '{{appName}}-' + environment,
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
//
|
|
43
|
-
new StaticSite(stack, '{{appName}}Site', {
|
|
42
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
43
|
+
new StaticSite(stack as any, '{{appName}}Site', {
|
|
44
44
|
...context,
|
|
45
45
|
assetDir: '../frontend/dist',
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
new EcsApi(stack, '{{appName}}Api', {
|
|
48
|
+
new EcsApi(stack as any, '{{appName}}Api', {
|
|
50
49
|
...context,
|
|
51
50
|
apiId: 'api',
|
|
52
51
|
image: ecs.ContainerImage.fromAsset(path.join(__dirname, '../apps/api')),
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
"description": "Web application with Nuxt frontend and .NET ECS containerized API backend",
|
|
5
5
|
"private": true,
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "
|
|
8
|
-
"build:frontend": "cd frontend &&
|
|
7
|
+
"build": "{{runScriptPrefix}} build:frontend && {{runScriptPrefix}} build:api",
|
|
8
|
+
"build:frontend": "cd frontend && {{runScriptPrefix}} build",
|
|
9
9
|
"build:api": "cd apps/api && docker build -t {{appName}}-api .",
|
|
10
|
-
"dev": "cd frontend &&
|
|
10
|
+
"dev": "cd frontend && {{runScriptPrefix}} dev",
|
|
11
11
|
"test": "{{testCommand}}",
|
|
12
12
|
"synth": "cd cdk && cdk synth",
|
|
13
13
|
"deploy": "cd cdk && cdk deploy",
|
|
@@ -20,5 +20,8 @@
|
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/node": "^20.10.0",
|
|
22
22
|
"typescript": "^5.3.0"
|
|
23
|
+
},
|
|
24
|
+
"overrides": {
|
|
25
|
+
"constructs": "10.4.4"
|
|
23
26
|
}
|
|
24
27
|
}
|
|
@@ -23,26 +23,26 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
|
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# Install dependencies
|
|
26
|
-
|
|
26
|
+
{{installCommand}}
|
|
27
27
|
|
|
28
28
|
# Build all packages
|
|
29
|
-
|
|
29
|
+
{{runScriptPrefix}} build
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
### Development
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
# Run frontend dev server
|
|
36
|
-
|
|
36
|
+
{{runScriptPrefix}} dev
|
|
37
37
|
|
|
38
38
|
# Run API locally (requires Docker)
|
|
39
|
-
cd apps/api &&
|
|
39
|
+
cd apps/api && {{runScriptPrefix}} dev
|
|
40
40
|
|
|
41
41
|
# Build frontend for production
|
|
42
|
-
|
|
42
|
+
{{runScriptPrefix}} build:frontend
|
|
43
43
|
|
|
44
44
|
# Build API Docker image
|
|
45
|
-
|
|
45
|
+
{{runScriptPrefix}} build:api
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### Deployment
|
|
@@ -137,7 +137,7 @@ Run the API locally:
|
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
139
|
cd apps/api
|
|
140
|
-
|
|
140
|
+
{{runScriptPrefix}} dev
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
Or build and run the Docker container:
|
|
@@ -6,12 +6,12 @@ FROM node:20-alpine AS builder
|
|
|
6
6
|
|
|
7
7
|
WORKDIR /app
|
|
8
8
|
|
|
9
|
-
COPY package
|
|
10
|
-
RUN
|
|
9
|
+
COPY package.json {{lockfileName}} ./
|
|
10
|
+
RUN {{ciCommand}}
|
|
11
11
|
|
|
12
12
|
COPY tsconfig.json ./
|
|
13
13
|
COPY *.ts ./
|
|
14
|
-
RUN
|
|
14
|
+
RUN {{runScriptPrefix}} build
|
|
15
15
|
|
|
16
16
|
# Production stage
|
|
17
17
|
FROM node:20-alpine
|
|
@@ -19,8 +19,8 @@ FROM node:20-alpine
|
|
|
19
19
|
WORKDIR /app
|
|
20
20
|
|
|
21
21
|
# Copy package files and install production dependencies only
|
|
22
|
-
COPY package
|
|
23
|
-
RUN
|
|
22
|
+
COPY package.json {{lockfileName}} ./
|
|
23
|
+
RUN {{ciProdCommand}}
|
|
24
24
|
|
|
25
25
|
# Copy compiled JavaScript from builder
|
|
26
26
|
COPY --from=builder /app/dist ./dist
|
|
@@ -39,14 +39,13 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
|
|
|
39
39
|
stackName: '{{appName}}-' + environment,
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
//
|
|
43
|
-
new StaticSite(stack, '{{appName}}Site', {
|
|
42
|
+
// Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
|
|
43
|
+
new StaticSite(stack as any, '{{appName}}Site', {
|
|
44
44
|
...context,
|
|
45
45
|
assetDir: '../frontend/dist',
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
new EcsApi(stack, '{{appName}}Api', {
|
|
48
|
+
new EcsApi(stack as any, '{{appName}}Api', {
|
|
50
49
|
...context,
|
|
51
50
|
apiId: 'api',
|
|
52
51
|
image: ecs.ContainerImage.fromAsset(path.join(__dirname, '../apps/api')),
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
"private": true,
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "{{buildCommand}}",
|
|
8
|
-
"build:frontend": "cd frontend &&
|
|
9
|
-
"build:api": "cd apps/api &&
|
|
10
|
-
"dev": "cd frontend &&
|
|
11
|
-
"dev:api": "cd apps/api &&
|
|
8
|
+
"build:frontend": "cd frontend && {{runScriptPrefix}} build",
|
|
9
|
+
"build:api": "cd apps/api && {{runScriptPrefix}} build",
|
|
10
|
+
"dev": "cd frontend && {{runScriptPrefix}} dev",
|
|
11
|
+
"dev:api": "cd apps/api && {{runScriptPrefix}} dev",
|
|
12
12
|
"test": "{{testCommand}}",
|
|
13
13
|
"synth": "cd cdk && cdk synth",
|
|
14
14
|
"deploy": "cd cdk && cdk deploy",
|
|
@@ -22,5 +22,8 @@
|
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^20.10.0",
|
|
24
24
|
"typescript": "^5.3.0"
|
|
25
|
+
},
|
|
26
|
+
"overrides": {
|
|
27
|
+
"constructs": "10.4.4"
|
|
25
28
|
}
|
|
26
29
|
}
|