@basaltkit/cli 1.2.3 → 1.2.5

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 CHANGED
@@ -95,10 +95,10 @@ Without registering anything, `runCli` always provides:
95
95
  | `basalt schedule:list` | Lists scheduled tasks and their cron expressions (read from the `schedule:entries` bucket, populated by `@basaltkit/scheduler`) |
96
96
  | `basalt dev [--entry] [--worker] [--queue] [--no-routes]` | Runs the app with watch + restart, **prints the route table on boot**, and with `--worker` also starts a watched `queue:work` alongside it (server + worker in one command). Delegates watching to `tsx watch` / `node --watch`. |
97
97
  | `basalt upgrade [--dry] [--only=<id>]` | Applies framework upgrade codemods (ships the `@machize/*` → `@basaltkit/*` scope rename; `--dry` previews) |
98
- | `basalt publish [<id>] [--force]` | Copies a bundled stub group into the app — `dockerfile`, `ci`, `editorconfig` (run with no id to list) |
98
+ | `basalt publish [<id>] [--force]` | Copies a bundled stub group into the app — `dockerfile` (plus a `.dockerignore` keeping `.env` and keys out of the image), `ci`, `editorconfig` (run with no id to list) |
99
99
 
100
100
  If you also install `@basaltkit/generator`, you gain the `make:*` commands. Feature
101
- plugins register their own: `queue:work|stats|retry` (`@basaltkit/queue`),
101
+ plugins register their own: `queue:work|stats|retry|jobs` (`@basaltkit/queue`),
102
102
  `tenant:list|create|migrate|seed|run` (`@basaltkit/tenancy`), `generate:docs`
103
103
  (`@basaltkit/http`), and `mail:preview` (`@basaltkit/mailer`).
104
104
 
package/dist/publish.js CHANGED
@@ -14,6 +14,26 @@ COPY . .
14
14
  EXPOSE 3000
15
15
  CMD ["node", "dist/main.js"]
16
16
  `;
17
+ /**
18
+ * Published with the Dockerfile: its \`COPY . .\` would otherwise bake \`.env\`,
19
+ * private keys and VCS metadata into an image layer. Every rule is \`**\/\`-prefixed:
20
+ * .dockerignore patterns are anchored at the context root, so a bare \`.env\`
21
+ * or \`*.pem\` would still let \`prisma/.env\` or \`certs/server.key\` through.
22
+ */
23
+ const DOCKERIGNORE = `**/.env
24
+ **/.env.*
25
+ !**/.env.example
26
+ **/.npmrc
27
+ **/.git
28
+ **/node_modules
29
+ **/coverage
30
+ **/*.log
31
+ **/*.pem
32
+ **/*.key
33
+ **/*.p12
34
+ **/*.pfx
35
+ **/.DS_Store
36
+ `;
17
37
  const CI_WORKFLOW = `name: ci
18
38
  on:
19
39
  push: { branches: [main] }
@@ -42,7 +62,14 @@ trim_trailing_whitespace = true
42
62
  `;
43
63
  /** Stubs bundled with the CLI. Apps can register more via the metadata bucket. */
44
64
  export const PUBLISHABLES = [
45
- { id: 'dockerfile', description: 'Production multi-stage Dockerfile', files: () => [{ path: 'Dockerfile', content: DOCKERFILE }] },
65
+ {
66
+ id: 'dockerfile',
67
+ description: 'Production multi-stage Dockerfile (+ .dockerignore keeping secrets out of the image)',
68
+ files: () => [
69
+ { path: 'Dockerfile', content: DOCKERFILE },
70
+ { path: '.dockerignore', content: DOCKERIGNORE },
71
+ ],
72
+ },
46
73
  { id: 'ci', description: 'GitHub Actions CI workflow', files: () => [{ path: '.github/workflows/ci.yml', content: CI_WORKFLOW }] },
47
74
  { id: 'editorconfig', description: 'Shared .editorconfig', files: () => [{ path: '.editorconfig', content: EDITORCONFIG }] },
48
75
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basaltkit/cli",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "engines": {
5
5
  "node": ">=22.5.0"
6
6
  },
@@ -21,9 +21,9 @@
21
21
  "@basaltkit/core": "^1.3.1"
22
22
  },
23
23
  "devDependencies": {
24
- "@types/node": "^26.3.0",
24
+ "@types/node": "^26.5.1",
25
25
  "typescript": "^7.0.2",
26
- "vitest": "^4.1.11",
26
+ "vitest": "^5.0.0",
27
27
  "@basaltkit/tsconfig": "^0.24.0"
28
28
  },
29
29
  "publishConfig": {