Persistent Storage
Nuxt Skew Protection needs persistent storage to preserve previous build assets across deployments.
The default storage path is node_modules/.cache/nuxt-seo/skew-protection. If your CI pipeline clears this directory, restore it before each build.
Retention Periods
Set retention limits with retentionDays and maxNumberOfVersions. The defaults keep up to 10 versions for 30 days.
export default defineNuxtConfig({
skewProtection: {
// Keep versions for 45 days
retentionDays: 45,
// Keep maximum 15 versions
maxNumberOfVersions: 15
}
})Cleanup happens during build, removing:
- Versions older than
retentionDays - Oldest versions beyond
maxNumberOfVersions
GitHub Actions
The default filesystem storage works with GitHub Actions caching to persist build assets between deployments
using the actions/cache GitHub Action.
actions/cache won't save new assets (it only saves on cache miss).jobs:
build:
runs-on: ubuntu-latest
steps:
# Install...
- name: Cache for Nuxt SEO
uses: actions/cache@v4
with:
path: node_modules/.cache/nuxt-seo
key: nuxt-skew-${{ github.sha }}
restore-keys: |
nuxt-skew-
# Build, etc..The restore-keys fallback restores previous assets. A unique github.sha key lets the cache save new assets after each build.
Cloudflare
If you have your deployments running through Cloudflare then the node_modules folder should automatically persist between deployments, so you do not need any additional configuration.
If you're deploying to Cloudflare using your own CI pipeline, you can use Cloudflare KV storage to persist build assets instead. See the dedicated Cloudflare Deployment guide which covers storage configuration in detail.
Redis
export default defineNuxtConfig({
skewProtection: {
storage: {
driver: 'redis',
host: process.env.REDIS_HOST || 'localhost',
port: Number(process.env.REDIS_PORT) || 6379,
password: process.env.REDIS_PASSWORD,
db: 0,
base: 'skew-protection'
}
}
})Upstash Redis
For serverless deployments like Netlify or Vercel, Upstash provides a Redis-compatible database with an HTTP API.
Install the Upstash Redis client:
npx nypm add @upstash/redisexport default defineNuxtConfig({
skewProtection: {
storage: {
driver: 'upstash',
url: process.env.UPSTASH_REDIS_REST_URL,
token: process.env.UPSTASH_REDIS_REST_TOKEN,
base: 'skew-protection'
}
}
})You can find your REST URL and token in the Upstash Console after creating a database.
CDN Usage
If your CDN already keeps /_nuxt/** assets available across deployments, you can disable asset bundling with bundleAssets.
export default defineNuxtConfig({
skewProtection: {
// Disable persistent storage
bundleAssets: false
}
})