原文链接: git Submodule 将别人的模型文件通过子模块下载到自己的项目中
上一篇: 在ts项目中接入live2d-widget.js , 在网页中展示二次元老婆
下一篇: tailwind 一些案例
模型库, 这个库有点大, 20m多, 而且类似静态问题, 又不想使用cdn, 所以需要将该库作为子模块放到自己的工程中
https://github.com/xiazeyu/live2d-widget-models
详细参考: https://zhuanlan.zhihu.com/p/100214931
添加子模块并指定路径
git submodule add https://github.com/xiazeyu/live2d-widget-models.git public/lib/live2d-widget-models
会有仓库引用
修改build, 在build之前拉取子模块, 普通clone时子模块只有空文件夹占位
可以在clone的时候加参数
git clone ssh://ip/[path]/topRepository.git --recursive
如果已经初始化了
"build": "git pull --recurse-submodules && vue-cli-service build",
第一次的话需要初始化
"build": "git submodule init && git submodule update && vue-cli-service build",
用node遍历文件夹, 找到所有模型文件, 有的命名和层级不规范, 需要注意, 目前初始化后不能修改, 需要手动刷新才行... 这个有点坑..
const fs = require("fs")
const path = require("path")
const rootPath = path.resolve("./public/lib/live2d-widget-models/packages")
const root = fs.readdirSync(rootPath)
console.log(root)
const obj = {}
for (const name of root) {
const p = path.resolve(rootPath, name, "assets")
console.log(p)
try {
const jsonName = fs.readdirSync(p).find(i => i.includes("model.json"))
console.log(jsonName)
obj[name.replace("live2d-widget-model-", "")] = jsonName
} catch (e) {
console.log("===>error", name)
}
}
console.log("obj", obj)