使用Typescript编写的Gulpfile - SyntaxError:意外的令牌导入

时间:2016-03-31 16:41:15

标签: typescript gulp

我正在尝试使用Typescript做更多事情,并阅读一些在线教程,表明Node 5.3.0将支持Typescript。我正在尝试使用最新的工具,而Babel和Gulp使用Typescript编写我的Gulpfile.js(实际上是gulpfile.babel.js)。我得到了:

<script>
  var market = "arizona"; 
  var marketNumbers = {
  "arizona" : "800 555-1234|866 452-8569", 
  "florida" : "800 555-4567|866 452-9999"
  };

  for (market in marketNumbers) { 
    var tmp = marketNumbers[market].split('|');
    alert(tmp(0));
  };
</script>

尝试使用Gulp运行任务时。虽然require()语法确实有效,但我试图一直使用Typescript,并且我认为它会起作用。我在每个文件中都有import { PROJECT_ROOT, SERVER_SOURCE, appVersion } from 'Config'; ^^^^^^ SyntaxError: Unexpected token import

gulpfile.babel.js

'use strict';

用于集中公共变量/路径的配置文件

/**
 * GulpFile.Babel.js
 * Configuration and Control file for the Gulp Task Runner
 */
'use strict';

var GulpTaskRunner  = require('gulp');
var PlugIns         = require('gulp-load-plugins')();
var TaskList        = require('gulp-task-listing');     // Help Screen of Tasks

GulpTaskRunner.task('default', TaskList);
GulpTaskRunner.task('clean', GetGulpTask('Clean'));


// Gulp Task Loader
function GetGulpTask(Task) {
    var FileSystem = require('fs');
    try {
        var TaskFile = './GulpTasks/Task-' + Task + '.ts';
        FileSystem.access(TaskFile, FileSystem.F_OK, function(err) {
            if (!err) {
                return require(TaskFile)(GulpTaskRunner, PlugIns);return require(TaskFile)(GulpTaskRunner, PlugIns);
            } else {
                PlugIns.util.log(PlugIns.util.colors.red.bold(TaskFile + ' not found'));
            }
        });

    } catch (e) {
        PlugIns.util.log(TaskFile + ' ' + PlugIns.util.colors.red.bold(e));
    }
}

任务-Clean.ts

/**
 * config.ts
 * Gulp configuration file for the project written in Typescript
 */
'use strict';

import {normalize, join} from 'path';

export const PROJECT_ROOT       = normalize(join(__dirname, '..'));
export const SERVER_SOURCE      = normalize(join(PROJECT_ROOT, 'server', 'src'));

function appVersion(): number|string {
    var pkg = JSON.parse(readFileSync('package.json').toString());
    return pkg.version;
}

tsconfig.json

/**
 * Task-Clean.ts
 * Clean process to clean the project and prepare to build the source code
 */
'use strict';

import {PROJECT_ROOT, SERVER_SOURCE, appVersion} from 'Config';
console.log('Clean Process ' + SERVER_SOURCE + ' - V.' + appVersion());

当我运行gulp时,我收到错误。如果我注释掉Clean任务,那么脚本将正常运行。

I have checked this question 但似乎并不适用于此。

软件版本:

{
    "compilerOptions": {
        "module": "commonjs",
    }
}

2 个答案:

答案 0 :(得分:0)

下面:

// Gulp Task Loader
function GetGulpTask(Task) {
    var FileSystem = require('fs');
    try {
        var TaskFile = './GulpTasks/Task-' + Task + '.ts';
        FileSystem.access(TaskFile, FileSystem.F_OK, function(err) {
            if (!err) {

当然,必须先编译TypeScript任务,然后才能运行它们。加载.ts并尝试直接运行它是行不通的,因为运行时不理解TypeScript语法。

您应该正在寻找生成的.js文件,或者使用TypeScript转换函数来执行TS - &gt;即时JS翻译(请参阅TypeScript API公开的ts.transpile函数,或者为此可能使用其他一些Gulp库。)

答案 1 :(得分:0)

如果您想运行 gulpfile Typescript 版本,请确保它名为 gulpfile.ts ,并且您拥有{{1安装:

ts-node

这就是它的全部。