chore: config updates

This commit is contained in:
Haoyu Xu
2025-02-22 18:07:27 +08:00
parent 51d5334d67
commit 4a1b901f25
13 changed files with 205 additions and 104 deletions

7
.vscode/launch.json vendored
View File

@@ -104,5 +104,12 @@
"command": "pnpm run download:data", "command": "pnpm run download:data",
"cwd": "${workspaceFolder}" "cwd": "${workspaceFolder}"
}, },
{
"type": "node-terminal",
"name": "Run Script: deploy",
"request": "launch",
"command": "pnpm run deploy",
"cwd": "${workspaceFolder}"
},
] ]
} }

169
README.md
View File

@@ -41,6 +41,30 @@ Run dev server for showcase webpage for an operator
$ name=<name> pnpm run preview:showcase $ name=<name> pnpm run preview:showcase
Preview built showcase webpage for an operator Preview built showcase webpage for an operator
``` ```
``` bash
$ pnpm run dev:directory
Run dev server for directory webpage
```
``` bash
$ name=<name> pnpm run preview:directory
Preview built directory webpage
```
``` bash
$ pnpm run preview
Preview built all webpages
```
``` bash
$ name=<name> id=<id> pnpm run init
Init new operator config
```
``` bash
$ pnpm run download:game
Download latest game data from Arknights
```
``` bash
$ pnpm run download:data
Download extracted game assets
```
### Webpage & JavaScript ### Webpage & JavaScript
Add query string `aklive2d` to bring up the settings panel to adjust your settings. Add query string `aklive2d` to bring up the settings panel to adjust your settings.
@@ -52,33 +76,103 @@ Using JS events to change settings is recommended.
## Config ## Config
### General Config ### General Config
in `packages/config/config.yaml` in `packages/config/config.yaml`
Settings for the whole project
``` yaml ``` yaml
folder: site_id: aklive2d
operator: ./operator/ # folder for operator assets akassets:
release: ./release/ # folder for released showcase page project_name: akassets
operators: url: https://akassets.pages.dev
chen: !include config/chen.yaml # include the config for the operator under folder `config/chen.yaml` insight:
dusk: !include config/dusk.yaml id: aklive2d
dusk_everything_is_a_miracle: !include config/dusk_everything_is_a_miracle.yaml url: https://insight.halyul.dev/on-demand.js
ling: !include config/ling.yaml module:
nearl: !include config/nearl.yaml assets:
nian: !include config/nian.yaml config_yaml: config.yaml
nian_unfettered_freedom: !include config/nian_unfettered_freedom.yaml background: background
phatom_focus: !include config/phatom_focus.yaml music: music
rosmontis: !include config/rosmontis.yaml charword_table: charword_table
skadi: !include config/skadi.yaml project_json: project_json
skadi_sublimation: !include config/skadi_sublimation.yaml background:
w: !include config/w.yaml operator_bg_png: operator_bg.png
w_fugue: !include config/w_fugue.yaml charword_table:
specter: !include config/specter.yaml charword_table_json: charword_table.json
gavial: !include config/gavial.yaml music:
surtr_colorful_wonderland: !include config/surtr_colorful_wonderland.yaml music_table_json: music_table.json
lee_trust_your_eyes: !include config/lee_trust_your_eyes.yaml display_meta_table_json: display_meta_table.json
texas_the_omertosa: !include config/texas_the_omertosa.yaml audio_data_json: audio_data.json
nearl_relight: !include config/nearl_relight.yaml official_info:
rosmontis_become_anew: !include config/rosmontis_become_anew.yaml official_info_json: official_info.json
passager_dream_in_a_moment: !include config/passager_dream_in_a_moment.yaml operator:
mizuki_summer_feast: !include config/mizuki_summer_feast.yaml operator: operator
config: config
template_yaml: _template.yaml
config_yaml: config.yaml
portraits: _portraits
logos_assets: _logos
logos: logos
directory_assets: _directory
MonoBehaviour: MonoBehaviour
Texture2D: Texture2D
title:
zh-CN: '明日方舟:'
en-US: 'Arknights: '
project_json:
project_json: project.json
preview_jpg: preview.jpg
template_yaml: project_json.yaml
wrangler:
index_json: index.json
vite_helpers:
config_json: config.json
app:
showcase:
public: public
assets: assets
dir_name:
data: data
dist: dist
extracted: extracted
auto_update: auto_update
voice:
main: voice
sub:
- name: jp
lang: JP
lookup_region: zh_CN
- name: cn
lang: CN_MANDARIN
lookup_region: zh_CN
- name: en
lang: EN
lookup_region: en_US
- name: kr
lang: KR
lookup_region: ko_KR
- name: custom
lang: CUSTOM
lookup_region: zh_CN
directory:
assets_dir: _assets
title: AKLive2D
voice: jp/CN_037.ogg
error:
files:
- key: build_char_128_plosis_epoque#3
paddings:
left: -120
right: 150
top: 10
bottom: 0
- key: build_char_128_plosis
paddings:
left: -90
right: 100
top: 10
bottom: 0
voice:
file: CN_034.ogg
target: error.ogg
``` ```
### Operators Config ### Operators Config
in `packages/operator/config.yaml` in `packages/operator/config.yaml`
@@ -129,12 +223,9 @@ The `LICENSE` file applies to all files unless listed specifically.
- all files under `packages/background/data` folder and its sub-folders - all files under `packages/background/data` folder and its sub-folders
## Instructions on Extracting In-Game Assets ## Instructions on Extracting In-Game Assets
I'm still struggling to find a command-line tool to extract in-game assets. But [AssetRipper](https://github.com/AssetRipper/AssetRipper) seems to have a command-line interface, I'm too lazy to have a deeper inverstigation.
| Assets Name | Location | Type | | Assets Name | Location | Type |
|-------------|----------|------| |-------------|----------|------|
| Logos | spritepack/ui_camp_logo_h2_0.ab | Sprite | | Logos | spritepack/ui_camp_logo_0.ab | Sprite |
| Logos for collaboration | spritepack/ui_camp_logo_h2_linkage_0.ab | Sprite |
| Logo Mapping | gamedata/art/handbookpos_table.json<sup>3</sup> | TextAsset | | Logo Mapping | gamedata/art/handbookpos_table.json<sup>3</sup> | TextAsset |
| Dynaimc Character | arts/dynchars/ | Texture2D & TextAsset | | Dynaimc Character | arts/dynchars/ | Texture2D & TextAsset |
| Static Image | Operator: chararts/ ; Skin: skinpack/ | Texture2D | | Static Image | Operator: chararts/ ; Skin: skinpack/ | Texture2D |
@@ -149,21 +240,3 @@ I'm still struggling to find a command-line tool to extract in-game assets. But
<sup>2</sup>: `gamedata/excel/display_meta_table.json->homeBackgroundData`<sup>3</sup> and `gamedata/excel/audio_data.json`<sup>3</sup> is required to locate the music. <sup>2</sup>: `gamedata/excel/display_meta_table.json->homeBackgroundData`<sup>3</sup> and `gamedata/excel/audio_data.json`<sup>3</sup> is required to locate the music.
<sup>3</sup>: Data is encryped, decryped version can be obtained from [ArknightsGameData](https://github.com/Kengxxiao/ArknightsGameData) for the Chinese version and [Kengxxiao/ArknightsGameData_YoStar](https://github.com/Kengxxiao/ArknightsGameData_YoStar) for other regions. <sup>3</sup>: Data is encryped, decryped version can be obtained from [ArknightsGameData](https://github.com/Kengxxiao/ArknightsGameData) for the Chinese version and [Kengxxiao/ArknightsGameData_YoStar](https://github.com/Kengxxiao/ArknightsGameData_YoStar) for other regions.
## URLs
| Name | URL | Note |
|------|-----|------|
| Config | [link](https://ak-conf.hypergryph.com/config/prod/official/Android/version) | Version info |
| Current Hot Update JSON | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/hot_update_list.json) | Directory JSON |
| Voice JP | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vcjp.dat) | Voice JP |
| Voice CN | [link 1](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vccn.dat), [link 2](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vcbsc.dat) | Voice CN |
| Voice KR | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vckr.dat) | Voice KR |
| Voice EN | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vcen.dat) | Voice EN |
| Voice Custom | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_vccsm.dat) | Voice Custom |
| Misc | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_v052.dat) | Latest Home Background, Skin Static Image |
| Init | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_init.dat) | Logos, Background, Portrait Images |
| Dynaimc Characters | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_dynilst.dat) | Dynaimc Character |
| Static Image | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_crart.dat) | Operator Static Image |
| Home Music | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_music.dat) | Home Music |
| L Com? | [link](https://ak.hycdn.cn/assetbundle/official/Android/assets/24-07-09-15-29-50-f0a675/lpack_lcom.dat) | portrait_hub.ab |

View File

@@ -2,10 +2,10 @@ import path from 'node:path'
import config from '@aklive2d/config' import config from '@aklive2d/config'
export const DATA_DIR = path.resolve(import.meta.dirname, config.dir_name.data) export const DATA_DIR = path.resolve(import.meta.dirname, config.dir_name.data)
export const PUBLIC_DIR = path.resolve(DATA_DIR, config.dir_name.public) export const PUBLIC_DIR = path.resolve(DATA_DIR, config.app.showcase.public)
export const PUBLIC_ASSETS_DIR = path.resolve( export const PUBLIC_ASSETS_DIR = path.resolve(
PUBLIC_DIR, PUBLIC_DIR,
config.dir_name.assets config.app.showcase.assets
) )
export const OUT_DIR = path.resolve(import.meta.dirname, config.dir_name.dist) export const OUT_DIR = path.resolve(import.meta.dirname, config.dir_name.dist)
export const DIST_DIR = path.resolve( export const DIST_DIR = path.resolve(

View File

@@ -22,7 +22,7 @@
"stylelint": "^16.14.1", "stylelint": "^16.14.1",
"turbo": "^2.4.2" "turbo": "^2.4.2"
}, },
"packageManager": "pnpm@9.5.0", "packageManager": "pnpm@10.4.1",
"name": "aklive2d", "name": "aklive2d",
"type": "module" "type": "module"
} }

