如何在我的 spring boot 2 应用程序中为资产管道 (bertramlabs) 配置静态版本控制(摘要)?
how do i configure static versioning (digest) for the asset-pipeline (bertramlabs) in my spring boot 2 application?
spring开机版本:2.0.4.RELEASE
资产管道版本:3.0.3
嗨
我们正在使用这个插件,因为我们从我们的 grails 应用程序中知道它。
我们喜欢它,因为它有一个简单的配置(满足我们的要求)
现在我们正在开发一个 spring 启动应用程序,我们也使用了这个插件,我们(几乎)对它很满意。
但是当我们运行开发模式下的应用程序时,资产没有像/assets/my-styles-b5d2d7380a49af2d7ca7943a9aa74f62s.css[这样的摘要=13=]
我如何配置插件来为我们的所有资源创建摘要?
目前我们正在使用此配置:
assets {
minifyJs = true
minifyCss = true
enableSourceMaps = false
includes = ["application.js", "application.scss"]
}
我们的模板使用 thymeleaf:
<link th:href="@{/assets/application.css}" rel="stylesheet">
我找到了解决方案...
当您使用 asset-pipeline 时,您会得到一个 gradle 任务 assetCompile
。
创建 .war 文件时,您可以添加此 gradle 任务并用版本化文件替换所有资产。
如果您想在生产模式下使用版本控制文件,则必须使用此配置 (build.gradle)
assets {
minifyJs = true
minifyCss = true
skipNonDigests = true
packagePlugin = true
includes = ["application.js", "application.scss"]
}
...
war {
dependsOn 'assetCompile'
from( "${buildDir}/assets", {
into "/WEB-INF/classes/META-INF/assets"
})
baseName = '<your project>'
enabled = true
}
就这些了。
当 运行 assetCompile
任务时,会创建一个 manifest.properties
文件。此文件包含原始文件名和版本化文件名的映射。
应用程序使用此文件来查找正确的资源,例如application.css=application-79a3c8a2f085ecefadgfca3cda6fe3d12.css
我创建了一个插件,可以在生产模式下url用摘要替换资产:
依赖关系
compile 'ch.itds.taglib:asset-pipeline-thymeleaf-taglib:1.0.0'
配置
@Configuration
public class ThymeleafConfig {
@Bean
public AssetDialect assetDialect() {
return new AssetDialect();
}
}
用法
<html xmlns:asset="https://www.itds.ch/taglib/asset">
<script asset:src="@{/assets/main.js}"></script>
</html>
asset:src="@{/assets/main.js}" 将替换为 src="/assets/main- DIGEST.js".
仅当资产管道的 developmentRuntime 被禁用时才会发生替换。
更多详细信息可在我的博客上找到 post:https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib
spring开机版本:2.0.4.RELEASE 资产管道版本:3.0.3
嗨
我们正在使用这个插件,因为我们从我们的 grails 应用程序中知道它。 我们喜欢它,因为它有一个简单的配置(满足我们的要求)
现在我们正在开发一个 spring 启动应用程序,我们也使用了这个插件,我们(几乎)对它很满意。
但是当我们运行开发模式下的应用程序时,资产没有像/assets/my-styles-b5d2d7380a49af2d7ca7943a9aa74f62s.css[这样的摘要=13=]
我如何配置插件来为我们的所有资源创建摘要?
目前我们正在使用此配置:
assets {
minifyJs = true
minifyCss = true
enableSourceMaps = false
includes = ["application.js", "application.scss"]
}
我们的模板使用 thymeleaf:
<link th:href="@{/assets/application.css}" rel="stylesheet">
我找到了解决方案...
当您使用 asset-pipeline 时,您会得到一个 gradle 任务 assetCompile
。
创建 .war 文件时,您可以添加此 gradle 任务并用版本化文件替换所有资产。
如果您想在生产模式下使用版本控制文件,则必须使用此配置 (build.gradle)
assets {
minifyJs = true
minifyCss = true
skipNonDigests = true
packagePlugin = true
includes = ["application.js", "application.scss"]
}
...
war {
dependsOn 'assetCompile'
from( "${buildDir}/assets", {
into "/WEB-INF/classes/META-INF/assets"
})
baseName = '<your project>'
enabled = true
}
就这些了。
当 运行 assetCompile
任务时,会创建一个 manifest.properties
文件。此文件包含原始文件名和版本化文件名的映射。
应用程序使用此文件来查找正确的资源,例如application.css=application-79a3c8a2f085ecefadgfca3cda6fe3d12.css
我创建了一个插件,可以在生产模式下url用摘要替换资产:
依赖关系
compile 'ch.itds.taglib:asset-pipeline-thymeleaf-taglib:1.0.0'
配置
@Configuration
public class ThymeleafConfig {
@Bean
public AssetDialect assetDialect() {
return new AssetDialect();
}
}
用法
<html xmlns:asset="https://www.itds.ch/taglib/asset">
<script asset:src="@{/assets/main.js}"></script>
</html>
asset:src="@{/assets/main.js}" 将替换为 src="/assets/main- DIGEST.js".
仅当资产管道的 developmentRuntime 被禁用时才会发生替换。
更多详细信息可在我的博客上找到 post:https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib