browserify を使用して、gulp を使用して再利用可能な typescript モジュールをブラウザーに移動しています。
gulp.task("default", function(){
return browserify({
basedir: '.',
debug: true,
require: ['./src/common/common.ts'],
fullPaths: false,
cache: {},
packageCache: {}
}).plugin(tsify)
.bundle()
.pipe(source('common.js'))
.pipe(gulp.dest("dist"));
});
驚いたことに、結果の common.js ファイルを次の方法で含める必要があります。
require("c:\\Users\\Luz\\Desktop\\tstest\\client\\src\\common\\common.ts");
タイプスクリプトまたはUMD + require JSを使用したビルドでは、まったく同じコードで問題なく相対パスを使用するファイルが必要です。browserify を追加すると、絶対パスが取得されます。自分で typescript をコンパイルして、tsify なしで browserify を使用しようとしましたが、それを含めるには常に絶対パスが必要です。common.js を必要とする他のすべてのモジュールはそれを見つけることができません。どうすればこれを修正できますか?
編集:htmlファイルでの例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script src="common.js"></script>
</head>
<body>
<script>
console.log("script started");
//works
var test = require("c:\\Users\\Luz\\Desktop\\tstest\\client\\src\\common\\common.ts");
test.printCommon();
//fails (all other modules will try to find it at this path)
var test2 = require("../common/common");
test2.printCommon();
</script>
</body>
</html>