1 | var path = require('path');
|
2 |
|
3 | var createTypeScriptPreprocessor = function(args, config, logger, helper) {
|
4 | config = config || {};
|
5 |
|
6 | var log = logger.create('preprocessor.typescript');
|
7 | var defaultOptions = {};
|
8 |
|
9 | var transformPath = args.transformPath || config.transformPath || function(filepath) {
|
10 | return filepath.replace(/\.ts$/, '.js');
|
11 | };
|
12 |
|
13 |
|
14 | var options = helper.merge(defaultOptions, args.options || {}, config.options || {});
|
15 | var ts = config.typescript || require('typescript');
|
16 |
|
17 | return function(content, file, done) {
|
18 | log.debug('Processing "%s".', file.originalPath);
|
19 | file.path = transformPath(file.originalPath);
|
20 |
|
21 | try {
|
22 | var output = ts.transpileModule(content, {
|
23 | compilerOptions: options,
|
24 | fileName: path.relative(process.cwd(), file.originalPath),
|
25 | });
|
26 | done(null, output.outputText);
|
27 | } catch(e) {
|
28 | log.error('%s\n at %s\n%s', e.message, file.originalPath, e.stack);
|
29 | return done(e, null);
|
30 | }
|
31 | };
|
32 | };
|
33 |
|
34 | createTypeScriptPreprocessor.$inject = ['args', 'config.typescriptPreprocessor', 'logger', 'helper'];
|
35 |
|
36 |
|
37 | module.exports = {
|
38 | 'preprocessor:typescript': ['factory', createTypeScriptPreprocessor]
|
39 | };
|