Rollup-plugin-typescript2: 'рдЗрдирдкреБрдЯ' рд░реЛрд▓рдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рднреАрддрд░ рдЧрд▓рдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдЯрд╛рдЗрдкрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдлрд╝рд░ре░ 2019  ┬╖  33рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ezolenko/rollup-plugin-typescript2

рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдЧрд▓рдд рд╣реИ

рд╕рдВрднрд╡рдд: рдпрд╣ рдореЗрд░реА рдУрд░ рд╕реЗ рдПрдХ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ object рдХреЗ рд░реВрдк рдореЗрдВ input рд░реЛрд▓рдЕрдк рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐, рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП typings рдлрд╝рд╛рдЗрд▓ рд░реЗрдкреЛ (рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░) рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмрдВрдбрд▓ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдпрд╣рд╛рдВ, ./dist ) рдирд╣реАрдВред

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

  • рдЯрд╛рдЗрдкрдкреНрд░рддрд┐: 3.2.4
  • рд░реЛрд▓рдЕрдк: 1.1.2
  • рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2: 0.19.2

рд░реЛрд▓рдЕрдк.config.js

{
    ...
    input: {
        Lib1: './src/Lib1.tsx',
        Lib2: './src/Lib2.tsx'
    },
    output: {
        dir: './dist',
        format: 'cjs',
        sourcemap: true,
        entryFileNames: '[name].js'
    }
}

tsconfig.json

{
  ...
  "compilerOptions": {
    "outDir": "./dist"
  },
}

рдирддреАрдЬрд╛:

// These files are created
./Lib1.d.ts
./Lib2.d.ts

// instead of (expected):
./dist/Lib1.d.ts
./dist/Lib2.d.ts

рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ, рдпрджрд┐ рдЖрдк entryFileNames: 'dist/[name].js' рдпрд╣ dist рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ dist рдирд╛рдордХ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдмрдирд╛рддрд╛ рд╣реИред

bug more info needed

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдБред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк tsc рдХреЛ рдмрдВрдбрд▓рд┐рдВрдЧ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддреЗред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ tsc рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ:

  1. "рдЗрди рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ" рдФрд░ рдореБрдЭреЗ (рдпрд╛рдиреА рд░реЛрд▓рдЕрдк) рдбрд┐рд╕реНрдХ рдкрд░ рдмрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЗрдВред
  2. "рдЗрд╕ TS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рдШреЛрд╖рдгрд╛рдПрдБ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдБ рдкрд░ рдбрдВрдк рдХрд░реЗрдВред"

рдЬрдм рдЖрдк "рдЗрдирдкреБрдЯ рдореИрдк" рдФрд░ рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ 1 рдФрд░ 2 рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рди рд╣реА рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ - AFAICTред

... рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрди рдХреЛ рдЯрд╛рдЗрдк-рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдЬрдирд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗред

рд╕рднреА 33 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

useTsconfigDeclarationDir рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд▓реНрдк рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓ рд╣реИред

рдпрд╣ #142 рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, 0.20.0 . рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛

рд╣рд╛рдп @ezolenkom рдФрд░ @jakearchibald , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред

рдореЗрд░реЗ рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрди рдореЗрдВ useTsconfigDeclarationDir рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдм рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдФрд░ 0.20.1 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

@benkeen useTsconfigDeclarationDir: true рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ declarationDir рдореВрд▓реНрдп tsconfig.json

рдЗрд╕реА рддрд░рд╣ рдХреА рдкрд░реЗрд╢рд╛рдиреА рд╣реИ, рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдЖрдЙрдЯ рдЗрд╕ рддрд░рд╣ рд╣реИ:

export default [ 
  {
    input: 'src/subFolder1/one.ts,
    output: [
                    {
                      file: 'dist/one.js'
                      .....                      
                     }
    ],
    plugins: [
           typescript({
                typescript: require('typescript'),
            }),
    ]
  },
      input: 'src/subFolder2/two.ts,
      output: [
                    {
                      file: 'dist/two.js'
                      .....                      
                     }
    ],
     ...
  },
]

рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  |---subFolder1
  |          |--------one.d.ts
  |
  |---subFolder2
  |          |---------two.d.ts
  |-----one.js
  |-----two.js

рдореЗрд░реЗ рд▓рд┐рдП 0.20.1 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ useTsconfigDeclarationDir: false -- d.ts рдлрд╝рд╛рдЗрд▓реЗрдВ output.[].dir рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВред @рдмреЗрдирдХреЗрди рдХреНрдпрд╛ рдЖрдк рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@AntonPilyak рдЬреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ - рдпрджрд┐ d.ts рдЙрдк рдкрде рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рдереЗ, рддреЛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ subFolder1/one.ts рдФрд░ subFolder2/one.ts , рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

@ezolenko : рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛, рдЕрдзрд┐рдХ рдЕрд╕реБрд╡рд┐рдзрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддреА рд╣реИ рдмрд▓реНрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддреА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЙрди рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ)ред рдореБрдЭреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреА рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдмрдВрдбрд▓ рдХреА рдЬрдбрд╝ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреА рд╣реИ, рдФрд░ рдПрдХ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ .npmignore рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдПрдВред рдФрд░ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк.рдХреЙрдиреНрдлрд┐рдЧ.рдЬреЗрд╕рди рдХреЗ 'рдЖрдЙрдЯрдкреБрдЯ' рдЦрдВрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@AntonPilyak рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ useTsconfigDeclarationDir: true рд╡рд┐рдХрд▓реНрдк, рд╕реЗрдЯрдЕрдк declarationDir tsconfig рдореЗрдВ, рдЗрд╕ рдЬрд╛рдиреЗ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рд╣реА typings рдЙрддреНрдкрд╛рджрди рд░рд╛рд╕реНрддреЛрдВ рд╕рдВрднрд╛рд▓ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рддрдп рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдкрдереЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╡рд┐рдХрд╕рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реЛрдЧрд╛, рдЕрдЪрд╛рдирдХ рдЖрдкрдХреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗрд╡рд▓ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝ рджреА рд╣реИред

рдЖрдо рддреМрд░ рдкрд░ рдпрджрд┐ рдЖрдк рд╕реБрдВрджрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡реИрд╕реЗ рднреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (рдПрдХ npm рдореЙрдбреНрдпреВрд▓ рдерд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрд╕рдХрд╛ рдирд╛рдо рднреВрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ)

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 0.22.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ @ AntonPilyak . рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

{
    ...
    input: {
        foo: 'src/lorem/foo.ts',
        bar: 'src/ipsum/bar.ts'
    },
    output: {
        dir: 'dist',
        format: 'cjs',
        sourcemap: true,
    }
}

рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ:

dist/
    lorem/
        foo.d.ts
    ipsum/
        bar.d.ts
    foo.js
    foo.js.map
    bar.js
    bar.js.map

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ *.d.ts рдлрд╛рдЗрд▓реЗрдВ *.js рдФрд░ *.js.map рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдмреИрдареЗрдВред

рдореИрдВрдиреЗ useTsconfigDeclarationDir рдФрд░ declarationDir рдХреЗ рд╕рд╛рде рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖред

рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдореЗрд╢рд╛ рдХреНрд░рдорд╢рдГ lorem рдФрд░ ipsum рдЙрдк-рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдХрднреА рднреА рдПрдХ рд╕рдкрд╛рдЯ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБред

dist/
    lorem/
        foo.d.ts
    ipsum/
        utils/
            bar-helper.d.ts
        bar.d.ts
     some_other_ts_file/
         not_imported_by/
             neither_foo_nor_bar/
                  wat.d.ts
    foo.js
    foo.js.map
    bar.js
    bar.js.map

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдкрд░ options.tsconfigOverride.input рдХреЛ рд╕реНрдХреЛрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдЕрд╕рд▓ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ tsconfigOverride.input рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рд╕рдм рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

