[[oktatas:web:typescript|< TypeScript]] ====== TypeScript projekt start ====== * **Szerző:** Sallai András * Copyright (c) 2022, Sallai András * Szerkesztve: 2022, 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Előkészítés ===== Szükségünk van TypeScript fordítóra. Globális használat esetén: npm install --save-dev -g typescript mkdir app01 cd app01 ===== Fejlesztés src könyvtárban ===== app01/ |-src/ | |-app.js | |-app.ts | `-index.html |-bs-config.json |-package.json `-tsconfig.json npm init -y npm install --save-dev lite-server "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "lite-server", "ts": "tsc --watch" }, { "compilerOptions": { "rootDir": "src", "target": "es6" } } { "server": ["src"], "port": 3000 } lite-server és fordító indítása külön terminálban: npm start npm run ts ===== Az src és dist könyvtár használata ===== Az src könyvtárba tesszük a forrásfájlokat. A dist könyvtárba kész webhely kerül. ==== Fájlok másolása ==== A .html és .js fájlokat átmásoljuk a dist könyvtárba. Ehhez szükséges a copyfiles Node.js csomag. Telepítés: npm install --save-dev copyfiles Vagy copy-and-watch: npm install --save-dev copy-and-watch ==== package.json ==== "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "copyfiles -u 1 src/**/*.{html,css,js} dist/", }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "copy-and-watch --clean src/**/*.{html,js} dist", }, ==== Használat ==== npm run build A JavaScript, a HTML és a CSS állományokat a dist könyvtárba másolja. ==== A dist törlése ==== Törölhetjük a dist könyvtárat műveletek előtt. A törlést a copy-and-watch maga is megcsinálja. Telepítsük a rimraf csomagot: npm install --save-dev rimraf Majd írjunk egy pre kampót (hook): "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "prebuild": "rimraf dist", "build": "copyfiles -u 1 src/**/*.{html,css,js} dist", "start": "lite-server" }, Csak törléshez írhatunk egy clean feladatot: "scripts": { "clean": "rimraf dist", }, ===== Beállítás állományok generálása ===== tsc --init A parancs generál egy tsconfig.json fájlt. Keressük meg a tsconfig.json fájlban a következő két sort: // "rootDir": "./", //... // "outDir": "./dist", Vegyük ki megjegyzésből: "rootDir": "./src", //... "outDir": "./dist", ==== A module tulajdonság ==== Keressük meg a module értéket: "module": "commonjs", Lehetséges értékek: * None, ES6 vagy ES2015, ES2020, UMD, AMD, System, és ESNext Az alapértelmezett commonjs érték szerveroldali JavaScript, azaz Node.js alkalmazásokhoz használható. ===== tsconfig.json ===== { "compilerOptions": { "target": "ES6", "module": "commonjs", "outDir": "./app", "strict": true, "esModuleInterop": true } } A TypeScript modulok feloldásának módja. Modernebb modulok használata esetén kevesebb feloldási hibával találkozunk bundler érték beállításával. { "compilerOptions": { "moduleResolution": "bundler" } } A bundler érték arra utal, hogy a modulok feloldását a modern JavaScript csomagkezelők és bundlerek (mint például a webpack, Rollup vagy esbuild) által használt módszerekhez hasonlóan kell elvégezni. ===== Függelék ===== ==== package.json ==== "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "postbundle": "copyfiles -u 1 src/**/*.{html,css} dist/", "bundle": "tsc" }, A bundle helyett tetszőleges név megadható, de a copyfiles sorban szükséges a bundle előtt a "post". A -u 1, azt mondja, hogy vágjon le az útvonalból 1 részt. Ez az 1 rész a src könyvtár lesz. Nélküle, az src mappa is a dist könyvtárba másolódik. A src/**/*.{html,css} hatására a .html és .css kiterjesztésű fájlok is másolásra kerülnek. Ha csak a .html fájlokra van szükség, akkor egyszerűsíthető: "postbundle": "copyfiles -u 1 src/**/*.html dist/", Ha van web könyvtár is: "postbundle": "copyfiles -u 2 \"./src/web/**/*.{css,html}\" \"./dist/web/\""