javascript - Behåll ursprungliga TypeScript-källkartor efter att ha använt Browserify


Bakgrund: Jag kompilerar 2 beroende TypeScript-filer till js, vilket också producerar källkartor (en källkarta per fil) med tsc 1.0

Jag använder -m commonjs och använder sedan browserify för att generera en enda bundle.js

Jag märkte dock att jag får de ursprungliga källkartsreferenserna två gånger i paketet, vilket inte verkar fungera.

Att skicka --debug verkar inte heller lösa problemet.

Jag hade en känsla av att detta problem: https://github.com/substack/node-browserify/issues/325 är på något sätt relaterat, men jag kunde inte lista ut hur problemet blev löst.

Också https://github.com/substack/browser-pack föreslogs, men jag förstår fortfarande inte helt hur man använder det, är det en ersättning för browserify?

Bottom line, jag skulle vilja slå ihop de 2 js-filerna men 'slå ihop' js till ts source maps med hjälp av browserify. Är det möjligt?

Svar #1

tsify är ett browserify-plugin som är bättre och ersätter t.ex. typescriptifier.

npm install tsify browserify watchify

Du använder tsify så här:

browserify src/index.ts -p tsify --debug -o build/index.js

Observera att detta stöder browserify --debug-omkopplaren, inga extra tricks behövs. Så du kan också använda det med watchify på detta sätt:

watchify src/index.ts -p tsify --debug -o build/index.js

Svar #2

Genom att använda minifyify-pluginet för Browserify tror jag att du kan använda TypeScript med Browserify och behålla källkartorna. Efter att ha kompilerat TypeScript-filerna bör du kunna skicka in "entry"-filen (den som importerar den andra via commonjs-syntax) genom Browserify med minifyify-pluginet.

var browserify = require('browserify'),
    bundler = new browserify();

bundler.add('entry.js');
bundler.plugin('minifyify', {map: 'bundle.js.map'});
bundler.bundle({debug: true}, function (err, src, map) {
  if (err) console.log(err);
  fs.writeFileSync('bundle.js', src);
  fs.writeFileSync('bundle.js.map', map);
});

Relaterade artiklar