webpack - Generer TypeScript-definisjonsfiler ved å bruke rollup
Jeg prøver Rollup.js for å bygge mitt TypeScript-prosjekt, men jeg vet ikke hvordan jeg skal generere definisjonsfilene og hvordan jeg automatisk kan inkludere dem i dist-filene.
Ville noen vite hvordan man gjør det?
Her er min rollup.config.js
import typescript from "rollup-plugin-typescript";
import handlebars from "rollup-plugin-handlebars";
import babel from 'rollup-plugin-babel';
export default {
entry: 'src/generator.ts',
format: 'cjs',
plugins: [
typescript(),
handlebars(),
babel()
],
dest: 'dist/bundle.js'
};
Jeg bruker standard ts-konfigurasjon, men det er det samme med declaration=true.
rediger :
Prøver også å bruke Webpack :
module.exports = {
context: __dirname + '/src',
entry: {
index: './generator'
},
output: {
path: __dirname + '/build',
publicPath: '/',
filename: 'generator.js'
},
resolve: {
root: __dirname,
extensions: ['', '.ts', '.js']
},
module: {
loaders: [
{ test: /\.ts$/, loaders: ['ts-loader'], exclude: /node_modules/ },
{ test: /\.hbs/, loaders: ['handlebars-loader'], exclude: /node_modules/ }
]
}
}
Tsconfig :
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "build"
},
"exclude": [
"node_modules",
"dist",
"build"
]
}
Den genererte d.ts ser slik ut :
import { ExportPageModel } from './models/page-model';
export declare type ExportType = 'text' | 'html';
export * from './models/page-model';
export declare namespace Generator {
function generateHtml(page: ExportPageModel): string;
function generateText(page: ExportPageModel): string;
}
Men i appen min som bruker den pakken, kan den ikke finne Generatoren...
import { ExportPageModel, Generator } from 'emlb-generator';
Generator er udefinert, men autfullføringen fungerer fint, så jeg kan ikke finne hvor problemet er :(
Generator.generateHtml({
...
});
Svar #1
For å utføre denne oppgaven skal du legge til instruksjoner i rollup.config.js, tsconfig.json og package.json
Vurderer Rollup-versjon ^0.62.0":
1 - Legg til bibliotek av rollup-plugin-typescript2:
npm i rollup-plugin-typescript2
2 - Importer biblioteket inne i rollup.config.js
import typescript fra 'rollup-plugin-typescript2'
3 - Inkluder TypeScript-pluginen inne i plugin-blokken
Merknader: JS-en nedenfor er bare et eksempel, så jeg fjernet andre instruksjoner kun for å gjøre eksemplet renere...
import typescript from 'rollup-plugin-typescript2'
export default {
input: 'src/index.tsx',
output: [
{
file: pkg.main,
format: 'cjs',
exports: 'named',
sourcemap: true
},
{
file: pkg.module,
format: 'es',
exports: 'named',
sourcemap: true
}
],
plugins: [
typescript({
rollupCommonJSResolveHack: false,
clean: true,
})
]
}
4 - Legg til declaration-instruksjonen i compilerOptions i tsconfig.json
Notater: Jeg fjernet annen instruksjon bare for å gjøre eksemplet renere...
Eksempel :
{
"compilerOptions": {
"declaration": true,
},
"include": ["src"],
"exclude": ["node_modules", "build", "dist", "example", "rollup.config.js"]
}
5 - inkludere main og module instruksjonene inne i package.json for å informere hvor utdataene vil være.
Og til slutt, inkluder rollup -c-instruksjonen inne i script i package.json, eksempel:
{
"name": "example",
"version": "0.1.6",
"description": "Testing",
"author": "Example",
"license": "AGPL-3.0-or-later",
"main": "dist/index.js",
"module": "dist/index.es.js",
"jsnext:main": "dist/index.es.js",
"scripts": {
"build": "rollup -c",
"start": "rollup -c -w"
},
"files": [
"dist"
]
}
