Hur man får SystemJS att transpilera 'typescript' baserat på filändelse och inte innehåll
Jag har denna SystemJS-konfiguration i index.html:
<body>
<script src="node_modules/systemjs/dist/system.js"></script>
<script>
System.config({
defaultJSExtensions: true,
transpiler: 'typescript',
map: {
typescript: 'node_modules/typescript/lib/typescript.js'
},
packages: {
"ts": {
"defaultExtension": "ts"
}
},
});
System.import('ts/main');
</script>
</body>
main.ts:
let a = [1, 2, 3];
let b = [1, 2, 3];
Jag får: Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode. Det ser ut som om filen inte transpileras av SystemJS.
När jag lägger till import-satsen på första raden fungerar det perfekt:
import * as ts from 'typescript'; // or any other package
let a = [1, 2, 3];
let b = [1, 2, 3];
Det ser ut som att SystemJS känner igen TypeScript-fil genom "innehåll" - är det korrekt? Om ja, hur tvingar man det att transpileras varje .ts eller src/-fil?
Svar #1
Som du misstänkte, gissar systemjs vilken syntax du använder i din fil. Du kan hjälpa systemjs genom att lägga till
// maybe you need to use " format:'register' " instead
System.config({
meta: {
'*.ts': {
format: 'es6'
}
}
});
mer info modulformat
Svar #2
Jag skrev ett modul för att hjälpa till med hantering av flera filtillägg med SystemJS: https://www.npmjs.com/package/one-plugin
