Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

STEP 5: TypeScript 지원하기 #5

Open
wants to merge 1 commit into
base: 4-cjs-esm-both
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/build.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import esbuild from "esbuild";

const baseConfig = {
entryPoints: ["src/index.js"],
entryPoints: ["src/index.ts"],
outdir: "dist",
bundle: true,
sourcemap: true,
Expand Down
3 changes: 2 additions & 1 deletion lib/dist/index.cjs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
Expand All @@ -16,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/index.js
// src/index.ts
var src_exports = {};
__export(src_exports, {
add: () => add,
Expand Down
6 changes: 3 additions & 3 deletions lib/dist/index.cjs.map
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/index.js"],
"sourcesContent": ["const add = (a, b) => a + b;\nconst subtract = (a, b) => a - b;\nconst multiply = (a, b) => a * b;\nconst divide = (a, b) => a / b;\n\nexport { add, subtract, multiply, divide };\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,MAAM,CAAC,GAAG,MAAM,IAAI;AAC1B,IAAM,WAAW,CAAC,GAAG,MAAM,IAAI;AAC/B,IAAM,WAAW,CAAC,GAAG,MAAM,IAAI;AAC/B,IAAM,SAAS,CAAC,GAAG,MAAM,IAAI;",
"sources": ["../src/index.ts"],
"sourcesContent": ["const add = (a: number, b: number): number => a + b;\nconst subtract = (a: number, b: number): number => a - b;\nconst multiply = (a: number, b: number): number => a * b;\nconst divide = (a: number, b: number): number => a / b;\n\nexport { add, subtract, multiply, divide };\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,MAAM,CAAC,GAAW,MAAsB,IAAI;AAClD,IAAM,WAAW,CAAC,GAAW,MAAsB,IAAI;AACvD,IAAM,WAAW,CAAC,GAAW,MAAsB,IAAI;AACvD,IAAM,SAAS,CAAC,GAAW,MAAsB,IAAI;",
"names": []
}
5 changes: 5 additions & 0 deletions lib/dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
declare const add: (a: number, b: number) => number;
declare const subtract: (a: number, b: number) => number;
declare const multiply: (a: number, b: number) => number;
declare const divide: (a: number, b: number) => number;
export { add, subtract, multiply, divide };
2 changes: 1 addition & 1 deletion lib/dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions lib/dist/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 8 additions & 3 deletions lib/package.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
{
"name": "calculate-utils-test",
"type": "module",
"version": "0.0.0-both",
"version": "0.0.0-typescript",
"main": "dist/index.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"require": "./dist/index.cjs"
}
},
"files": ["src", "dist"],
"scripts": {
"build": "node ./build.js"
"build": "yarn clean && yarn build:js && yarn build:dts",
"build:js": "node ./build.js",
"build:dts": "tsc --emitDeclarationOnly",
"clean": "rm -rf dist"
},
"devDependencies": {
"esbuild": "^0.20.2"
"esbuild": "^0.20.2",
"typescript": "^5.4.2"
}
}
6 changes: 0 additions & 6 deletions lib/src/index.js

This file was deleted.

6 changes: 6 additions & 0 deletions lib/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const add = (a: number, b: number): number => a + b;
const subtract = (a: number, b: number): number => a - b;
const multiply = (a: number, b: number): number => a * b;
const divide = (a: number, b: number): number => a / b;

export { add, subtract, multiply, divide };
11 changes: 11 additions & 0 deletions lib/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"compilerOptions": {
"target": "es6" /* 최신 브라우저는 es6을 대부분 지원한다. */,
"module": "ES6" /* 모듈 시스템을 지정한다. */,
"lib": ["es5", "es6", "dom"] /* 타입스크립트가 어떤 버전의 JS의 빌트인 api를 사용할건지에 대한 것을 명시해준다. */,
"declaration": true /* 타입스크립트가 자동으로 타입정의 (d.ts) 파일을 생성해준다. */,
"outDir": "dist" /* 컴파일된 결과물을 어디에 저장할지에 대한 것을 명시해준다. */,
"strict": true /* 타입스크립트의 엄격한 모드를 활성화한다. */
},
"include": ["src"] /* 컴파일할 대상을 명시해준다. */
}
5 changes: 5 additions & 0 deletions lib/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,8 @@ esbuild@^0.20.2:
"@esbuild/win32-arm64" "0.20.2"
"@esbuild/win32-ia32" "0.20.2"
"@esbuild/win32-x64" "0.20.2"

typescript@^5.4.2:
version "5.4.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372"
integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==
11 changes: 8 additions & 3 deletions test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@
"license": "MIT",
"type": "module",
"scripts": {
"test:all": "yarn test:cjs && yarn test:esm",
"test:all": "yarn test:cjs && yarn test:esm && yarn test:ts",
"test:cjs": "node ./src/test.cjs",
"test:esm": "node ./src/test.js"
"test:esm": "node ./src/test.js",
"test:ts": "node --loader ts-node/esm --no-warnings ./src/test.ts"
},
"dependencies": {
"calculate-utils-test": "^0.0.0-both"
"calculate-utils-test": "^0.0.0-typescript"
},
"devDependencies": {
"ts-node": "^10.9.2",
"typescript": "^5.4.2"
}
}
5 changes: 5 additions & 0 deletions test/src/test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { add } from "calculate-utils-test";

