我们正在使用aurelia-cli
。任务包括:
build.json
build.ts
process-css.ts
process-markup.ts
process-sass.ts
run.json
run.ts
test.json
test.ts
transpile.ts
如果我们用cli完成缓存破坏解决方案怎么办?
我们已经尝试过的是增加scripts
目录的编号,使其成为scripts1
,scripts2
,scriptsN
。
答案 0 :(得分:11)
这是我的幸运日。 Math.max之前说过:
功能:支持捆绑修订号
首先,安装0.20.0并创建一个新应用。
npm install aurelia-cli@">=0.20.0" -g
au new my-app
或者,升级现有应用。
npm install aurelia-cli@">=0.20.0" --save-dev
接下来,打开my-app/aurelia-project/aurelia.json
。
将build.options.rev
属性设置为true。
"options": {
"minify": "stage & prod",
"sourcemaps": "dev & stage",
"rev": true
},
在output
index
和build.targets
属性
"targets": [
{
"id": "web",
"displayName": "Web",
"output": "scripts",
"index": "index.html"
}
],
aurelia-cli
将查找index
文件,并将scripts\vendor-bundle.js
的引用替换为:
<script src="scripts\vendor-bundle.js" data-main="aurelia-bootstrapper">
<script src="scripts\vendor-bundle-947c308e28.js" data-main="aurelia-bootstrapper">
最后,构建应用程序。
au build --env prod
你的捆绑包看起来像这样:
app-bundle-e0c4d46f7d.js
vendor-bundle-dba9184d78.js
An aurelia-cli
release from 8 hours
let defaultBuildOptions = {
minify: "stage & prod",
sourcemaps: "dev & stage",
rev: false
};
if (buildOptions.rev) {
//Generate a unique hash based off of the bundle contents
this.hash = generateHash(concat.content);
bundleFileName = generateHashedPath(this.config.name, this.hash);
}
答案 1 :(得分:3)
我的Aurelia应用程序托管在ASP.Net Core MVC页面中,使用ASP.Net Core asp-append-version
标记帮助程序取得了很好的成功,以确保浏览器正确加载更新的JS包。
此属性可以添加到脚本标记中,ASP.Net将根据脚本文件的内容自动附加版本#。应用程序启动时会生成哈希值,因此必须重新启动应用程序才能让ASP.Net检测到任何新的更改。
让Aurelia与之合作的诀窍在于还将app-bundle.js文件添加为托管页面上的脚本标记:
<body aurelia-app="main-public" class="public">
<script src="scripts/vendor-bundle.js"
data-main="aurelia-bootstrapper"
asp-append-version="true"></script>
<script src="scripts/app-bundle.js"
asp-append-version="true"></script>
</body>
输出看起来像这样:
<body aurelia-app="main-public" class="public">
<script src="scripts/vendor-bundle.js?v=97hNIHUQnLL3Q44m2FWNV-3NIpgqvgIDIx5sUXUcySQ" data-main="aurelia-bootstrapper"></script>
<script src="scripts/app-bundle.js?v=htYOQIr-GHrpZIDiT2b32LxxPZs10cfUU4YNt9iKLro"></script>
</body>
免责声明:我没有检查过app-bundle.js加载行为的vendor-bundle.js源代码,所以我不知道它有多强大这个解决方案是。我没有遇到过这种方法的任何问题,它对我的场景很有用;但是,在申请生产代码之前,请谨慎使用并进行充分测试。