2016-03-31 4 views
0

Typescriptでもっと多くのことをしようとしていて、いくつかのオンラインチュートリアルを読むと、ノード5.3.0がTypescriptをサポートすることを示します。私は最新のツールを使用しようとしており、BabelとGulpはTypescriptを使用してGulpfile.js(実際はgulpfile.babel.js)を作成しています。 Gulpでタスクを実行しようとすると、次のように表示されます。Typescriptを使って書かれたGulpfile - SyntaxError:予期しないトークンのインポート

import { PROJECT_ROOT, SERVER_SOURCE, appVersion } from 'Config'; 
^^^^^^ 
SyntaxError: Unexpected token import 

require()構文は機能しますが、私はTypescriptを使用しようとしています。私は各ファイルに'use strict';を持っています。

{ 
    "compilerOptions": { 
     "module": "commonjs", 
    } 
} 
tsconfig.json

gulpfile.babel.js

/** 
* 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)); 
    } 
} 

設定ファイルの共通変数/パスを一元化する

/** 
* 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; 
} 

タスクClean.ts

/** 
* 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を実行するとエラーが発生します。私がクリーン・タスクをコメントアウトすると、スクリプトは正しく実行されます。

I have checked this questionただし、ここでは適用されないようです。

ソフトウェアバージョン:ここで

node -v 
v5.9.1 

npm --version 
3.7.3 

gulp -v 
Requiring external module babel-register 
CLI version 1.2.1 
Local version 3.9.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) { 

タスクは、彼らはもちろん、実行することができます前にコンパイルする必要が活字体。実行時にタイプスクリプトの構文が理解できないため、.tsを読み込んで直接実行しようとすると動作しません。

代わりに、生成された.jsファイルを探しているか、またはTypeScript APIを使用して公開されているts.transpile関数を参照するか、他のGulpライブラリこのため)。これだけです

npm install --save ts-node

+0

SB-Admin-BS4-Angular-2プロジェクトは、ts-nodeを使用してすべてのTypescriptを使用しているようですが、それはさらに助けになりますが、モジュールを見つけることができないという不満があります。私がしなければならなかったのは、ts-nodeをインストールし、gulpfile.babel.jsをgulpfile.tsに変更するだけでした。私はtsノードがあなたが言及した透明感を扱っていると思います。たぶん、ビルドツールのためのまっすぐなjavascriptは行く方法かもしれません。 –

+0

この答えは間違っています.ts-nodeを使ってコンパイルせずにTypescriptを実行すると、Gulpはこれをそのまま実行できます。 – Bram

0

あなたがgulpfileの活字版を実行したい場合は、それはgulpfile.tsと呼ばれていますし、あなたはTS-ノードがインストールされていることを確認してください。

関連する問題