tsc - Hvordan får jeg TypeScript til å pakke en tredjepartsbibliotek fra node_modules?
Jeg ønsker at TypeScript-kompilatoren skal bruke node_modules/firebase/firebase.d.ts for å typekontrollere koden min og også pakke node_modules/firebase/firebase.js inn i noen av filene der jeg importerer ting fra Firebase. Jeg forstår at det finnes mange valg som kan gjøre dette for meg, men jeg ønsker å holde et minimalt utviklingsmiljø.
Jeg har satt "moduleResolution": "node" i min tsconfig.json, som importerer definisjonene og typekontrollerer koden min slik jeg ønsker. Jeg har også lagt til "isolatedModules": true i et forsøk på å pakke selve koden inn i hvert av målene mine, men den genererte koden pakker ikke firebase.js slik jeg ønsker. Finnes det en "module" kompilatoralternativ som kan gjøre dette for meg, eller bør jeg legge til noe annet?
Hvis jeg absolutt trenger et annet verktøy i utviklingsprosessen min, hva er det enkleste tillegget til tsc som vil pakke hver av mine JS-filer + deres avhengigheter inn i en enkelt js-filbundle?
Svar #1
tsc er en kompilator, ikke en bundler. Dette spørsmålet utdyper bundling litt.
Mens man utvikler i TypeScript, kan gulp + gulp-browserify gi en overvåker og bundler.
Med "module": "umd" i kompilatoralternativene, vil denne gulpfile.js gjøre resten:
var gulp = require('gulp');
var ts = require('gulp-typescript');
var browserify = require('gulp-browserify');
gulp.task('default', function () {
return gulp.src('src/*.ts')
.pipe(ts.createProject('tsconfig.json')())
.pipe(browserify())
.pipe(gulp.dest('dist/gen'));
});
gulp.task('watch', ['default'], function () {
gulp.watch('src/*.ts', ['default']);
});
