Skip to content

Локальні файли ​

Плагін files з @opys/dev.

Тека на вашому диску, встановлюється як є.

js
files({ from: 'config', to: (file) => '${game_directory}/config/' + file.rel });

Параметри ​

ПараметрЩо робить
fromТека відносно файла конфігурації.
toКуди встановлюється кожен файл.
urlДе розміщено кожен файл. Необов'язково. Див. нижче.
hashЗ url: 'sha1' (за замовчуванням) або 'sha256'.

Береться кожен файл під from, включно з підтеками.

to ​

Викликається один раз для кожного файла. Повертає місце, куди цей файл встановлюється.

file.Що це
relШлях усередині from: jei/settings.toml.
filenameЛише ім'я: settings.toml.
dirЛише тека: jei.
absПовний шлях на вашому комп'ютері.
sizeРозмір у байтах.

Починайте шлях зі змінної, такої як ${game_directory}. Вона заповнюється на комп'ютері гравця.

Що він додає ​

ВидЩо
ФайлиПо одному на файл у теці. Перенесені або розміщені.
ЗапускНемає.
ЗмінніНемає.
СередовищеНемає.

Кожен пункт нижче: що це таке і як воно потрапляє в маніфест.

Файли · перенесені (без url) ​

Кожен файл стає блобом: він подорожує всередині бандла, названий за своїм sha256. Нічого розміщувати.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    minecraft({ version: '1.21.1' }),
    java({ version: '21' }),
    files({
      from: 'config',
      to: (file) => '${game_directory}/config/' + file.rel,
    }),
  ],
  manifest: {
    command: '@minecraft.command',
    args: ['@minecraft.jvmArgs', '@minecraft.mainClass', '@minecraft.gameArgs'],
    workdir: '${game_directory}',
  },
});
jsonc
// у маніфесті
{
  "path": "${game_directory}/config/settings.txt",
  "source": { "blob": "ce197604769b1b0722bf112fe55718fa0f27ca5f02cef058be2e13a641ac38ed" },
  "size": 35
}

Чому це за замовчуванням: ніщо не може загубитися пізніше. Забуте завантаження не може зламати збірку.

Файли · розміщені (з url) ​

Кожен файл стає завантаженням з вашої адреси, закріпленим за своїм хешем. Бандл тримає вказівник, а файли завантажуєте ви.

js
// opys.config.mjs
export default defineConfig({
  plugins: [
    forge({ version: '1.20.1' }),
    java({ version: '17' }),
    files({
      from: 'mods',
      to: (file) => '${game_directory}/mods/' + file.rel,
      url: (file) => 'https://cdn.example.com/mods/' + file.rel,
    }),
  ],
  manifest: {
    command: '@forge.command',
    args: ['@forge.jvmArgs', '@forge.mainClass', '@forge.gameArgs'],
    workdir: '${game_directory}',
  },
});
jsonc
// у маніфесті
{
  "path": "${game_directory}/mods/my-mod.jar",
  "source": { "url": "https://cdn.example.com/mods/my-mod.jar" },
  "size": 48213,
  "integrity": { "sha1": "…" }
}

Коли: файли великі. Див. перенесені або розміщені.

Немає фрагментів запуску і немає змінних.

Варто знати ​

  • Символічні посилання не відстежуються.
  • Фільтруйте через .exclude('**/*.bak'). Див. Налаштування плагіна.
  • Усе в теці стає читабельним для кожного, хто має бандл. Тримайте секрети поза нею.