рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрде рдЙрдкрдирд╛рдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрде рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдВрдиреЗ ~/*
рд╕реЗ ./src/*
рдХреЛ рдЙрдкрдирд╛рдо рджрд┐рдпрд╛ рд╣реИред рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ред
https://github.com/alshdavid-sandbox/rollup-typescript-library
npm install && make
cat dist/a/index.d.ts | grep "~"
cat
рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ
import { B } from '~/b';
рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрде рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдЗрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрдпрд╛рдд рдкрде рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдпрд╛рдд рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЪрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреАрдПрд╕ рдЭрдВрдбреЗ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрдереЛрдВ рдХреЛ "рдареАрдХ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдХрджрдо рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдПред
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
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рдБ, рдореИрдВ рдЗрд╕реЗ ttsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЛ рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2
transformers
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗttsc
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛рдореЗрд░реА рд░реЛрд▓рдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ: