spring boot版本:2.0.4.RELEASE资产管道版本:3.0.3
你好
我们正在使用这个插件,因为我们从grails应用程序中知道它。我们喜欢它,因为它有一个简单的配置(根据我们的要求)
现在我们正在开发一个spring boot应用程序,我们也使用了这个插件,我们(几乎)对此感到满意。
但是当我们在开发模式下运行应用程序时,资产没有像/assets / my-styles-b5d2d7380a49af2d7ca7943a9aa74f62s.css那样的摘要
如何配置插件以创建所有资源的摘要?
目前我们正在使用此配置:
assets {
minifyJs = true
minifyCss = true
enableSourceMaps = false
includes = ["application.js", "application.scss"]
}
我们正在使用百日咳作为我们的模板:
<link th:href="@{/assets/application.css}" rel="stylesheet">
我找到了解决方案......
当您使用资产管道时,您将获得一个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>
资产:src =“@ {/ assets / main.js}”将替换为src =“/ assets / main-DIGEST.js”。
仅当禁用资产管道的developmentRuntime时才会进行替换。
我的博客文章中提供了更多细节:https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib