Rollup-plugin-typescript2: рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдкрд╛рде рдЙрд░реНрдл тАЛтАЛтАЛтАЛрд╕рдорд╛рдзрд╛рди рдХрд░реЗрдВ (d.ts)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЬрдире░ 2020  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ezolenko/rollup-plugin-typescript2

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрде рдЙрдкрдирд╛рдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрде рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдкрде рд╕рдВрдХрд▓реНрдк рдХреБрдЫ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рдХ (рдХрднреА) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рд░реЛрд▓рдЕрдк/рд╡реЗрдмрдкреИрдХ рдЬреИрд╕реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдбреЛрдореЗрди рд╣реИред

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

  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ: 3.7.4
  • рд░реЛрд▓рдЕрдк: рез.реирен.резрек
  • рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2: 0.25.3

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдВрдиреЗ ~/* рд╕реЗ ./src/* рдХреЛ рдЙрдкрдирд╛рдо рджрд┐рдпрд╛ рд╣реИред рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ред

https://github.com/alshdavid-sandbox/rollup-typescript-library

npm install && make
cat dist/a/index.d.ts | grep "~"

cat рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ

import { B } from '~/b';

рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрде рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

bug controversial enhancement help wanted

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

рд╣рд╛рдБ, рдореИрдВ рдЗрд╕реЗ ttsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЛ рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2 transformers рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ ttsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛

рдореЗрд░реА рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

import typescript from 'rollup-plugin-typescript2'

export default {
  input: `src/index.ts`,
  preserveModules: true,
  output: {
    format: 'esm',
    dir: './dist'
  },
  external: [],
  watch: {
    include: 'src/**',
  },
  plugins: [
    typescript({ 
      typescript: require('ttypescript'),
      tsconfigDefaults: {
        compilerOptions: {
          plugins: [
            { "transform": "typescript-transform-paths" },
            { "transform": "typescript-transform-paths", "afterDeclarations": true }
          ]
        }
      }
    }),
  ],
}

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдЗрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрдпрд╛рдд рдкрде рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдпрд╛рдд рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЪрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреАрдПрд╕ рдЭрдВрдбреЗ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрдереЛрдВ рдХреЛ "рдареАрдХ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдХрджрдо рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдПред

https://github.com/microsoft/TypeScript/issues/15479

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдкрд╛рд░реНрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдХреЛрдИ "рдкреЛрд╕реНрдЯ рдПрдорд┐рдЯ" рд╣реБрдХ рд╣реИ рдЬреЛ рд╡реЙрдЪ рдФрд░ рдмрд┐рд▓реНрдб рдореЛрдб рджреЛрдиреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░реВрдб рд╕рд░реНрдЪ/рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯреЗрдк рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

d.ts рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реАрдзреЗ рд░реЛрд▓рдЕрдк рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреА рд╣реИрдВ (рдЬрдм useTsconfigDeclarationDir: false рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рдЖрдк рдПрдХ рд░реЛрд▓рдЕрдк рдкреНрд▓рдЧрдЗрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рд╡реЗ рдЬрдм рдмрдВрдбрд▓ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рд┐рдЦрд╛ рд╣реИ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛ, рддреЛ рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ generateBundle рдХреЗ рдмрдЬрд╛рдп рд╣реБрдХ transform ред

рдЕрдЧрд░ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ rpt2 рдореЗрдВ рд╣реА рдкреНрд░реА-рд░рд╛рдЗрдЯ рд╣реБрдХ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рдПрдХ рд╡реЙрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ ttsc рдХреЗ рд╕рд╛рде typescript-transform-paths , рдирд┐рд░рд░реНрдердХ рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреА рддрд░рд╣ рд░реЛрд▓рдЕрдк рдЙрддреНрд╕рд░реНрдЬрд┐рдд ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рдж рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ...

рд╣рд╛рдБ, рдореИрдВ рдЗрд╕реЗ ttsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЛ рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2 transformers рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ ttsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛

рдореЗрд░реА рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

import typescript from 'rollup-plugin-typescript2'

export default {
  input: `src/index.ts`,
  preserveModules: true,
  output: {
    format: 'esm',
    dir: './dist'
  },
  external: [],
  watch: {
    include: 'src/**',
  },
  plugins: [
    typescript({ 
      typescript: require('ttypescript'),
      tsconfigDefaults: {
        compilerOptions: {
          plugins: [
            { "transform": "typescript-transform-paths" },
            { "transform": "typescript-transform-paths", "afterDeclarations": true }
          ]
        }
      }
    }),
  ],
}

рдзрдиреНрдпрд╡рд╛рдж рдЖрджрдореА @alshdavid ! рддреБрдордиреЗ рдореЗрд░реА рдЬрд╛рди рдмрдЪрд╛рдИ рд╣реИ! рдХрд▓ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ typescript-transform-paths рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛! рдзрдиреНрдпрд╡рд╛рдж

// webpack.config.js
module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        use: [
          {
            loader: require.resolve('ts-loader'),
            options: {
              compiler: 'ttypescript',
            },
          },
          {
            loader: require.resolve('react-docgen-typescript-loader'),
          },
        ],
        exclude: /(node_modules)/,
      },
    ],
  },
// tsconfig.json
compilerOptions: {
  "plugins": [
     { "transform": "typescript-transform-paths" },
     { "transform": "typescript-transform-paths", "afterDeclarations": true }
   ]
}

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрддреАрдд рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

UnhandledPromiseRejectionWarning: TypeError: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдкрд╛рда' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ

рдЕрдЧрд░ рдореИрдВ рдЙрдкрдирд╛рдо (рдФрд░ рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХрд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реИ?

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрддреАрдд рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

UnhandledPromiseRejectionWarning: TypeError: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдкрд╛рда' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ

рдЕрдЧрд░ рдореИрдВ рдЙрдкрдирд╛рдо (рдФрд░ рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХрд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрддреАрдд рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдм рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

UnhandledPromiseRejectionWarning: TypeError: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдкрд╛рда' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ

рдЕрдЧрд░ рдореИрдВ рдЙрдкрдирд╛рдо (рдФрд░ рдЗрди рдкреНрд▓рдЧрдЗрдиреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХрд╛ рдХреЛрдИ рдореБрджреНрджрд╛ рд╣реИ?

рдирдорд╕реНрддреЗ, рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдЬрд╛рд░реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ: рдореИрдВ Vue рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдПрдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ rollup.config.js рдлрд╝рд╛рдЗрд▓ рд╣реИ:

import path from "path";

import alias from "@rollup/plugin-alias";
import cleaner from "rollup-plugin-cleaner";
import css from "rollup-plugin-css-only";
import scss from "rollup-plugin-scss";
import typescript from "rollup-plugin-typescript2";
import vue from "rollup-plugin-vue";

export default [
  {
    input: "./src/index.ts",
    preserveModules: true,
    output: {
      format: "esm",
      dist: "./dist"
    },
    plugins: [
      cleaner({ targets: ["dist/"] }),
      alias({
        resolve: [".ts", ".vue"],
        entries: { "@/": path.resolve(__dirname, "./src/") }
      }),
      css({ output: "dist/bundle.css" }),
      scss(),
      typescript({
        typescript: require("ttypescript"),
        tsconfigDefaults: {
          compilerOptions: {
            plugins: [
              { transform: "typescript-transform-paths" },
              {
                transform: "typescript-transform-paths",
                afterDeclarations: true
              }
            ]
          }
        }
      }),
      vue({ css: false })
    ]
  }
];

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ttsc --emitDeclarationOnly рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ rollup --config рдПрдХ рдХреЗ рдмрд╛рдж рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд░реЛрд▓рдЕрдк рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди .vue.d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмреЗрд╢рдХ)ред

ttypescript рдФрд░ typescript-transofrm-paths рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛: рдирд┐рд░рд╛рд╢ред рдирд┐рд░реНрдорд╛рдг рдЪрд▓рд╛рддреЗ рд╕рдордп:

[!] (plugin rpt2) TypeError: Cannot read property 'text' of undefined

рд▓реЗрдХрд┐рди @zerollup/ts-transform-paths рдФрд░ ttypescript рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╕реЗрдЯрдЕрдк рд╣реИ: https://www.npmjs.com/package/@zerollup/ts -transform-paths#setup-for-rollup-plugin-typescript2

_рд░реЛрд▓рдЕрдк.config.js_

import ttypescript from 'ttypescript'
import tsPlugin from 'rollup-plugin-typescript2'

export default {
    input: 'src/lib.ts',
    output: [{ file : 'dist/lib.js', name : 'mylib', format : 'iife', sourcemap : true }],
    plugins: [
        tsPlugin({
            typescript: ttypescript
        })
    ]
}

_tsconfig.json_

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "my-lib/*": ["src/*"]
        },
        "plugins": [
            {
                "transform": "@zerollup/ts-transform-paths",
                "exclude": ["*"]
            }
        ]
    }
}

рд╡рд╛рд╣реН рднрдИ рд╡рд╛рд╣! рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдкрде рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреНрд▓рдЧрдЗрди рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ())ред рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреЗ рдмрд╛рдж tsc-alias рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ vue рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреА рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреЗ рдмрд╛рдж tsc-alias рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ vue рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреА рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

@mantlebee рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ tsconfig.json рд╕рд╛рде-рд╕рд╛рде рдЕрдкрдиреЗ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рд▓реЗрдХрд┐рди @zerollup/ts-transform-paths рдФрд░ ttypescript рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@luanorlandi рд░рдирдЯрд╛рдЗрдо рдкрд░ ts-transform-path рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рд╢рд╛рдпрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрд▓рдЕрдк рдХреЗ рдмрд╛рдж tsc-alias рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ vue рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреА рдкреАрдврд╝реА рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

@mantlebee рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ tsconfig.json рд╕рд╛рде-рд╕рд╛рде рдЕрдкрдиреЗ рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдг рд╣реИрдВ declaration , declarationDir рдФрд░ outDir

// tsconfig.json
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "declaration": true,
    "declarationDir": "dist/src",
    "baseUrl": ".",
    "outDir": "dist/src",
    "types": [
      "webpack-env",
      "jest"
    ],
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]
}

рд╕рд░рд▓ rollup.config.js рдлрд╝рд╛рдЗрд▓

import path from "path";

import alias from "@rollup/plugin-alias";
import cleaner from "rollup-plugin-cleaner";
import scss from "rollup-plugin-scss";
import typescript from "rollup-plugin-typescript2";
import vue from "rollup-plugin-vue";

export default [
  {
    input: "src/index.ts",
    output: {
      format: "esm",
      file: "dist/elegere-ui.js"
    },
    plugins: [
      cleaner({ targets: ["dist/"] }),
      alias({
        resolve: [".ts", ".vue"],
        entries: { "@/": path.resolve(__dirname, "src/") }
      }),
      scss(),
      typescript({
        useTsconfigDeclarationDir: true
      }),
      vue()
      //{ css: false }
    ]
  }
];

рдлрд┐рд░ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ prepublishOnly рдХрдорд╛рдВрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ (рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ)

"prepublishOnly": "npm run rollup && tsc-alias && npm run docs"

TSC-ALIAS dist/src рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░реЗрдЧрд╛; рдореИрдВ рд╕рдм рдХреБрдЫ рдЙрд╕рдХреЗ рдЕрдВрджрд░ рд░рдЦрдирд╛ рдЪреБрдирддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ ts-alias рдЙрдкрдирд╛рдореЛрдВ рдХреЛ src рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рдХреА рд╕реЛрдЪ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

рдЗрд╖реНрдЯрддрдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ @luanorlandi asap рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдВрдЪ

рдмреЗрд╢рдХ, dist/src рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рджреВрд╕рд░реЗ lib рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ jest

рд▓реЗрдХрд┐рди @zerollup/ts-transform-paths рдФрд░ ttypescript рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@luanorlandi рд░рдирдЯрд╛рдЗрдо рдкрд░ ts-transform-path рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рд╢рд╛рдпрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛, рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕рд┐рд░реНрдл рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдк рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ:

_...tsconfig baseUrl + рдкрде рдЙрд░реНрдл тАЛтАЛрдкреБрдирд░реНрд▓реЗрдЦрди рдмрдВрдбрд▓реЛрдВ рдФрд░ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВред рдЙрди рд╕рднреА рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдЬреЗрдПрд╕ рдФрд░ рдбреАрдЯреАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред_

https://www.npmjs.com/package/@zerollup/ts -transform-paths

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

eddow picture eddow  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

alexsasharegan picture alexsasharegan  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

HelloDennis picture HelloDennis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