container-superposition 0.1.1
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 +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
# Publishing to npm
|
|
2
|
+
|
|
3
|
+
This guide explains how to publish `container-superposition` to npm, making it available via `npx container-superposition`.
|
|
4
|
+
|
|
5
|
+
## Package Overview
|
|
6
|
+
|
|
7
|
+
**Package Name:** `container-superposition`
|
|
8
|
+
**Current Version:** `0.1.0`
|
|
9
|
+
**Size:** ~327 KB (compressed), 1.2 MB (unpacked)
|
|
10
|
+
**Files:** 327 files
|
|
11
|
+
**Entry Point:** `dist/scripts/init.js`
|
|
12
|
+
|
|
13
|
+
**Available Commands:**
|
|
14
|
+
|
|
15
|
+
- `container-superposition init` - Interactive devcontainer setup
|
|
16
|
+
- `container-superposition regen` - Regenerate from manifest
|
|
17
|
+
- `container-superposition list` - List available overlays
|
|
18
|
+
- `container-superposition doctor` - Environment validation
|
|
19
|
+
|
|
20
|
+
## Publishing Process
|
|
21
|
+
|
|
22
|
+
Publishing is **automated via GitHub Actions** when a new release is created.
|
|
23
|
+
|
|
24
|
+
### Automated Publishing (Recommended)
|
|
25
|
+
|
|
26
|
+
1. **Update version in package.json:**
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm version patch # 0.1.0 → 0.1.1 (bug fixes)
|
|
30
|
+
npm version minor # 0.1.0 → 0.2.0 (new features)
|
|
31
|
+
npm version major # 0.1.0 → 1.0.0 (breaking changes)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. **Update CHANGELOG.md** with release notes
|
|
35
|
+
|
|
36
|
+
3. **Commit and push changes:**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git add package.json package-lock.json CHANGELOG.md
|
|
40
|
+
git commit -m "chore: bump version to X.Y.Z"
|
|
41
|
+
git push
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
4. **Create GitHub Release:**
|
|
45
|
+
- Go to https://github.com/veggerby/container-superposition/releases/new
|
|
46
|
+
- Tag: `vX.Y.Z` (e.g., `v0.1.1`)
|
|
47
|
+
- Title: `vX.Y.Z`
|
|
48
|
+
- Description: Copy from CHANGELOG.md
|
|
49
|
+
- Click "Publish release"
|
|
50
|
+
|
|
51
|
+
5. **GitHub Actions will automatically:**
|
|
52
|
+
- ✅ Validate semantic version format
|
|
53
|
+
- ✅ Install dependencies
|
|
54
|
+
- ✅ Run tests
|
|
55
|
+
- ✅ Build TypeScript
|
|
56
|
+
- ✅ Verify package contents
|
|
57
|
+
- ✅ Publish to npm with provenance
|
|
58
|
+
- ✅ Verify publication
|
|
59
|
+
|
|
60
|
+
### Manual Publishing (Development/Testing)
|
|
61
|
+
|
|
62
|
+
For testing or emergency releases:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 1. Ensure you're logged in to npm
|
|
66
|
+
npm whoami
|
|
67
|
+
|
|
68
|
+
# If not logged in:
|
|
69
|
+
npm login
|
|
70
|
+
|
|
71
|
+
# 2. Run pre-publish checks
|
|
72
|
+
npm run clean
|
|
73
|
+
npm install
|
|
74
|
+
npm run build
|
|
75
|
+
npm test
|
|
76
|
+
|
|
77
|
+
# 3. Verify package contents
|
|
78
|
+
npm pack --dry-run
|
|
79
|
+
|
|
80
|
+
# 4. Test locally with npx
|
|
81
|
+
npm pack
|
|
82
|
+
cd /tmp && npm install /path/to/container-superposition-X.Y.Z.tgz
|
|
83
|
+
npx container-superposition --help
|
|
84
|
+
npx container-superposition list
|
|
85
|
+
|
|
86
|
+
# 5. Publish to npm
|
|
87
|
+
npm publish --access public
|
|
88
|
+
|
|
89
|
+
# For beta/test releases
|
|
90
|
+
npm publish --tag beta --access public
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Pre-Publish Checklist
|
|
94
|
+
|
|
95
|
+
Before creating a release, verify:
|
|
96
|
+
|
|
97
|
+
- [ ] All tests pass (`npm test`)
|
|
98
|
+
- [ ] TypeScript builds without errors (`npm run build`)
|
|
99
|
+
- [ ] Package size is reasonable (`npm pack --dry-run`)
|
|
100
|
+
- [ ] CHANGELOG.md is updated with release notes
|
|
101
|
+
- [ ] Version number follows semantic versioning
|
|
102
|
+
- [ ] README.md reflects current functionality
|
|
103
|
+
- [ ] No secrets or sensitive data in package
|
|
104
|
+
- [ ] All CLI commands work (`init`, `regen`, `list`, `doctor`)
|
|
105
|
+
|
|
106
|
+
## Post-Publication
|
|
107
|
+
|
|
108
|
+
After publishing, verify:
|
|
109
|
+
|
|
110
|
+
1. **Package is live on npm:**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npm view container-superposition
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
2. **npx works:**
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npx container-superposition@latest --help
|
|
120
|
+
npx container-superposition@latest list
|
|
121
|
+
npx container-superposition@latest doctor
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
3. **Installation works:**
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm install -g container-superposition
|
|
128
|
+
container-superposition init --help
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
4. **Update documentation:**
|
|
132
|
+
- Ensure README.md shows latest version
|
|
133
|
+
- Update any version-specific examples
|
|
134
|
+
- Announce on relevant channels
|
|
135
|
+
|
|
136
|
+
## Pre-Publish Checklist
|
|
137
|
+
|
|
138
|
+
### 1. Check Package Name Availability
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Check if name is available
|
|
142
|
+
npm view container-superposition
|
|
143
|
+
|
|
144
|
+
# If you see "npm error code E404", the name is available ✓
|
|
145
|
+
# If you see package info, the name is taken ✗
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 2. Run Tests
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Unit tests
|
|
152
|
+
npm test
|
|
153
|
+
|
|
154
|
+
# Smoke tests
|
|
155
|
+
npm run test:smoke
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 3. Verify Package Contents
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Dry run to see what will be published
|
|
162
|
+
npm pack --dry-run
|
|
163
|
+
|
|
164
|
+
# Note: You may see a warning about .npmignore not being found.
|
|
165
|
+
# This is safe to ignore - we use the "files" field in package.json
|
|
166
|
+
# as the primary inclusion mechanism (explicit allowlist approach).
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Expected contents:**
|
|
170
|
+
|
|
171
|
+
- ✅ 138 files
|
|
172
|
+
- ✅ All overlays (dotnet, nodejs, python, postgres, redis, jaeger, prometheus, grafana, loki, etc.)
|
|
173
|
+
- ✅ All templates (plain, compose)
|
|
174
|
+
- ✅ All features (local-secrets-manager, project-scaffolder, team-conventions)
|
|
175
|
+
- ✅ Compiled dist/ folder
|
|
176
|
+
- ✅ Tool configuration (overlays.yml, schema)
|
|
177
|
+
- ✅ README and LICENSE
|
|
178
|
+
|
|
179
|
+
**Package size:**
|
|
180
|
+
|
|
181
|
+
- Compressed: ~122 KB
|
|
182
|
+
- Unpacked: ~462 KB
|
|
183
|
+
|
|
184
|
+
### 4. Update Version (if needed)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# First release (already at 0.1.0)
|
|
188
|
+
# For subsequent releases:
|
|
189
|
+
|
|
190
|
+
# Patch release (bug fixes): 0.1.0 → 0.1.1
|
|
191
|
+
npm version patch
|
|
192
|
+
|
|
193
|
+
# Minor release (new features): 0.1.0 → 0.2.0
|
|
194
|
+
npm version minor
|
|
195
|
+
|
|
196
|
+
# Major release (breaking changes): 0.1.0 → 1.0.0
|
|
197
|
+
npm version major
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 5. Update CHANGELOG.md
|
|
201
|
+
|
|
202
|
+
Document changes in [CHANGELOG.md](../CHANGELOG.md):
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
## [0.1.0] - 2026-02-05
|
|
206
|
+
|
|
207
|
+
### Added
|
|
208
|
+
|
|
209
|
+
- Initial release
|
|
210
|
+
- Interactive questionnaire with dependency resolution
|
|
211
|
+
- 24+ overlays across languages, databases, observability, cloud tools, dev tools
|
|
212
|
+
- Plain and compose base templates
|
|
213
|
+
- ...
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Publishing
|
|
217
|
+
|
|
218
|
+
### Option 1: Public Release
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Build is automatic via prepublishOnly hook
|
|
222
|
+
npm publish
|
|
223
|
+
|
|
224
|
+
# The package will be available at:
|
|
225
|
+
# https://www.npmjs.com/package/container-superposition
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Option 2: Beta Release (Recommended for First Publish)
|
|
229
|
+
|
|
230
|
+
Test with a beta tag first:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
# Publish as beta
|
|
234
|
+
npm publish --tag beta
|
|
235
|
+
|
|
236
|
+
# Users install with:
|
|
237
|
+
# npx container-superposition@beta init
|
|
238
|
+
# or
|
|
239
|
+
# npm install -g container-superposition@beta
|
|
240
|
+
|
|
241
|
+
# When ready to promote to latest:
|
|
242
|
+
npm dist-tag add container-superposition@0.1.0 latest
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Option 3: Scoped Package (If Name Taken)
|
|
246
|
+
|
|
247
|
+
If `container-superposition` is unavailable, use a scoped package:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Update package.json name to:
|
|
251
|
+
# "@veggerby/container-superposition"
|
|
252
|
+
|
|
253
|
+
# Publish publicly (scoped packages default to private)
|
|
254
|
+
npm publish --access public
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Post-Publish
|
|
258
|
+
|
|
259
|
+
### 1. Verify Installation
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Test npx execution (may take 1-2 minutes to propagate)
|
|
263
|
+
npx container-superposition@latest init --help
|
|
264
|
+
|
|
265
|
+
# Test global installation
|
|
266
|
+
npm install -g container-superposition
|
|
267
|
+
container-superposition init --help
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 2. Create GitHub Release
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Tag the release
|
|
274
|
+
git tag v0.1.0
|
|
275
|
+
git push origin v0.1.0
|
|
276
|
+
|
|
277
|
+
# Create release on GitHub:
|
|
278
|
+
# https://github.com/veggerby/container-superposition/releases/new
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 3. Update Documentation
|
|
282
|
+
|
|
283
|
+
Update README.md to reflect published status:
|
|
284
|
+
|
|
285
|
+
````markdown
|
|
286
|
+
## Quick Start
|
|
287
|
+
|
|
288
|
+
### Via npx (Recommended)
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
npx container-superposition init
|
|
292
|
+
```
|
|
293
|
+
````
|
|
294
|
+
|
|
295
|
+
### Or Install Globally
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
npm install -g container-superposition
|
|
299
|
+
container-superposition init
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
````
|
|
303
|
+
|
|
304
|
+
## Continuous Publishing
|
|
305
|
+
|
|
306
|
+
### Automated Releases (Future Enhancement)
|
|
307
|
+
|
|
308
|
+
Consider GitHub Actions for automated publishing:
|
|
309
|
+
|
|
310
|
+
```yaml
|
|
311
|
+
# .github/workflows/publish.yml
|
|
312
|
+
name: Publish to npm
|
|
313
|
+
|
|
314
|
+
on:
|
|
315
|
+
release:
|
|
316
|
+
types: [created]
|
|
317
|
+
|
|
318
|
+
jobs:
|
|
319
|
+
publish:
|
|
320
|
+
runs-on: ubuntu-latest
|
|
321
|
+
steps:
|
|
322
|
+
- uses: actions/checkout@v4
|
|
323
|
+
- uses: actions/setup-node@v4
|
|
324
|
+
with:
|
|
325
|
+
node-version: '20'
|
|
326
|
+
registry-url: 'https://registry.npmjs.org'
|
|
327
|
+
- run: npm ci
|
|
328
|
+
- run: npm test
|
|
329
|
+
- run: npm publish
|
|
330
|
+
env:
|
|
331
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Troubleshooting
|
|
335
|
+
|
|
336
|
+
### ".npmignore not found" Warning
|
|
337
|
+
|
|
338
|
+
If you see:
|
|
339
|
+
```
|
|
340
|
+
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion.
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**This warning can be safely ignored.** The package uses the `"files"` field in `package.json` as the primary inclusion mechanism (allowlist approach), which is more explicit and maintainable than `.npmignore` (denylist approach).
|
|
344
|
+
|
|
345
|
+
The `"files"` field specifies exactly what to include:
|
|
346
|
+
```json
|
|
347
|
+
{
|
|
348
|
+
"files": [
|
|
349
|
+
"dist/",
|
|
350
|
+
"templates/",
|
|
351
|
+
"features/",
|
|
352
|
+
"overlays/",
|
|
353
|
+
"tool/**/*.json",
|
|
354
|
+
"tool/**/*.yml",
|
|
355
|
+
"docs/**/*.md"
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
This approach is recommended by npm for packages.
|
|
361
|
+
|
|
362
|
+
### Build Fails
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Clean everything and rebuild
|
|
366
|
+
npm run clean
|
|
367
|
+
rm -rf node_modules package-lock.json
|
|
368
|
+
npm install
|
|
369
|
+
npm run build
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Package Size Too Large
|
|
373
|
+
|
|
374
|
+
Check what's being included:
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
npm pack --dry-run | grep "npm notice"
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
To exclude unnecessary files, modify the `"files"` array in `package.json`:
|
|
381
|
+
|
|
382
|
+
```json
|
|
383
|
+
{
|
|
384
|
+
"files": [
|
|
385
|
+
"dist/", // Keep compiled code
|
|
386
|
+
"templates/", // Keep base templates
|
|
387
|
+
"features/", // Keep custom features
|
|
388
|
+
"overlays/", // Keep all overlays
|
|
389
|
+
// Exclude specific patterns with "!" prefix if needed
|
|
390
|
+
"!overlays/**/node_modules"
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
The `"files"` field is an allowlist - only listed items are included. This is more explicit and maintainable than using `.npmignore`.
|
|
396
|
+
|
|
397
|
+
### Permission Errors
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
# Verify npm login
|
|
401
|
+
npm whoami
|
|
402
|
+
|
|
403
|
+
# If not logged in:
|
|
404
|
+
npm login
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Name Already Taken
|
|
408
|
+
|
|
409
|
+
Options:
|
|
410
|
+
1. Use scoped package: `@veggerby/container-superposition`
|
|
411
|
+
2. Choose different name: `devcontainer-superposition`, `superposition-dev`, etc.
|
|
412
|
+
3. Contact current owner if package is abandoned
|
|
413
|
+
|
|
414
|
+
### Version Already Published
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
# Cannot republish same version
|
|
418
|
+
# Bump version and republish:
|
|
419
|
+
npm version patch
|
|
420
|
+
npm publish
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## Best Practices
|
|
424
|
+
|
|
425
|
+
### Versioning Strategy
|
|
426
|
+
|
|
427
|
+
Follow [Semantic Versioning](https://semver.org/):
|
|
428
|
+
- **MAJOR**: Breaking changes (e.g., removing overlays, changing CLI args)
|
|
429
|
+
- **MINOR**: New features (e.g., adding overlays, new CLI options)
|
|
430
|
+
- **PATCH**: Bug fixes (e.g., fixing composition logic, updating deps)
|
|
431
|
+
|
|
432
|
+
### Pre-Release Versions
|
|
433
|
+
|
|
434
|
+
For experimental features:
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
# Create pre-release
|
|
438
|
+
npm version 0.2.0-alpha.1
|
|
439
|
+
|
|
440
|
+
# Publish with tag
|
|
441
|
+
npm publish --tag next
|
|
442
|
+
|
|
443
|
+
# Users install with:
|
|
444
|
+
# npx container-superposition@next init
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### Deprecation
|
|
448
|
+
|
|
449
|
+
If publishing a new major version:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
# Deprecate old version
|
|
453
|
+
npm deprecate container-superposition@0.1.0 "Use v1.0.0 instead"
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
## Unpublishing (Emergency Only)
|
|
457
|
+
|
|
458
|
+
**⚠️ Only use within 72 hours of publishing:**
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# Unpublish specific version
|
|
462
|
+
npm unpublish container-superposition@0.1.0
|
|
463
|
+
|
|
464
|
+
# Unpublish entire package (use with caution!)
|
|
465
|
+
npm unpublish container-superposition --force
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**Note:** npm discourages unpublishing as it breaks dependents. Prefer deprecation instead.
|
|
469
|
+
|
|
470
|
+
## References
|
|
471
|
+
|
|
472
|
+
- [npm Publishing Packages](https://docs.npmjs.com/cli/v10/commands/npm-publish)
|
|
473
|
+
- [npm Version Management](https://docs.npmjs.com/cli/v10/commands/npm-version)
|
|
474
|
+
- [Semantic Versioning](https://semver.org/)
|
|
475
|
+
- [npm Package Lifecycle Scripts](https://docs.npmjs.com/cli/v10/using-npm/scripts#life-cycle-scripts)
|
|
476
|
+
````
|