«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > FiveM x TypeScript

FiveM x TypeScript

Опубликовано 8 ноября 2024 г.
Просматривать:536

FiveM x TypeScript

FiveM — это модификация Grand Theft Auto V, позволяющая играть в многопользовательскую игру на настроенных выделенных серверах на базе Cfx.re.

Когда вы разрабатываете сервер FiveM, вы можете создать ресурс. Эти ресурсы можно написать на нескольких языках Lua, C# и JavaScript. В этой статье мы увидим, как создать ресурс с помощью TypeScript

Тип :

Для набора нашего кода мы будем использовать два пакета, предоставленные CFX.re, компанией, стоящей за FiveM

  • @citizenfx/client
  • @citizenfx/server

Эти пакеты предоставили типы для каждого собственного метода, который можно использовать внутри клиентского или серверного кода.

tsconfig.json

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "moduleResolution": "Bundler",
    // Location
    "outDir": "./dist",
    // Other
    "types": ["@citizenfx/client", "@types/node"],
    "lib": ["ES2020"],
    "strict": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "skipLibCheck": true
  },
  "include": ["src/**/*.ts"],
  "exclude": ["**/node_modules", "**/.test.ts"]
}

Пучок :

После компиляции файлов .ts вам нужно будет создать пакет, который будет загружаться и запускаться сервером FiveM. Действительно, FiveM позволяет требовать только собственный пакет node.js, такой как path, fs,…

Для этого мы используем инструмент под названиемrollup, это сборщик модулей JavaScript, основанный на системе плагинов. Я также изучал другие инструменты, такие как Vite, rspack, но это слишком сложно. Еще одним инструментом, который предлагает хорошую производительность, будет Turbopack, инструмент, стоящий за следующей сборкой, но на данный момент он все еще находится в следующей группе.

rollup.config.mjs

import typescript from "@rollup/plugin-typescript";
import commonjs from "@rollup/plugin-commonjs";
import resolve from "@rollup/plugin-node-resolve";

export default {
  input: "src/index.ts",
  output: {
    dir: "dist",
    format: "cjs",
    sourcemap: false,
  },
  plugins: [resolve(), typescript(), commonjs()],
};

package.json :

{
  ...
  "devDependencies": {
    "@citizenfx/client": "2.0.9282-1",
    "@rollup/plugin-commonjs": "^26.0.1",
    "@rollup/plugin-node-resolve": "^15.2.3",
    "@rollup/plugin-typescript": "^11.1.6",
    "@types/node": "^20.14.12",
    "rollup": "^4.20.0",
    "tslib": "^2.6.3",
    "typescript": "^5.5.4"
  },
  ...
}

Пример

init.ts

import { join } from "path"

export const init = () => {
    console.log("inited", join(".", "init.js"));
}

index.ts

import { init } from "./init"

on("onResourceStart", async (resName: string) => {
  if (resName === GetCurrentResourceName()) {
    init();
  }
});

После запуска накопительного пакета -c у вас останется только один файл:

'use strict';

var path = require('path');

const init = () => {
    console.log("inited", path.join(".", "init.js"));
};

on("onResourceStart", async (resName) => {
    if (resName === GetCurrentResourceName()) {
        init();
    }
});

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/justinmartindev/fivem-x-typescript-3pgd?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3