FiveM x TypeScript

王林
Lepaskan: 2024-09-08 22:30:40
asal
374 orang telah melayarinya

FiveM x TypeScript

FiveM adalah pengubahsuaian untuk Grand Theft Auto V yang membolehkan anda bermain berbilang pemain pada pelayan khusus tersuai, dikuasakan oleh Cfx.re.

Apabila anda membangunkan pelayan FiveM, anda boleh mencipta sumber. Sumber-sumber ini boleh ditulis dalam pelbagai bahasa Lua, C# dan JavaScript. Dalam artikel ini kita akan melihat cara membina sumber menggunakan TypeScript

Jenis :

Untuk menaip kod kami, kami akan menggunakan dua pakej yang disediakan oleh CFX.re syarikat di belakang FiveM

  • @citizenfx/klien
  • @citizenfx/server

Pakej ini menyediakan jenis untuk setiap kaedah asli yang boleh digunakan dalam kod sebelah klien atau sebelah pelayan.

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"]
}

Salin selepas log masuk

Himpunan :

Selepas penyusunan fail .ts, anda perlu mencipta satu berkas yang akan dimuatkan dan dijalankan oleh pelayan FiveM. Sesungguhnya, FiveM hanya membenarkan keperluan pakej node.js asli seperti laluan, fs, …

Untuk melakukannya, kami menggunakan alat bernama rollup, ia adalah pengikat modul JavaScript berdasarkan sistem pemalam. Saya juga meneroka alat lain seperti vite, rspack, tetapi ia terlalu rumit. Alat lain yang menawarkan prestasi yang baik ialah turbopack alat di belakang himpunan seterusnya tetapi ia masih di dalam sebelah buat masa ini.

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()],
};
Salin selepas log masuk

pakej.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"
  },
  ...
}
Salin selepas log masuk

Contoh

init.ts

import { join } from "path"

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

index.ts

import { init } from "./init"

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

Selepas menjalankan rollup -c, anda hanya akan mempunyai satu fail :

'use strict';

var path = require('path');

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

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

Salin selepas log masuk

Atas ialah kandungan terperinci FiveM x TypeScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!