μ΅μ rpt2(0.24.1)λ js νμΌμ ν¬ν¨λ ts νμΌμ ν΄μνμ§ μμ΅λλ€.
μ΄κ²μ rpt2 0.22.1 μ΄νμμ μλν©λλ€.
import typescript from "rollup-plugin-typescript2";
import commonjs from "rollup-plugin-commonjs";
import autoExternal from "rollup-plugin-auto-external";
const OUTPUT_DIR = process.env.OUTPUT_DIR || "build";
export default {
input: ["src/processors/new-message-processor.js"]
output: {
dir: OUTPUT_DIR,
format: "cjs"
},
external: ["nanoid/async"], // this one doesn't autoExtenal properly
plugins: [
autoExternal({
builtins: true // handles nodeJS builtins
}),
commonjs(),
typescript({
typescript: require("typescript"),
verbosity: 3
})
]
};
{
"compilerOptions": {
"module": "ESNext",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"noImplicitAny": true,
"outDir": "./build",
"target": "es2018",
"baseUrl": "./src"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "build"]
}
μ€ν¨
src/processors/new-message-processor.js β build...
rpt2: built-in options overrides: {
"noEmitHelpers": false,
"importHelpers": true,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"outDir": "/Users/kylejohnson/Demeter/backend/node_modules/.cache/rollup-plugin-typescript2/placeholder",
"moduleResolution": 2,
"allowNonTsExtensions": true
}
rpt2: parsed tsconfig: {
"options": {
"module": 99,
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": 2,
"noImplicitAny": true,
"outDir": "/Users/kylejohnson/Demeter/backend/node_modules/.cache/rollup-plugin-typescript2/placeholder",
"target": 5,
"baseUrl": "/Users/kylejohnson/Demeter/backend/src",
"configFilePath": "/Users/kylejohnson/Demeter/backend/tsconfig.json",
"noEmitHelpers": false,
"importHelpers": true,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"allowNonTsExtensions": true
},
"fileNames": [
// these don't differ between runs
],
"typeAcquisition": {
"enable": false,
"include": [],
"exclude": []
},
"raw": {
"compilerOptions": {
"module": "ESNext",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"noImplicitAny": true,
"outDir": "./build",
"target": "es2018",
"baseUrl": "./src"
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"build"
],
"compileOnSave": false
},
"errors": [],
"wildcardDirectories": {
"/users/kylejohnson/demeter/backend/src": 1
},
"compileOnSave": false,
"configFileSpecs": {
"includeSpecs": [
"src/**/*"
],
"excludeSpecs": [
"node_modules",
"build"
],
"validatedIncludeSpecs": [
"src/**/*"
],
"validatedExcludeSpecs": [
"node_modules",
"build"
],
"wildcardDirectories": {
"/users/kylejohnson/demeter/backend/src": 1
}
}
}
rpt2: typescript version: 3.6.2
rpt2: tslib version: 1.10.0
rpt2: rollup version: 1.21.2
rpt2: rollup-plugin-typescript2 version: 0.24.1
rpt2: plugin options:
{
"typescript": "version 3.6.2",
"verbosity": 3,
"check": true,
"clean": false,
"cacheRoot": "/Users/kylejohnson/Demeter/backend/node_modules/.cache/rollup-plugin-typescript2",
"include": [
"*.ts+(|x)",
"**/*.ts+(|x)"
],
"exclude": [
"*.d.ts",
"**/*.d.ts"
],
"abortOnError": true,
"rollupCommonJSResolveHack": false,
"useTsconfigDeclarationDir": false,
"tsconfigOverride": {},
"transformers": [],
"tsconfigDefaults": {},
"objectHashIgnoreUnknownHack": false
}
rpt2: rollup config:
{
"chunkGroupingSize": 5000,
"experimentalCacheExpiry": 10,
"external": [
// from node_modules, doesn't vary between runs
],
"inlineDynamicImports": false,
"input": [
"src/processors/new-message-processor.js"
],
"perf": false,
"plugins": [
{
"name": "auto-external"
},
{
"name": "commonjs"
},
{
"name": "rpt2"
}
],
"strictDeprecations": false
}
rpt2: tsconfig path: /Users/kylejohnson/Demeter/backend/tsconfig.json
rpt2: included:
[
"*.ts+(|x)",
"**/*.ts+(|x)"
]
rpt2: excluded:
[
"*.d.ts",
"**/*.d.ts"
]
[!] Error: Could not resolve '../utils' from src/processors/new-message-processor.js
Error: Could not resolve '../utils' from src/processors/new-message-processor.js
at error (/Users/kylejohnson/Demeter/backend/node_modules/rollup/dist/rollup.js:9558:30)
at ModuleLoader.handleMissingImports (/Users/kylejohnson/Demeter/backend/node_modules/rollup/dist/rollup.js:16628:17)
at ModuleLoader.<anonymous> (/Users/kylejohnson/Demeter/backend/node_modules/rollup/dist/rollup.js:16679:26)
at Generator.next (<anonymous>)
at fulfilled (/Users/kylejohnson/Demeter/backend/node_modules/rollup/dist/rollup.js:40:28)
error Command failed with exit code 1.
μΌνκ³ μλ
src/processors/new-message-processor.js β build...
rpt2: built-in options overrides: {
"noEmitHelpers": false,
"importHelpers": true,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"outDir": "/Users/kylejohnson/Demeter/backend/.rpt2_cache/placeholder",
"moduleResolution": 2,
"allowNonTsExtensions": true
}
rpt2: parsed tsconfig: {
"options": {
"module": 99,
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": 2,
"noImplicitAny": true,
"outDir": "/Users/kylejohnson/Demeter/backend/.rpt2_cache/placeholder",
"target": 5,
"baseUrl": "/Users/kylejohnson/Demeter/backend/src",
"configFilePath": "/Users/kylejohnson/Demeter/backend/tsconfig.json",
"noEmitHelpers": false,
"importHelpers": true,
"noResolve": false,
"noEmit": false,
"inlineSourceMap": false,
"allowNonTsExtensions": true
},
"fileNames": [
// same as above
],
"typeAcquisition": {
"enable": false,
"include": [],
"exclude": []
},
"raw": {
"compilerOptions": {
"module": "ESNext",
"allowJs": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"noImplicitAny": true,
"outDir": "./build",
"target": "es2018",
"baseUrl": "./src"
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules",
"build"
],
"compileOnSave": false
},
"errors": [],
"wildcardDirectories": {
"/users/kylejohnson/demeter/backend/src": 1
},
"compileOnSave": false,
"configFileSpecs": {
"includeSpecs": [
"src/**/*"
],
"excludeSpecs": [
"node_modules",
"build"
],
"validatedIncludeSpecs": [
"src/**/*"
],
"validatedExcludeSpecs": [
"node_modules",
"build"
],
"wildcardDirectories": {
"/users/kylejohnson/demeter/backend/src": 1
}
}
}
rpt2: typescript version: 3.6.2
rpt2: tslib version: 1.10.0
rpt2: rollup version: 1.21.2
rpt2: rollup-plugin-typescript2 version: 0.22.1
rpt2: plugin options:
{
"typescript": "version 3.6.2",
"verbosity": 3,
"check": true,
"clean": false,
"cacheRoot": "/Users/kylejohnson/Demeter/backend/.rpt2_cache",
"include": [
"*.ts+(|x)",
"**/*.ts+(|x)"
],
"exclude": [
"*.d.ts",
"**/*.d.ts"
],
"abortOnError": true,
"rollupCommonJSResolveHack": false,
"useTsconfigDeclarationDir": false,
"tsconfigOverride": {},
"transformers": [],
"tsconfigDefaults": {},
"objectHashIgnoreUnknownHack": false
}
rpt2: rollup config:
{
"chunkGroupingSize": 5000,
"experimentalCacheExpiry": 10,
"external": [
// same as above
],
"inlineDynamicImports": false,
"input": [
"src/processors/new-message-processor.js"
],
"perf": false,
"plugins": [
{
"name": "auto-external"
},
{
"name": "commonjs"
},
{
"name": "rpt2"
}
],
"strictDeprecations": false
}
rpt2: tsconfig path: /Users/kylejohnson/Demeter/backend/tsconfig.json
rpt2: included:
[
"*.ts+(|x)",
"**/*.ts+(|x)"
]
rpt2: excluded:
[
"*.d.ts",
"**/*.d.ts"
]
rpt2: Ambient types:
rpt2: /Users/kylejohnson/Demeter/backend/src/global.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/accepts/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/babel__core/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/babel__generator/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/babel__template/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/babel__traverse/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/bl/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/body-parser/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/caseless/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/connect/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/cookies/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/eslint-visitor-keys/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/estree/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/events/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/express/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/express-serve-static-core/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/form-data/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/formidable/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/http-assert/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/istanbul-lib-coverage/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/istanbul-lib-report/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/istanbul-reports/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/jest/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/jest-diff/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/json-schema/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/json5/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/jsonwebtoken/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/keygrip/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/koa/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/koa-compose/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/koa-router/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/long/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/mime/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/node/ts3.2/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/pg/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/pg-types/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/pino/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/pino-std-serializers/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/range-parser/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/request/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/resolve/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/serve-static/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/sonic-boom/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/stack-utils/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/stream-to-array/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/tough-cookie/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/yargs/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/yargs-parser/index.d.ts
rpt2: /Users/kylejohnson/Demeter/backend/node_modules/@types/yauzl/index.d.ts
rpt2: ambient types changed, redoing all semantic diagnostics
rpt2: dependency '/Users/kylejohnson/Demeter/backend/src/utils.ts'
rpt2: imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: resolving '../utils' imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: to '/Users/kylejohnson/Demeter/backend/src/utils.ts'
rpt2: dependency '/Users/kylejohnson/Demeter/backend/src/processors/message-handler-framework.ts'
rpt2: imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: resolving './message-handler-framework' imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: to '/Users/kylejohnson/Demeter/backend/src/processors/message-handler-framework.ts'
rpt2: dependency '/Users/kylejohnson/Demeter/backend/src/buffered-channel.ts'
rpt2: imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: resolving '../buffered-channel' imported by '/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js'
rpt2: to '/Users/kylejohnson/Demeter/backend/src/buffered-channel.ts'
rpt2: transpiling '/Users/kylejohnson/Demeter/backend/src/utils.ts'
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/code/cache/6895f7e81850383bec8a4facc7e6e179d2c36c2a'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/syntacticDiagnostics/cache/6895f7e81850383bec8a4facc7e6e179d2c36c2a'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/semanticDiagnostics/cache/6895f7e81850383bec8a4facc7e6e179d2c36c2a'
rpt2: cache miss
rpt2: transpiling '/Users/kylejohnson/Demeter/backend/src/processors/message-handler-framework.ts'
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/code/cache/bd72d31b4317d7b2d9cd3f1d29bc790c76468d5a'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/syntacticDiagnostics/cache/bd72d31b4317d7b2d9cd3f1d29bc790c76468d5a'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/semanticDiagnostics/cache/bd72d31b4317d7b2d9cd3f1d29bc790c76468d5a'
rpt2: cache miss
rpt2: dependency '/Users/kylejohnson/Demeter/backend/src/aws.ts'
rpt2: imported by '/Users/kylejohnson/Demeter/backend/src/processors/message-handler-framework.ts'
rpt2: resolving '../aws' imported by '/Users/kylejohnson/Demeter/backend/src/processors/message-handler-framework.ts'
rpt2: to '/Users/kylejohnson/Demeter/backend/src/aws.ts'
rpt2: transpiling '/Users/kylejohnson/Demeter/backend/src/buffered-channel.ts'
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/code/cache/6a7cbb15c399dd3ba3546f1ccc0686609add6344'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/syntacticDiagnostics/cache/6a7cbb15c399dd3ba3546f1ccc0686609add6344'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/semanticDiagnostics/cache/6a7cbb15c399dd3ba3546f1ccc0686609add6344'
rpt2: cache miss
rpt2: dependency '/Users/kylejohnson/Demeter/backend/src/aws.ts'
rpt2: imported by '/Users/kylejohnson/Demeter/backend/src/buffered-channel.ts'
rpt2: resolving './aws' imported by '/Users/kylejohnson/Demeter/backend/src/buffered-channel.ts'
rpt2: to '/Users/kylejohnson/Demeter/backend/src/aws.ts'
rpt2: transpiling '/Users/kylejohnson/Demeter/backend/src/aws.ts'
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/code/cache/cc5447b8d6c1f999fb4bf4c04b2704ed191d0f41'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/syntacticDiagnostics/cache/cc5447b8d6c1f999fb4bf4c04b2704ed191d0f41'
rpt2: cache miss
rpt2: cache: '/Users/kylejohnson/Demeter/backend/.rpt2_cache/rpt2_7949c609ec7b2114d4476feb47433d93ccf7c5ed/semanticDiagnostics/cache/cc5447b8d6c1f999fb4bf4c04b2704ed191d0f41'
rpt2: cache miss
rpt2: generating target 1
rpt2: rolling caches
created build in 18.3s
β¨ Done in 19.30s.
κ°μ λ¬Έμ κ° μμ΅λλ€. κ°μ Έμ¬ λ λλκ²λμ΄ μλνλ κ² κ°λ€ ./myfile.ts
λμ ./myfile
νμ§λ§ VScode μΌλ₯Ό μ€λ₯ An import path cannot end with a '.ts' extension. Consider importing './myfile' instead.
λΉ μλ κ²½λ‘λ μμλ κ² κ°μ΅λλ€(tsconfig.jsonμμ baseUrl
μ΅μ
μ¬μ©).
.js νμΌμμ typescript λͺ¨λμ κ°μ Έμ¬ λ
import m1 from "./module1"
=> μλ
import m1 from "./module1.ts"
=> μλ
import m2 from "lib/module2"
=> μλ
import m2 from "lib/module2.ts"
=> μλνμ§ μμ
import m2 from "./lib/module2.ts"
=> μλ
.js νμΌμμ typescript λͺ¨λμ κ°μ Έμ¬ λ
import m1 from "./module1"
=> λ μ΄μ μλνμ§ μμ΅λλ€
import m1 from "./module1.ts"
=> μλ
import m2 from "lib/module2"
=> λ μ΄μ μλνμ§ μμ΅λλ€
import m2 from "lib/module2.ts"
=> μλνμ§ μμ
import m2 from "./lib/module2.ts"
=> μλ
@kyle-johnson μ€μ λ‘ νμΌ λͺ©λ‘μ κ²μν μ μμ΅λκΉ? 0.23.0 μ΄ν νλ¬κ·ΈμΈμ tsconfig μ€μ μ κΈ°λ°μΌλ‘ νλ typescriptμμ μ°Ύμ μ μλ νμΌμμ κ°μ Έμ€κΈ°λ₯Ό νμΈνλ κ²μ λ°©μ§ν©λλ€. λλ κΆκΈ src/processors/new-message-processor.js
λͺ©λ‘μ (μ’μ 보μ΄λν΄μΌ λΉμ μ΄ κ°μ§κ³ μκΈ° λλ¬Έμ, allowJs: true
)
"fileNames": [
// these don't differ between runs
],
μ, κ±°κΈ°μ μμ΅λλ€.
"fileNames": [
[...]
"/Users/kylejohnson/Demeter/backend/src/utils.ts",
[...]
"/Users/kylejohnson/Demeter/backend/src/processors/new-message-processor.js",
[...]
],
νλ¬κ·ΈμΈ μ΅μ
μ include: ["*.ts+(|x)", "**/*.ts+(|x)", "*.js"]
μ μΆκ°νκ³ μλν΄ μ£Όμκ² μ΅λκΉ? μλνλ©΄ tsconfigμ allowJsκ° μ€μ λμ΄ μμΌλ©΄ js νμ₯μ μΆκ°νκ² μ΅λλ€.
@kyle-johnson 0.24.3μ μλν΄ μ£Όμκ² μ΅λκΉ? μ§κΈ μμ λ μ μμ΅λλ€.
0.24.3μΌλ‘ λ¬Έμ κ° ν΄κ²°λμ§ μμ΅λλ€. 0.22.1μμ λ§μ§λ§μΌλ‘ μμ ν κ°λ¨ν νλ‘μ νΈκ° μμ΅λλ€.
git clone https://github.com/nickbabcock/vigenere.git
cd vigenere
git checkout dependabot/npm_and_yarn/rollup-plugin-typescript2-0.24.3
npm ci
npm run build
λ€μ μ€λ₯κ° λ°μν©λλ€.
src/main.js β public/bundle.js...
[!] Error: Could not resolve './core/vigenere-cipher' from src/App.svelte
Error: Could not resolve './core/vigenere-cipher' from src/App.svelte
at error (/tmp/vigenere/node_modules/rollup/dist/rollup.js:9558:30)
at ModuleLoader.handleMissingImports (/tmp/vigenere/node_modules/rollup/dist/rollup.js:16628:17)
at ModuleLoader.<anonymous> (/tmp/vigenere/node_modules/rollup/dist/rollup.js:16679:26)
at Generator.next (<anonymous>)
at fulfilled (/tmp/vigenere/node_modules/rollup/dist/rollup.js:40:28)
0.24.3μ΄ λ΄ κ²½μ°λ₯Ό μμ ν©λλ€.
@nickbabcock importλ₯Ό ./core/vigenere-cipher.ts
λ³κ²½νλ©΄ κ·νμ λ¬Όκ±΄μ΄ μ»΄νμΌλλ κ² κ°μ΅λλ€. λ¬Άμμ΄ λ§λμ§ μλμ§ μ μ μμ΅λλ€.
μμ€ νμΌμ΄ jsκ° μλκ³ λ‘€μ μ λν κ°μ Έμ€κΈ°λ₯Ό ν΄κ²°νλ κ²μ΄ ts νμΌμ μΈμνμ§ λͺ»νκΈ° λλ¬Έμ rpt2κ° κ°μ Έμ€κΈ° μ체λ₯Ό ν΄κ²°νμ§ μλ κ² κ°μ΅λλ€.
ν΅μ°°λ ₯μ μ£Όμ μ κ°μ¬ν©λλ€. μ μ μ¬μΈνκ³ λ‘€μ μ§μμ μ΄λ³΄ λ¨κ³μ λλ€. λ²λ€μ΄ μ¬λ°λ₯Έ κ²μΌλ‘ νλͺ λμμ΅λλ€. π