기본 설정
# Node.js 설치
npm 명령 실행을 위함
# npm init -y
npm init는 package.json을 만들기 위한 명령이고 -y를 붙임으로써 별도의 입력 없이 기본 값으로 진행 시킴. package.json은 작성하고자 하는 프로젝트에 대한 설정 파일로 볼 수 있으며, 프로젝트 이름과 버전 등과 같은 설명과 프로젝트가 사용하는 라이브러리에 대한 정보 그리고 프로젝트 실행 등을 위한 명령에 대한 정보가 담겨있음. package.json 파일은 npm을 위한 파일임(VS.Code를 위한 것이 아님)
# npm install webpack webpack-cli --save-dev
# npm install typescript ts-loader --save-dev
# tsconfig.json 파일 생성 및 내용 작성
{ "compilerOptions": { "outDir": "./dist/", "sourceMap": true, "noImplicitAny": true, "module": "es6", "target": "es5", "allowJs": true } }
# webpack.config.js 파일 생성 및 내용 작성
const path = require("path"); module.exports = { mode: "development", entry: "./src/index.ts", devtool: "inline-source-map", module: { rules: [ { test: /\.tsx?$/, use: "ts-loader", exclude: /node_modules/, }, ], }, resolve: { extensions: [".tsx", ".ts", ".js"], }, output: { filename: "bundle.js", path: path.resolve(__dirname, "dist"), }, }
# src, dist 폴더 및 index.html(dist 폴더), index.ts(src 폴더) 파일 생성
# index.html 코드 입력
... <script src="bundle.js"></script> ...
# index.ts 코드 입력
console.log("Hello");
# package.json 파일의 “scripts” 파트에 “bundle”: “webpack” 입력
{ .. "scripts": { .. "bundle": "webpack" }, .. }
# npm run bundle
실행
Typescript로 작성된 파일을 Javascript 파일로 트랜스파일링 시킴
자동 실행을 위한 설정
# package.json 파일의 “scripts” 파트에 “watch”: “webpack –watch” 및 “start”: “npm run bundle && npm run watch” 추가
{ .. "scripts": { .. "bundle": "webpack", "watch": "webpack --watch", "start": "npm run bundle && npm run watch" }, .. }
# VS.Code에서 Live Server 확장 기능 설치
# npm start
실행
이제부터 Typescript로 작성된 파일을 수정하면 Javascript 파일로 지동으로 트랜스파일링 시킴
# index.html 열고 GO LIVE 활성화
브레이크 디버깅
# VS.Code의 “실행 및 디버그” 클릭을 통해 launch.json을 생성 (크롬 선택)
# launch.json 파일에서 “url”의 값을 “http://127.0.0.1:5500/dist”으로 수정
{ .. "configurations": [ { .. "url": "http://127.0.0.1:5500/dist", .. } ] }
babylonjs 라이브러리 설치
# npm install @babylonjs/core
# tsconfig.json에 “moduleResolution”: “node” 추가
{ "compilerOptions": { .. "moduleResolution": "node" } }
위의 설정을 입력해야 babylonjs 모듈을 import할 때(예: import { Scene } from “@babylonjs/core”) 문제가 없음
최종 설정 파일 내용
# tsfonfig.json
{ "compilerOptions": { "outDir": "./dist/", "sourceMap": true, "noImplicitAny": true, "module": "es6", "target": "es5", "allowJs": true, "moduleResolution": "node" } }
# webpack.config.js
const path = require("path"); module.exports = { mode: "development", entry: "./src/index.ts", devtool: "inline-source-map", module: { rules: [ { test: /\.tsx?$/, use: "ts-loader", exclude: /node_modules/ }, ], }, resolve: { extensions: [".tsx", ".ts", ".js"], }, output: { filename: "bundle.js", path: path.resolve(__dirname, "dist"), }, }
# package.json
{ "name": "tstbabylonjs_ts", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "bundle": "webpack", "watch": "webpack --watch", "start": "npm run bundle && npm run watch" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "ts-loader": "^9.4.1", "typescript": "^4.8.4", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, "dependencies": { "@babylonjs/core": "^5.26.1" } }
# launch.json
{ // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요. // 기존 특성에 대한 설명을 보려면 가리킵니다. // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요. "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "url": "http://127.0.0.1:5500/dist", "webRoot": "${workspaceFolder}" } ] }