console.log("TS test");

console.log(add(1, 2)); // 3
10 changes: 10 additions & 0 deletions test/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"compilerOptions": {
"target": "es6",
"lib": ["es6", "dom"],
"strict": true,
"module": "NodeNext",
"moduleResolution": "NodeNext"
},
"include": ["src"]
}
117 changes: 113 additions & 4 deletions test/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,116 @@
# yarn lockfile v1


calculate-utils-test@^0.0.0-both:
version "0.0.0-both"
resolved "https://registry.yarnpkg.com/calculate-utils-test/-/calculate-utils-test-0.0.0-both.tgz#16bb743759b278efb0663118ba9caea51455064e"
integrity sha512-v7nQt5EKcoP1O5CRd+MHmG0vBD6PoE9RSgzaWzmbgUNxyIXqKHIWfj+vzeZee7i/5idbyzOCxRzMdrLOFjuC6Q==
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
dependencies:
"@jridgewell/trace-mapping" "0.3.9"

"@jridgewell/resolve-uri@^3.0.3":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==

"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==

"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"

"@tsconfig/node10@^1.0.7":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==

"@tsconfig/node12@^1.0.7":
version "1.0.11"
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==

"@tsconfig/node14@^1.0.0":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==

"@tsconfig/node16@^1.0.2":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==

acorn-walk@^8.1.1:
version "8.3.2"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==

acorn@^8.4.1:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==

arg@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==

calculate-utils-test@^0.0.0-typescript:
version "0.0.0-typescript"
resolved "https://registry.yarnpkg.com/calculate-utils-test/-/calculate-utils-test-0.0.0-typescript.tgz#a8373bfd3c887eb615e6de25421bd48d330f0bac"
integrity sha512-fGqk5D1LFIiJca9SsSlyF9uRcTJAzKviaSRMuSqrPnbjMl/X/ijl2Dw0ES/yoT4CrBr6fG2pZ4HbJUHsxOKUCg==

create-require@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==

diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==

make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==

ts-node@^10.9.2:
version "10.9.2"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
dependencies:
"@cspotcode/source-map-support" "^0.8.0"
"@tsconfig/node10" "^1.0.7"
"@tsconfig/node12" "^1.0.7"
"@tsconfig/node14" "^1.0.0"
"@tsconfig/node16" "^1.0.2"
acorn "^8.4.1"
acorn-walk "^8.1.1"
arg "^4.1.0"
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"

typescript@^5.4.2:
version "5.4.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372"
integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==

v8-compile-cache-lib@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==

yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==