如何将自定义令牌处理库排除在Angular缓存之外?
解决Angular应用构建器缓存令牌JSON文件的问题
方法1:在angular.json中配置缓存排除规则
直接在项目的angular.json文件里,针对目标项目的构建配置添加缓存排除路径,让Angular构建器保留全局缓存的同时,忽略你动态更新的令牌相关文件:
{ "projects": { "your-project-name": { "architect": { "build": { "options": { "cache": { "enabled": true, "exclude": [ "src/assets/tokens.json", // 替换为你的令牌JSON实际路径 "path/to/your-token-library/**/*" // 若需排除整个令牌库的所有文件 ] } } }, "serve": { "options": { "cache": true // 确保开发服务器也启用缓存 } } } } } }
方法2:修改令牌加载逻辑破除缓存
如果路径排除不生效,可以在令牌加载函数中加入缓存破坏机制,确保每次都读取最新文件:
纯JavaScript加载函数
export async function loadTokens() { // 用时间戳作为参数强制跳过缓存 const timestamp = new Date().getTime(); const response = await fetch(`/assets/tokens.json?${timestamp}`); return response.json(); }
Angular服务中加载(结合HttpClient)
import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class TokenService { constructor(private http: HttpClient) {} loadTokens() { return this.http.get('/assets/tokens.json', { params: { t: new Date().getTime() } }); } }
方法3:配置令牌库构建输出不被缓存
如果你的令牌处理逻辑是独立Angular库,可在库的ng-package.json中禁用自身缓存:
{ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", "dest": "../../dist/your-token-library", "lib": { "entryFile": "src/public-api.ts" }, "cacheable": false }
此配置会让应用构建器每次都重新处理该库,确保令牌逻辑和文件是最新状态。
内容的提问来源于stack exchange,提问作者JSON Derulo
相关产品推荐
相关产品推荐

