Rollup-plugin-typescript2: ํ”„๋กœ์ ํŠธ์˜ ์™ธ๋ถ€ TS ํŒŒ์ผ ๋ฐ ์„ ์–ธ ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ๋กค์—… ์ปดํŒŒ์ผ ์˜ค๋ฅ˜

์— ๋งŒ๋“  2018๋…„ 06์›” 29์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ezolenko/rollup-plugin-typescript2

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์™œ ๊ทธ๊ฒƒ์ด ์ž˜๋ชป๋œ ๊ฒƒ์ธ๊ฐ€

rollup-plugin-typescript2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ.

  • ํ”„๋กœ์ ํŠธ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์œ ํ˜• ์„ ์–ธ๊ณผ JS ๋ฒˆ๋“ค์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋˜์ง€ ์•Š์€ typescript ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ๊ฒฐ๊ณผ

https://github.com/ezolenko/rollup-plugin-typescript2/commit/ffe3b6cd9fc03611460aac15d2b880fab7a7d093 ๋กค๋ฐฑํ•˜๋ฉด ์ด ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ

๋‹ค์Œ์€ ์žฌ์ƒ์‚ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.
$ for f in $(git ls-files); do echo -e "\n// $f"; cat $f; done

๋ฒ„์ „

  • ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ: 2.9.2
  • ๋กค์—…: 0.62.0
  • ๋กค์—… ํ”Œ๋Ÿฌ๊ทธ์ธ typescript2: 0.15.1

๋กค์—….config.js

// rollup.config.js  
import typescript from 'rollup-plugin-typescript2';

export default {   
  input: 'index.ts',   
  output: [{ file: 'dist/index.js', format: 'es' }],    
  plugins: [    
    typescript({ verbosity: 3 }),     
  ],   
};   

tsconfig.json

// tsconfig.json     
{    
  "compilerOptions": {
    "declaration": true
  }    
}

ํŒจํ‚ค์ง€.json

// package.json
{    
  "name": "@cht/demo-rollup-issue",
  "private": true,     
  "engines": {
    "node": ">=8"     
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"     
  },    
  "devDependencies": { 
    "rollup": "0.62.0", 
    "rollup-plugin-typescript2": "0.15.1",   
    "ts-node": "7.0.0",    
    "typescript": "2.9.2"
  }   
}

๋‚˜๋จธ์ง€ ์ฝ”๋“œ

// extra/extra.ts
console.log('read all about it');   
// index.ts   
module.exports = 1;

์ž์„ธํ•œ ํ‘œ์‹œ๊ฐ€ 3์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถœ๋ ฅ

