2016-12-20 4 views
1

私はjsファイルとtsファイルの両方を持っているプロジェクトで作業しています。それらは1つのバンドルファイルにマージされるはずです。javascriptとtypescriptを1つのバンドルにコンパイルするにはどうすればよいですか?

私は一口-typescriptですし、私の設定を使用していますが、以下のようになります。

  gulp.src(cfg.ts_src) 
        .pipe(sourcemaps.init()) 
        .pipe(typescript({ 
         allowJs: true, 
         declaration: false, 
         diagnostics: false, 
         emitDecoratorMetadata: true, 
         experimentalDecorators: true, 
         module: "system", 
         moduleResolution: "classic", 
         noImplicitAny: true, 
         outFile: "./" + cfg.file, 
         preserveConstEnums: true, 
         pretty: true, 
         removeComments: true, 
         rootDir: "./static/" + cfg.dest, 
         target: "es5", 
        })) 
       .pipe(sourcemaps.write('.', { sourceRoot: "/static/", includeContent: false })) 

私が持っている問題はconfigutationが唯一のjsファイルが含まれている場合、それは、コードのバンドルを作成することです。しかし、設定にjsファイルとtsファイルの両方がある場合、typescriptはjavascriptファイルを無視し、tsファイルのみをコンパイルします。

jsファイルとtsファイルの両方のコードを含むバンドルを作成できますが、tsファイルのソースマップも引き続き使用できますか?

+0

まず、すべてのTSファイルをコンパイルしてtemp dirに入れて、すべてのファイルを他のすべてのjsファイルにバンドルしてください。 –

+0

その後、私はまだtypescriptソースマップを持っていますか? – gemrey

+0

すべてのファイルを使って最後のディレクトリにコピーしてください –

答えて

0

まず、すべてのTSファイルをコンパイルしてtemp dirに入れて、すべてのファイルを他のすべてのJSファイルとバンドルしてください。 また、すべてのソースマップファイルを最終ディレクトリにコピーします。

+1

それはうまくいきましたか、時にはそれを行う最も簡単な方法が最高です! – gemrey

0

古いバージョンのgulp-typescriptを使用しているようです。たぶんこれは問題ですか?

gulp.task('build.js.dev',() => 
{ 
    var tsProject = ts.createProject('tsconfig.json', { 
     typescript: require('typescript') 
    }); 

    var tsResult = tsProject.src() 
     .pipe(sourcemaps.init()) 
     .pipe(tsProject()); 

    return merge([ 
     //Write definitions 
     //tsResult.dts.pipe(gulp.dest(TEMP_TARGET_FOLDER)), 
     //Write compiled js 
     tsResult.js.pipe(sourcemaps.write(
      ".", 
      { 
       includeContent: true, 
       sourceRoot: __dirname + "/dist" 
      })).pipe(gulp.dest(TEMP_TARGET_FOLDER))]); 
}); 

注パーツ:あなたはより多くのサンプルのためにゴクゴク-typescriptですドキュメントを参照することができますtsResult.js.pipe(sourcemaps.write(

以下は、私の作品とコンパイルTS +地図や任意の生JSの両方を発するタスクがあります。

のTSconfigはあなたのオプションにかなり似ています

{ 
"compilerOptions": { 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "moduleResolution": "node", 
    "module": "commonjs", 
    "target": "es6", 
    "sourceMap": true, 
    "outDir": "dist", 
    "declaration": false, 
    "allowJs": true, 
    "jsx": "react", 
    "forceConsistentCasingInFileNames": true, 
    "types": [ 
     "node", 
     "jasmine" 
    ] 
}, 
"exclude": [ 
    "./node_modules", 
    "./dist", 
    "./.vscode" 
] 
} 

は、この情報がお役に立てば幸いです。

+0

私は最新の、しかしそれを構成する古い方法を使用しています。 私はそれを1つのファイルにコンパイルしようとしています - あなたのものは私が見るものではありません。しかし、私は今それを解決しました。 – gemrey

関連する問題