...

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИ рдЕрдЧрд░ рдЗрд╕реЗ utils/bar-helper.ts рд▓рд┐рдП рдПрдХ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо wat.ts рдХреЛ рдкреВрд░реА рдЪреАрдЬ рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдБ, рдпрд╣ tsconfig рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ tsconfig рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдорд┐рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдмреЛрд╕рд┐рдЯреА 3 рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рдЪрд▓рд╛рдПрдВ рдФрд░ "рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП tsconfig" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред

рдкрд░рд┐рднрд╛рд╖рд╛ рдкрде рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрдк 'src/ipsum/foo.ts' рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╣рд╛рдБ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдЪреВрдВрдХрд┐ рдпрд╣ dist/foo.js рд▓рд┐рдП рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ - рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣ - рдпрд╛рдиреА dist/foo.d.ts ред

рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ dist/foo.js рдФрд░ dist/lorem/foo.d.ts рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ?

рдкреВрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд╣рд╛рдВ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ:
src/dir1/foo.ts
src/dir2/foo.ts

dir1/foo.ts рд╣рдореЗрдВ рд░реЛрд▓рдЕрдк рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ dir2/foo.ts рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рд░реЛрд▓рдЕрдк dist/foo.js рдмрдВрдбрд▓ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рджреЛрдиреЛрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕рдорд╛рди рдирд╛рдо рд╕реЗ 2 рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд╕реНрд░реЛрдд рд▓реЗрдЖрдЙрдЯ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ tsc рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ (рдЖрд░рдкреАрдЯреА 2 рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд┐рд▓рдп рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

рдФрд░ рд╣рд╛рдБ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдХрд╣рд╛рдБ рдорд┐рд▓реЗрдВрдЧреАред рддреЛ рдереЛрдбрд╝рд╛ рдЧрдиреНрджрд╛ рд╣реЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк npm рдкрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП "types" рдореЗрдВ package.json рдХреЛ d.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╣рд╛рдВ рд╕реЗ рдЪреАрдЬреЗрдВ рдвреВрдВрдвреЗрдЧрд╛ред

рдЖрд╣, рддреЛ рдпрд╣ рдкреНрд▓рдЧрдЗрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдШреЛрд╖рдгрд╛-рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд░реЛрд▓рдЕрдк рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ, рдпрд╣ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл tsc рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ?

рдлрд┐рд░ рднреА, рдЕрдЧрд░ рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрдЬрд╛рдЧрд░/рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП *.d.ts рдлрд╛рдЗрд▓реЗрдВ рдХреНрдпреЛрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдореИрдВ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЙрдбреНрдпреВрд▓ ( import tool1 from 'myTools/tool1'; рдЖрджрд┐ ..) рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП pkg.types рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИред VSCode рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрд╕рдХреЗ *.js рд╕рдордХрдХреНрд╖ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

{
    ...
    input: {
        fooscript: 'src/foo/index.ts',
        barscript: 'src/bar/index.ts'
    },
    output: {
        dir: 'dist',
        format: 'cjs',
        sourcemap: true,
    }
}

рдореБрдЭреЗ рд╕рдордЭ рдЖ рдЧрдпрд╛:

dist/
    foo/
        index.d.ts
    bar/
        index.d.ts
    fooscript.js
    fooscript.js.map
    barscript.js
    barscript.js.map

рдФрд░ рдЕрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП dist/fooscript.js рдФрд░ dist/foo/index.d.ts рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

...

рдХреНрдпрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд▓рдЧрдЗрди рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЧрдВрддрд╡реНрдп/рдЖрдЙрдЯрдкреБрдЯ рдкрде рдЦрд┐рд▓рд╛ рд╕рдХреЗ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдПрд╕рд╕реА рдореВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдХрд╕рдХрд░ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИред
...рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд *.d.ts рдлрд╝рд╛рдЗрд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрдирдкреБрдЯ-рдлрд╝рд╛рдЗрд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдЧрдВрддрд╡реНрдп рдкрд░ рд▓реЗ рдЬрд╛рдПрдБ + рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред (рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдЕрдкрдиреА рдЧрд╛рдВрдб рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП... ;-)

рд░реЛрд▓рдЕрдк рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реВрдВ - рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкреНрд▓рдЧрдЗрди рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред

рдирд╣реАрдВ, рдкреНрд▓рдЧрдЗрди рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЙрд╕реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ рдЖрдИрдбреАрдИ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рд▓рд┐рдЦрдирд╛ рд╣реИред

рдкреНрд░рддрд┐ рд░реЛрд▓рдЕрдк рдЗрдирдкреБрдЯ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрдпрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░реЛрд▓рдЕрдк рдПрдХ рдЗрдирдкреБрдЯ ts рдлрд╝рд╛рдЗрд▓ рджреЗрдЦ рд░рд╣рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдФрд░ рдмрдВрдбрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ tsconfig рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдБред рдЕрдЧрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣реА рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдПрдкреАрдЖрдИ рдХрд╛рдлреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ ...

рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдЙрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрднреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдирдкреАрдПрдо рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреИрдХреЗрдЬ рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдореИрдВ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдкреНрд░рдХрд╛рд╢рд┐рдд/рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдЯ-рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

(рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝реЛрд▓реНрдбрд░-рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ TS/ES6 рдореЗрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг-рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ, рдФрд░ рд░реЛрд▓рдЕрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди рдФрд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рдХреБрд╢рд▓ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде CJS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рд╛рдЭрд╛ рдХреЛрдбред)

рдореИрдВ рдлрд┐рд░ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓-рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдХреЗ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдЬреИрд╕реЗ:

import tool1 from 'myTools/tool1';
import tool2 from 'myTools/tool2';

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдЯреВрд▓рдХрд┐рдЯ (рдХреЛрдИ pkg.main рдпрд╛ pkg.module рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рднреА рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ, рдореИрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ, рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдкрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рдЬрди/рдмреНрд▓реЛрдЯ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ (рдЬрд┐рд╕рдореЗрдВ рдХреБрд╢рд▓ рдЯреНрд░реА-рд╣рд┐рд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

...рдореИрдВ рдЕрдм рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд░ tsc рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореИрдВ рдЙрди рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрд┐рдирд╕реЗ рдЖрдк рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк tsc рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓/рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЛ "amd" рдпрд╛ "system" , рддреЛ рдпрд╣ рд╕рднреА рдХреА рдПрдХ рд╕рд╛рдл рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ *.d.ts рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЖрд╡рд╢реНрдпрдХ declare module "..." рдмреНрд▓реЙрдХ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ/рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдВрддрд┐рдо (рдореБрдЦреНрдп) рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рдгрд╛ рдХреЛ рдЕрд▓рд┐рдЦрд┐рдд/рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ?


рд╕рд╛рдЗрдб рдиреЛрдЯ: рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ tsc рдЙрд╕ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЯреНрд░реА-рд╣рд┐рд▓рд╛рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдореБрдЦреНрдп (рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ) рдореЙрдбреНрдпреВрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдПрдХрд▓, рдмрд╣реБрдд рд╣реА рд╕рд░рд▓, рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рднреА рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ "рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ" рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдирд┐рдЬреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рдмреНрд▓реЙрдХ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддреА рд╣реИред рдордЬрд╝реЗрджрд╛рд░ред :-)

рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░ред
рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдПрдХ рдХрд╕реНрдЯрдо declarationDir рдХреЗ рд▓рд┐рдП tsc рд╕рднреА рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП *.d.ts рдореЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд┐ рдЖрдпрд╛рдд рдПрдХ рд╣реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐-рдлрд╝рд╛рдЗрд▓-рд╣реИрдВ- рдЖрдЙрдЯрдкреБрдЯ-рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд░реЛрд▓рдЕрдк рдХреЛ рдлрд╝реАрдб рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдмрдВрдбрд▓-рдЧрдВрддрд╡реНрдп-рд╕реНрддрд░реАрдп рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ export * from рд╣реИред

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдореИрдВ dist/fooscript.d.ts рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓:

export *  from './__types/foo/index';

рдпрд╣ рдПрдХ рдмрджрд╕реВрд░рдд рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╣реИрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ rollup-plugin-typescript2 рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рдБред

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ (рдЬрдм рдореИрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реВрдВ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП <bundlename>.d.ts рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ d.ts рдХреЗ рд▓рд┐рдП /// <reference types=""/> рдХрд╛ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░реВрдЯ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдпрд╛рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:

IMO, рдореЗрд░реЗ рд╣реИрдХ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рдмрджрд╕реВрд░рдд рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рдпрд╣ рд░реЛрд▓рдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдордзреНрдпрд╕реНрде *.d.ts рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЛрд▓рдЕрдк рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдмрдВрдбрд▓реЛрдВ рдФрд░ tsc рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкреБрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╕рд╛рдл рдФрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рддрд░реАрдХрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ tsc -рдЬрдирд░реЗрдЯреЗрдб рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓/рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдХреЗрд▓реА рд░рд╣ рдЬрд╛рддреА рд╣реИ - рдРрд╕рд╛ рди рд╣реЛ рдХрд┐ рдЖрдк рдХрд╕реНрдЯрдо рднрд╛рд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХреЗрдВред

рдФрд░ рдЕрдЧрд░ rollup-plugin-typescript2 output.dir + '__types' рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ declarationDir output.dir + '__types' рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ tsc рдХреА рдЕрддрд┐-рдЙрддреНрд╕реБрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдЧрдбрд╝рдмрдбрд╝реА рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддреА рд╣реИ- рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдорд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рджреГрд╖реНрдЯрд┐ред рдЗрд╕ рддрд░рд╣ рдмрд╛рд╣рд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╛рдЗрд▓реЗрдВ рдЖрдИрдПрдордУ рдХреА рдмрд╣реБрдд рдорд╛рдореВрд▓реА рдЪрд┐рдВрддрд╛ рдмрди рдЬрд╛рддреА рд╣реИрдВред


рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдпрд╣рд╛рдВ рдореЗрд░реА рд▓рд┐рдкрд┐ рдХрд╛ рдорд╛рдВрд╕ рд╣реИ:

const { makeInputMap, getEntrypoints, distFolder, srcFolder } = require('./buildHelpers');
const { writeFileSync } = require('fs');
const { relative } = require('path');

const srcPrefixRe = new RegExp('^' + srcFolder + '/');
const tsExtRe = /\.tsx?$/;

const declDirRelative = './' + relative(
  distFolder,
  require('../tsconfig.json').compilerOptions.declarationDir
);

const tsEntrypoints = getEntrypoints()
  .filter((fileName) => tsExtRe.test(fileName));

Object.entries(makeInputMap(tsEntrypoints))
  .forEach(([moduleName, sourcePath]) => {
    const tscDeclFile = sourcePath
      .replace(srcPrefixRe, declDirRelative + '/')
      .replace(tsExtRe, '');
    const outFile = distFolder + '/' + moduleName + '.d.ts';
    writeFileSync(
      outFile,
      [
        'export * from "' + tscDeclFile + '";',
        'import x from "' + tscDeclFile + '";',
        'export default x;',
        '',
      ].join('\n')
    );
  });

console.info('Created local declaration files for TypeScripted entrypoints.');

рдореИрдВрдиреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ default рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ default рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рд╣реИ, рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рдФрд░ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рдХрдо рд╕реЗ рдХрдо VSCode рджреНрд╡рд╛рд░рд╛ред)

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ v0.23.0 рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

(... рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рд╕рднреА рдХрд╕реНрдЯрдо рдлрд╝рдлрд╝рд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)

0.23 рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдЙрди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд▓реНрдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд░реВрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдореЗрд░реА рдХрд╕реНрдЯрдо рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдзреАрд░реЗ-рдзреАрд░реЗ рдореЗрд░реА рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд░реЗрдВрдЧ рд░рд╣реА рд╣реИред рдУ_рдУ

рдПрдлрд╡рд╛рдИрдЖрдИ: рдЖрдзрд┐рдХрд╛рд░рд┐рдХ @ рд░реЛрд▓рдЕрдк/рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдХреЗрдЬ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЗрд╕рдореЗрдВ рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реАрдорд╛рдПрдБ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВред

@maranomynet рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рд░реЛрд▓рдЕрдк рдХреЗ рдмрд╛рдж рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдЦреБрдж рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реМрднрд╛рдЧреНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рд╣рд╛рдБред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк tsc рдХреЛ рдмрдВрдбрд▓рд┐рдВрдЧ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддреЗред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ tsc рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ:

  1. "рдЗрди рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░реЗрдВ" рдФрд░ рдореБрдЭреЗ (рдпрд╛рдиреА рд░реЛрд▓рдЕрдк) рдбрд┐рд╕реНрдХ рдкрд░ рдмрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд▓рд┐рдЦрдиреЗ рджреЗрдВред
  2. "рдЗрд╕ TS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рдШреЛрд╖рдгрд╛рдПрдБ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдБ рдкрд░ рдбрдВрдк рдХрд░реЗрдВред"

рдЬрдм рдЖрдк "рдЗрдирдкреБрдЯ рдореИрдк" рдФрд░ рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ 1 рдФрд░ 2 рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рди рд╣реА рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ - AFAICTред

... рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрди рдХреЛ рдЯрд╛рдЗрдк-рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдЬрдирд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗред

рдЖрд╣ рд╣рд╛рдБ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж! рдЖрдкрдХреЗ рд╕рд╣рд╛рдпрдХ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ ЁЯСО рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рднрд╛рдЧреНрдп?

рдХрд┐рд╕реА рднреА рд╕рдВрдШрд░реНрд╖рд░рдд рдЖрддреНрдорд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ @maranomynet рдФрд░ рдореЗрд░реЗ рд╕рдорд╛рди src рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЖрдпрд╛, рдПрдХ рдФрд░ рдмрджрд╕реВрд░рдд рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди/рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдЙрддреНрддрд░ рдореЗрдВ рдЗрд╕рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛:
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреЛ рдЕрдкрдиреЗ tsconfig.json рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП рдЬрд┐рд▓реЗ рдореЗрдВ рд╕рднреА *.d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкрде рдореЗрдВ рдбрдВрдк рдХрд░ рд╕рдХреЗред рдФрд░ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд▓рдЧрдЗрди рдореЗрдВ useTsConfigDeclarationDir рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рд╕рд╛рде рд╣реА, рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдиреЗ рд░реЛрд▓рдЕрдк.config.js (рдФрд░ package.json) рдореЗрдВ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХ рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдкрде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рдкрдереЛрдВ рдХреЛ рдЕрдкрдиреЗ 'declarationDir' + 'рдЖрдкрдХрд╛ src рдШрдЯрдХ рдорд╛рд░реНрдЧ рдХреИрд╕рд╛ рд╣реИ' рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВред рддреЛ рдпрджрд┐ src рдореЗрдВ рдЖрдкрдХрд╛ рдШрдЯрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

src/рд╣реЛрдордкреЗрдЬ/foo.tsx

рдФрд░ рдЖрдкрдХреА рдШреЛрд╖рдгрд╛ рдбреАрдЖрдИрдЖрд░ рд╣реИ:

рдЬрд┐рд▓рд╛/рдорд╛рдИрдбрд┐рдХреНрд▓реЗрд░реЗрд╢рдирдбреАрдЖрдИрдЖрд░

рддреЛ рдЖрдкрдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрде рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

dist/MyDeclarationDir/homepage/foo.js

рдЗрд╕ рддрд░рд╣, рд░реЛрд▓рдЕрдк рдЖрдкрдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХрд╛ рдШрдЯрдХ main.js рд╣реИ рдФрд░ рдЖрдкрдХрд╛ TS рдЙрдкрднреЛрдХреНрддрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЙрдард╛рдПрдЧрд╛ред

рддреЛ рдмрдВрдбрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдЬрд┐рд▓рд╛/

    declarationDirPath/
                  component1/
                        foo.js/
                              foo.js
                              foo.map.js
                        foo.d.ts
                   component2/
                        bar.js/
                               bar.js
                               bar.map.js
                        bar.d.ts
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

brandon-leapyear picture brandon-leapyear  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vwxyutarooo picture vwxyutarooo  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PavaniVaka picture PavaniVaka  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DrSensor picture DrSensor  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mikob picture mikob  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