我在Makefile中使用yarn build
命令,该命令会生成两个包含哈希值的文件,例如main.abc123.js
和main.def456.css
。
这些文件需要从HTML文件中引用,因此我尝试使整个过程自动化。我的Makefile中的相关部分是:
build-da:
yarn build
$(eval JS_FILE:=$(shell python -c 'import json, os; config=json.load(open("build/asset-manifest.json")); print(os.path.basename(config["main.js"]))'))
$(eval CSS_FILE:=$(shell python -c 'import json, os; config=json.load(open("build/asset-manifest.json")); print(os.path.basename(config["main.css"]))'))
$(SED) -i -e 's/main\.[^.]*\.js/$(JS_FILE)/g' my_file.html
$(SED) -i -e 's/main\.[^.]*\.css/$(CSS_FILE)/g' my_file.html
基本上,我要从asset-manifest.json
抓取生成的文件名,并尝试使用sed替换html文件中的名称。
在大约80-90%的情况下,它可以很好地工作,但是有时它会无故失败,因此,我试图找出问题所在。