2016-08-26 3 views
-1

単純なTypescriptプロジェクトを持つ私はTSファイルから個々のJSファイルを作成するためにGulpを使用しています(私は別々のままにする複数のHTMLファイルを持っています。Typescript - リリースコードのサードパーティコードを含む

<script src="./js/myTSfileTranspiledToJS.js"></script> 

はTSファイルには、jQueryのようサードパーティのコードベースへの参照を持っていたと言うことができます -

var tsResult = gulp.src('./src/ts/**/*.ts') 
    .pipe(ts(tsProject)); 

return merge([ // Merge the two output streams, so this task is finished when the IO of both operations are done. 
    tsResult.dts.pipe(gulp.dest('release/definitions')), 
    tsResult.js.pipe(gulp.dest('release/js')) 
]); 

だから私のHTMLの内側に私のようなものがあるでしょう。コードはビルドされ、エラーなく正常にデプロイされますが、jQueryを含むTS/JSのメソッドを呼び出すと失敗します。 実行時にjQueryコードがないためです。

今、私はスクリプトタグを使用してjQueryのコードを含めることができます -

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

が、私はむしろないと思います。蒸留されたJSファイルに第三者コードを組み込む方法はありますか?

EDIT

明確にする - 私はそれらのJSファイルが別々にロードする必要がなく、それらに同梱されなければならないに依存し、いくつかのJSファイルや何かを生成活字体のプロジェクトを持っていますよ。 A.jsにB.jsが必要な場合は、ビルドにそれを見て、A.jsにB.jsを含めて、B.jsをいくつかのhtmlファイルに追加してくれます。 以下の回答が示唆しているように - Broswerifyしかし、私はまだ私のセットアップでそれを考え出していない。

+0

ダウン投票の場合 - 理由を挙げてください。必要に応じて私がQをより明確にすることができるかどうかを見てください。 – delp

答えて

0

答えにHTML

<script src="./js/site.min.js"></script> 

で亭

bower install --save jquery  

でjqueryのをインストールします。私の質問にはwebpackを使用することです。下のリンクは明確な例です。 Typescriptプロジェクトを作成し、ここにjQueryなどの第三者図書館を追加する方法 - http://www.jbrantly.com/typescript-and-webpack/

これはtsd.json設定で動作するという欠点があります。これは現在、typings.jsonの使用を推奨しています。

まだ別のものにつながっても、この質問に答えます。

1

あなただけではJavaScriptを使用して、ドキュメントにスクリプトタグを追加here、のような何かを行うことができます:

<script type="text/javascript"> 
document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>"); 
</script> 

もう一つの方法は、BrowserifyまたはRequireJSを使用することです。しかし、はあなたのプロジェクトに含まれているライセンスのを常にチェックしなければなりません。 コードブロックを開始し、一方で、その中に

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 

が含まれ、そしてそれは、私はできるだけ多くの人が自分でもjQueryのを使用することをお勧めしたいものです取得を提供するために、何も異常ではありません彼らのJSプロジェクトで。 (亭とjqueryのに引っ張ら)ゴクゴクでmainbowerfilesを使用して

+0

あなたの最初の選択肢は、私が避けようとしているスクリプトを追加/結合することです。私が使用している場所でホストされていない第三者コードが同じモジュラー形式であるため、jQueryを例として使用しています。そのため、すべての知識をベースにしています。 私は第一の選択肢(私はすでにそれをやっています)を割り引いています。第二の選択肢 - 私が探しているブラウザです。それは可能性がありますが、これまでのすべての試みがうまくいかなかったようには分かりません。 – delp

+0

バンドル後にbrowserifyの設定やjQueryの使用に関する問題がありますか? – maprambo

+0

そのブラウジング - 私は思う。 Browserifyの使い方は、(パッケージ化されたファイルのように)1つのファイルにすべてバンドルするときのように、私が必要とするものだと考えてください。パッケージ化されたコードで使用するlibのバージョンは、パッケージ化されたコードを使用していないバージョンで使用されます。 – delp

0

あなたの一気ファイル

var gulp = require('gulp'), 
    uglify = require("gulp-uglify"), //uglify 
    filter = require("gulp-filter"), //filters 
    concat = require("gulp-concat"), //concat files 
    mainBowerFiles = require('main-bower-files'); //auto get bower modules 
var paths = {}; 
paths.jsSource = mainBowerFiles().concat(["js/myTSfileTranspiledToJS.js"]); 
paths.baseReleaseFolder = "js"; 
paths.baseJSReleaseFile = "site.min.js"; 
gulp.task("min:js", function() { 
    var jsFilter = filter('**/*.js', { restore: true }); 
    return gulp 
     .src(paths.jsSource) 
     .pipe(jsFilter) 
     .pipe(sourcemaps.init({loadMaps:true})) 
     .pipe(uglify()) 
     .pipe(concat(paths.baseReleaseFolder + "/" + paths.baseJSReleaseFile)) 
     .pipe(sourcemaps.write(".")) 
     .pipe(gulp.dest(".")) 
     .pipe(jsFilter.restore); 
    }); 
+0

私はできますそれがどのように機能するかを見てみましょう。しかし理想的な解決策ではありません。その別のステップ(バウアー)とあなたはまだHTMLページにそのjsの参照を追加する必要があります。 理想的な解決策には、すでにjQuery node_module&がタイピングフォルダに含まれている私のTSプロジェクトを見るいくつかの設定が含まれます - その2つのポイントの間にバンドルできると思います。 – delp

+0

npmでjqueryがインストールされている場合(これは明記されていません)、すでにbowerの手順をスキップしてmainbowerfiles経由でロードする代わりにnode_modulesからファイルをインクルードします。ファイルの代わりにグロブ内のCDNを使用することもできます。 –

+0

gulp - > https://www.npmjs.com/package/gulp-cdnizerでcdnsを使用する方法についてはこちらをご覧ください。 –

関連する問題