Package Exports
- @cmdoss/cryptoguard-manifest-tanstack-start
- @cmdoss/cryptoguard-manifest-tanstack-start/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@cmdoss/cryptoguard-manifest-tanstack-start) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@cryptoguard/manifest-tanstack-start
TanStack Start plugin for CryptoGuard manifest generation. Automatically generates a manifest file mapping your TanStack Start build output to served URL paths for binary transparency verification.
Installation
pnpm add @cryptoguard/manifest-tanstack-startUsage
Add the plugin to your vite.config.ts:
import { defineConfig } from 'vite';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import viteReact from '@vitejs/plugin-react';
import { nitroV2Plugin } from '@tanstack/nitro-v2-vite-plugin';
import { cryptoGuardManifest } from '@cryptoguard/manifest-tanstack-start';
export default defineConfig({
plugins: [
nitroV2Plugin(),
tanstackStart(),
viteReact(),
cryptoGuardManifest()
]
});Configuration
With TanStack Start Config
Pass your configuration to the plugin:
import { defineConfig } from 'vite';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
import { cryptoGuardManifest } from '@cryptoguard/manifest-tanstack-start';
const tanstackConfig = {
base: '/docs'
};
export default defineConfig({
base: tanstackConfig.base,
plugins: [
tanstackStart(),
cryptoGuardManifest(tanstackConfig)
]
});Plugin Options
cryptoGuardManifest(tanstackConfig, {
verbose: true, // Enable detailed logging
disabled: false, // Disable manifest generation
projectRoot: process.cwd() // Project root directory
})Environment Variables
You can use environment variables for dynamic configuration:
const tanstackConfig = {
base: process.env.PUBLIC_BASE_PATH || ''
};
export default defineConfig({
base: tanstackConfig.base || undefined,
plugins: [
tanstackStart(),
cryptoGuardManifest(tanstackConfig, {
verbose: process.env.MANIFEST_VERBOSE === 'true',
disabled: process.env.MANIFEST_DISABLED === 'true'
})
]
});Generated Manifest
The plugin generates a manifest.json file in your project root:
{
"version": "1.0",
"framework": "tanstack-start",
"frameworkVersion": "1.132.0",
"sources": [
{
"dir": ".output/public",
"serveAt": "/"
}
]
}With Base Path
When using base configuration:
{
"version": "1.0",
"framework": "tanstack-start",
"frameworkVersion": "1.132.0",
"sources": [
{
"dir": ".output/public",
"serveAt": "/docs"
}
]
}How It Works
- Build Hook: Runs after TanStack Start build completes (
closeBundle) - Path Detection: Extracts
baseandoutDirfrom your config - Manifest Generation: Maps
.output/public/to the appropriate serve path - Smart Updates: Only updates manifest.json when content changes
- Validation: Ensures manifest security (no path traversal, proper structure)
TanStack Start Build Output Structure
TanStack Start (with Nitro) generates:
.output/public/- All client-side assets.output/public/assets/- Bundled JavaScript and CSS (hashed filenames).output/server/- Server-side rendering code (not served to clients)
The plugin maps the .output/public/ directory to your configured base path, as TanStack Start serves all client assets (including assets/ subdirectory) from this location.
URL Mapping Example
File on Disk URL in Browser
──────────────────────────────────────────────────────────────
.output/public/assets/main-DzvKBgP-.js → /assets/main-DzvKBgP-.js
.output/public/assets/styles-D0UYo-87.css → /assets/styles-D0UYo-87.css
.output/public/favicon.ico → /favicon.ico
.output/public/logo192.png → /logo192.pngWith base: "/docs":
.output/public/assets/main.js → /docs/assets/main.js
.output/public/favicon.ico → /docs/favicon.icoLicense
MIT