View File

@@ -1,8 +1,8 @@
dynchars: dynchars dynchars: dynchars
item_to_download: item_to_download:
- homebackground/wrapper - homebackground/wrapper
- ui_camp_logo - ui_camp_logo
- charportraits - charportraits
- voice.*/extra - voice.*/extra
additional_regex: additional_regex:
- ^(?!(avg))(.*)$ - ^(?!(avg))(.*)$

View File

@@ -5,7 +5,7 @@ import { yaml } from '@aklive2d/libs'
export const DIST_DIR = path.resolve(import.meta.dirname, config.dir_name.dist) export const DIST_DIR = path.resolve(import.meta.dirname, config.dir_name.dist)
export const CONFIG_PATH = path.resolve( export const CONFIG_PATH = path.resolve(
import.meta.dirname, import.meta.dirname,
config.dir_name.config_yaml config.module.assets.config_yaml
) )
const selfConfig = yaml.read(CONFIG_PATH) const selfConfig = yaml.read(CONFIG_PATH)

View File

@@ -12,7 +12,7 @@ export default async (packageDir) => {
'background', 'background',
config.dir_name.dist config.dir_name.dist
), ),
target: path.resolve(DIST_DIR, config.dir_name.background), target: path.resolve(DIST_DIR, config.module.assets.background),
}, },
{ {
fn: file.symlink, fn: file.symlink,
@@ -21,12 +21,12 @@ export default async (packageDir) => {
'charword-table', 'charword-table',
config.dir_name.dist config.dir_name.dist
), ),
target: path.resolve(DIST_DIR, config.dir_name.charword_table), target: path.resolve(DIST_DIR, config.module.assets.charword_table),
}, },
{ {
fn: file.symlink, fn: file.symlink,
source: path.resolve(packageDir, 'music', config.dir_name.data), source: path.resolve(packageDir, 'music', config.dir_name.data),
target: path.resolve(DIST_DIR, config.dir_name.music), target: path.resolve(DIST_DIR, config.module.assets.music),
}, },
{ {
fn: file.symlinkAll, fn: file.symlinkAll,
@@ -40,7 +40,7 @@ export default async (packageDir) => {
'project-json', 'project-json',
config.dir_name.dist config.dir_name.dist
), ),
target: path.resolve(DIST_DIR, config.dir_name.project_json), target: path.resolve(DIST_DIR, config.module.assets.project_json),
}, },
] ]
copyQueue.map(({ fn, source, target }) => { copyQueue.map(({ fn, source, target }) => {

View File

@@ -1,5 +1,4 @@
import path from 'node:path' import path from 'node:path'
import fs from 'node:fs'
import { envParser } from '@aklive2d/libs' import { envParser } from '@aklive2d/libs'
import config from '@aklive2d/config' import config from '@aklive2d/config'
import build from './libs/build.js' import build from './libs/build.js'

View File

@@ -6,8 +6,13 @@ insight:
id: aklive2d id: aklive2d
url: https://insight.halyul.dev/on-demand.js url: https://insight.halyul.dev/on-demand.js
module: module:
background: assets:
config_yaml: config.yaml
background: background background: background
music: music
charword_table: charword_table
project_json: project_json
background:
operator_bg_png: operator_bg.png operator_bg_png: operator_bg.png
charword_table: charword_table:
charword_table_json: charword_table.json charword_table_json: charword_table.json
@@ -18,15 +23,16 @@ module:
official_info: official_info:
official_info_json: official_info.json official_info_json: official_info.json
operator: operator:
operator: operator
config: config config: config
template_yaml: _template.yaml template_yaml: _template.yaml
config_yaml: config.yaml config_yaml: config.yaml
portraits: _portraits portraits: _portraits
logos_assets: _logos logos_assets: _logos
logos: logos
directory_assets: _directory directory_assets: _directory
MonoBehaviour: MonoBehaviour MonoBehaviour: MonoBehaviour
Texture2D: Texture2D Texture2D: Texture2D
assets_json: assets.json
title: title:
zh-CN: '明日方舟:' zh-CN: '明日方舟:'
en-US: 'Arknights: ' en-US: 'Arknights: '
@@ -36,21 +42,17 @@ module:
template_yaml: project_json.yaml template_yaml: project_json.yaml
wrangler: wrangler:
index_json: index.json index_json: index.json
vite_helpers:
config_json: config.json
app:
showcase:
public: public
assets: assets
dir_name: dir_name:
config_yaml: config.yaml
assets: assets
data: data data: data
dist: dist dist: dist
extracted: extracted extracted: extracted
auto_update: auto_update auto_update: auto_update
operator: operator
background: background
music: music
logos: logos
public: public
charword_table: charword_table
project_json: project_json
config_json: config.json
voice: voice:
main: voice main: voice
sub: sub:
@@ -69,10 +71,6 @@ dir_name:
- name: custom - name: custom
lang: CUSTOM lang: CUSTOM
lookup_region: zh_CN lookup_region: zh_CN
share:
title:
zh-CN: '明日方舟:'
en-US: 'Arknights: '
directory: directory:
assets_dir: _assets assets_dir: _assets
title: AKLive2D title: AKLive2D

View File

@@ -35,7 +35,7 @@ const getConfigFolder = () => {
} }
const getDistFolder = (name) => { const getDistFolder = (name) => {
return path.join(DIST_DIR, config.dir_name.operator, name) return path.join(DIST_DIR, config.module.operator.operator, name)
} }
export const has = (name) => { export const has = (name) => {
@@ -77,7 +77,7 @@ const copyVoices = (name) => {
const copyLogos = () => { const copyLogos = () => {
file.symlink( file.symlink(
path.join(OPERATOR_SOURCE_FOLDER, config.module.operator.logos_assets), path.join(OPERATOR_SOURCE_FOLDER, config.module.operator.logos_assets),
path.join(DIST_DIR, config.dir_name.logos) path.join(DIST_DIR, config.module.operator.logos)
) )
} }
@@ -270,7 +270,7 @@ export const init = (name, id) => {
path.resolve(operatorConfigFolder, `${name}.yaml`) path.resolve(operatorConfigFolder, `${name}.yaml`)
) )
file.appendSync( file.appendSync(
`\n${name}: !include ${config.module.operator.config}/${name}.yaml`, `${name}: !include ${config.module.operator.config}/${name}.yaml\n`,
CONFIG_PATH CONFIG_PATH
) )
} }

View File

@@ -14,7 +14,7 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
file.mkdir(publicAssetsDir) file.mkdir(publicAssetsDir)
const operatorAssetsDir = path.join( const operatorAssetsDir = path.join(
ASSETS_DIST_DIR, ASSETS_DIST_DIR,
config.dir_name.operator, config.module.operator.operator,
name name
) )
const spineFilenames = file const spineFilenames = file
@@ -23,13 +23,19 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
const q = [ const q = [
{ {
fn: file.symlink, fn: file.symlink,
source: path.resolve(ASSETS_DIST_DIR, config.dir_name.background), source: path.resolve(
target: path.resolve(publicAssetsDir, config.dir_name.background), ASSETS_DIST_DIR,
config.module.assets.background
),
target: path.resolve(
publicAssetsDir,
config.module.assets.background
),
}, },
{ {
fn: file.symlink, fn: file.symlink,
source: path.resolve(ASSETS_DIST_DIR, config.dir_name.music), source: path.resolve(ASSETS_DIST_DIR, config.module.assets.music),
target: path.resolve(publicAssetsDir, config.dir_name.music), target: path.resolve(publicAssetsDir, config.module.assets.music),
}, },
{ {
fn: file.symlinkAll, fn: file.symlinkAll,
@@ -45,7 +51,7 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
filename: `${operators[name].fallback_name}.png`, filename: `${operators[name].fallback_name}.png`,
source: path.resolve( source: path.resolve(
ASSETS_DIST_DIR, ASSETS_DIST_DIR,
config.dir_name.operator, config.module.operator.operator,
name name
), ),
target: path.resolve(publicAssetsDir), target: path.resolve(publicAssetsDir),
@@ -53,7 +59,7 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
{ {
fn: file.symlink, fn: file.symlink,
filename: `${operators[name].logo}.png`, filename: `${operators[name].logo}.png`,
source: path.resolve(ASSETS_DIST_DIR, config.dir_name.logos), source: path.resolve(ASSETS_DIST_DIR, config.module.operator.logos),
target: path.resolve(publicAssetsDir), target: path.resolve(publicAssetsDir),
}, },
{ {
@@ -61,7 +67,7 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
filename: config.module.charword_table.charword_table_json, filename: config.module.charword_table.charword_table_json,
source: path.resolve( source: path.resolve(
ASSETS_DIST_DIR, ASSETS_DIST_DIR,
config.dir_name.charword_table, config.module.assets.charword_table,
name name
), ),
target: path.resolve(publicAssetsDir), target: path.resolve(publicAssetsDir),
@@ -97,16 +103,16 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
image_height: 2048, image_height: 2048,
default_background: config.module.background.operator_bg_png, default_background: config.module.background.operator_bg_png,
background_files: backgroundFiles, background_files: backgroundFiles,
background_folder: config.dir_name.background, background_folder: config.module.assets.background,
voice_default_region: defaultRegion, voice_default_region: defaultRegion,
voice_folders: config.dir_name.voice, voice_folders: config.dir_name.voice,
music_folder: config.dir_name.music, music_folder: config.module.assets.music,
music_mapping: musicMapping.musicFileMapping, music_mapping: musicMapping.musicFileMapping,
use_json: operators[name].use_json, use_json: operators[name].use_json,
} }
file.writeSync( file.writeSync(
JSON.stringify(buildConfig), JSON.stringify(buildConfig),
path.join(path.resolve(dataDir), config.dir_name.config_json) path.join(path.resolve(dataDir), config.module.vite_helpers.config_json)
) )
file.writeSync( file.writeSync(
env.generate([ env.generate([
@@ -127,7 +133,7 @@ export const copyShowcaseData = (name, { dataDir, publicAssetsDir }) => {
export const copyProjectJSON = (name, { releaseDir }) => { export const copyProjectJSON = (name, { releaseDir }) => {
file.cpSync( file.cpSync(
path.resolve(ASSETS_DIST_DIR, config.dir_name.project_json, name), path.resolve(ASSETS_DIST_DIR, config.module.assets.project_json, name),
path.resolve(releaseDir), path.resolve(releaseDir),
{ {
dereference: true, dereference: true,
@@ -159,7 +165,7 @@ export const copyDirectoryData = async ({ dataDir, publicDir }) => {
file.readSync( file.readSync(
path.join( path.join(
ASSETS_DIST_DIR, ASSETS_DIST_DIR,
config.dir_name.project_json, config.module.assets.project_json,
cur.link, cur.link,
config.module.project_json.project_json config.module.project_json.project_json
) )
@@ -187,16 +193,16 @@ export const copyDirectoryData = async ({ dataDir, publicDir }) => {
directory_folder: config.directory.assets_dir, directory_folder: config.directory.assets_dir,
default_background: config.module.background.operator_bg_png, default_background: config.module.background.operator_bg_png,
background_files: backgroundFiles, background_files: backgroundFiles,
background_folder: config.dir_name.background, background_folder: config.module.assets.background,
available_operators: Object.keys(operators), available_operators: Object.keys(operators),
error_files: config.directory.error, error_files: config.directory.error,
music_folder: config.dir_name.music, music_folder: config.module.assets.music,
music_mapping: musicMapping.musicFileMapping, music_mapping: musicMapping.musicFileMapping,
operators: operatorConfig, operators: operatorConfig,
} }
file.writeSync( file.writeSync(
JSON.stringify(directoryConfig), JSON.stringify(directoryConfig),
path.join(dataDir, config.dir_name.config_json) path.join(dataDir, config.module.vite_helpers.config_json)
) )
file.writeSync( file.writeSync(
@@ -218,7 +224,7 @@ export const copyDirectoryData = async ({ dataDir, publicDir }) => {
file.cpSync( file.cpSync(
path.join( path.join(
sourceFolder, sourceFolder,
config.dir_name.operator, config.module.operator.operator,
key, key,
portraitName portraitName
), ),

View File

@@ -1,5 +1,3 @@
import baseConfig from "@aklive2d/eslint-config"; import baseConfig from '@aklive2d/eslint-config'
/** @type {import('eslint').Config} */ /** @type {import('eslint').Config} */
export default [ export default [...baseConfig]
...baseConfig,
];

View File

@@ -57,10 +57,17 @@
"outputs": ["auto_update/official_info.json"] "outputs": ["auto_update/official_info.json"]
}, },
"update": { "update": {
"dependsOn": [] "cache": false
},
"@aklive2d/operator#init": {
"env": ["name", "id"],
"cache": false,
"inputs": ["../official-info/auto_update/official_info.json"],
"outputs": ["config/*.yaml", "config.yaml"]
}, },
"init": { "init": {
"dependsOn": [] "env": ["name", "id"],
"cache": false
}, },
"lint": { "lint": {
"cache": false "cache": false
@@ -89,17 +96,30 @@
"cache": false, "cache": false,
"persistent": true "persistent": true
}, },
"@aklive2d/assets#download:game": {
"cache": false,
"outputs": ["data/**"]
},
"download:game": { "download:game": {
"cache": false "cache": false
}, },
"@aklive2d/wrangler#upload": {
"cache": false,
"inputs": ["data/**"]
},
"upload": { "upload": {
"cache": false "cache": false
}, },
"@aklive2d/wrangler#download:data": {
"cache": false,
"outputs": ["data/**"]
},
"download:data": { "download:data": {
"cache": false "cache": false
}, },
"@aklive2d/wrangler#deploy": { "@aklive2d/wrangler#deploy": {
"env": ["CLOUDFLARE_ACCOUNT_ID", "CLOUDFLARE_API_TOKEN"], "env": ["CLOUDFLARE_ACCOUNT_ID", "CLOUDFLARE_API_TOKEN"],
"inputs": ["../../dist/**"],
"dependsOn": ["@aklive2d/directory#build"] "dependsOn": ["@aklive2d/directory#build"]
}, },
"deploy": { "deploy": {