index.ts โ†’ dist/index.js...
rpt2: typescript version: 2.9.2
rpt2: tslib version: 1.9.2
rpt2: rollup-plugin-typescript2 version: 0.15.1
rpt2: plugin options:
{
    "verbosity": 3,
    "check": true,
    "clean": false,
    "cacheRoot": "/tmp/cht-demo-rollup-issue/.rpt2_cache",
    "include": [
        "*.ts+(|x)",
        "**/*.ts+(|x)"
    ],
    "exclude": [
        "*.d.ts",
        "**/*.d.ts"
    ],
    "abortOnError": true,
    "rollupCommonJSResolveHack": false,
    "typescript": "version 2.9.2",
    "useTsconfigDeclarationDir": false,
    "tsconfigOverride": {},
    "transformers": [],
    "tsconfigDefaults": {}
}
rpt2: rollup config:
{
    "external": [
        "",
        ""
    ],
    "inlineDynamicImports": false,
    "input": "index.ts",
    "chunkGroupingSize": 5000,
    "perf": false,
    "plugins": [
        {
            "name": "rpt2"
        }
    ],
    "entry": "index.ts"
}
rpt2: built-in options overrides: {
    "noEmitHelpers": false,
    "importHelpers": true,
    "noResolve": false,
    "noEmit": false,
    "inlineSourceMap": false,
    "outDir": "/tmp/cht-demo-rollup-issue/.rpt2_cache/placeholder",
    "moduleResolution": 2,
    "declarationDir": "/tmp/cht-demo-rollup-issue"
}
rpt2: parsed tsconfig: {
    "options": {
        "module": 5,
        "declaration": true,
        "configFilePath": "/tmp/cht-demo-rollup-issue/tsconfig.json",
        "noEmitHelpers": false,
        "importHelpers": true,
        "noResolve": false,
        "noEmit": false,
        "inlineSourceMap": false,
        "outDir": "/tmp/cht-demo-rollup-issue/.rpt2_cache/placeholder",
        "moduleResolution": 2,
        "declarationDir": "/tmp/cht-demo-rollup-issue"
    },
    "fileNames": [
        "/tmp/cht-demo-rollup-issue/index.ts",
        "/tmp/cht-demo-rollup-issue/dist/index.d.ts",
        "/tmp/cht-demo-rollup-issue/extra/extra.ts"
    ],
    "typeAcquisition": {
        "enable": false,
        "include": [],
        "exclude": []
    },
    "raw": {
        "compilerOptions": {
            "module": "ES2015",
            "declaration": true
        }
    },
    "errors": [],
    "wildcardDirectories": {
        "/tmp/cht-demo-rollup-issue": 1
    },
    "compileOnSave": false,
    "configFileSpecs": {
        "includeSpecs": [
            "**/*"
        ],
        "validatedIncludeSpecs": [
            "**/*"
        ],
        "wildcardDirectories": {
            "/tmp/cht-demo-rollup-issue": 1
        }
    }
}
rpt2: included:
'[
    "*.ts+(|x)",
    "**/*.ts+(|x)"
]'
rpt2: excluded:
'[
    "*.d.ts",
    "**/*.d.ts"
]'
rpt2: [34mAmbient types:[39m
rpt2:     /tmp/cht-demo-rollup-issue/dist/index.d.ts
rpt2:     /tmp/cht-demo-rollup-issue/node_modules/@types/estree/index.d.ts
rpt2:     /tmp/cht-demo-rollup-issue/node_modules/@types/node/index.d.ts
rpt2: [34mtranspiling[39m '/tmp/cht-demo-rollup-issue/index.ts'
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/code/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/syntacticDiagnostics/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/semanticDiagnostics/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2: [34mgenerated declarations[39m for '/tmp/cht-demo-rollup-issue/index.ts'
rpt2: generating target 1
rpt2: [34mrolling caches[39m
rpt2: generating missed declarations for '/tmp/cht-demo-rollup-issue/extra/extra.ts'
[!] Error: Could not find file: '/tmp/cht-demo-rollup-issue/extra/extra.ts'.
Error: Could not find file: '/tmp/cht-demo-rollup-issue/extra/extra.ts'.
    at getValidSourceFile (/tmp/cht-demo-rollup-issue/node_modules/typescript/lib/typescript.js:107554:23)
    at Object.getEmitOutput (/tmp/cht-demo-rollup-issue/node_modules/typescript/lib/typescript.js:108052:30)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/src/index.ts:311:29
    at arrayEach (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:516:11)
    at forEach (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:9342:14)
    at Object.onwrite (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/src/index.ts:305:5)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup/dist/rollup.js:22076:39
    at Array.map (<anonymous>)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup/dist/rollup.js:22075:18
    at <anonymous>

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฐ€์ƒ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ๋กค์—…์— ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๋ฝ๋œ ์„ ์–ธ์— ๋Œ€ํ•œ ํ•ดํ‚น์„ ์ค‘๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

๋ชจ๋“  5 ๋Œ“๊ธ€

์—ฌ๊ธฐ์—์„œ ์žฌํ˜„ํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ: https://github.com/amacleay/repro-rollup-plugin-ts2-declaration-issue (์œ„์— ๊ฒŒ์‹œ๋œ ๋‚ด์šฉ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•จ)

์ด๊ฒƒ์€ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ณ„์ธต ๊ตฌ์กฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ํŒŒ์ผ์„ ์ ์ค‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฐ๋ชจ ๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์ด ์—ฌ๊ธฐ์— ์ ์ค‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์‹ถ์€ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋กค์—… ๊ตฌ์„ฑ์— ๋ช‡ ๊ฐ€์ง€ ์ œ์™ธ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ๋กค์—…์— ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๋ฝ๋œ ์„ ์–ธ์— ๋Œ€ํ•œ ํ•ดํ‚น์„ ์ค‘๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

์ง€๊ธˆ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ์—์„œ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.

๊ณง ์ถœ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