1

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>
4

1 に答える 1

1

問題の根本を見つけることができませんでしたが、うまくいく解決策を見つけました:

var brofy = browserify({
                        basedir: '.',
                        debug: true
                    });
    brofy.plugin(tsify);
    brofy.require("./src/common/common.ts", { expose: "../common/common" });
    brofy.bundle()
    .pipe(source('common.js'))
    .pipe(gulp.dest("dist"));

プロパティ公開により、 require("../common/common") が正しいモジュールにつながり、絶対パスを回避し、typescript で使用するのと同じパスを使用できるようになります。

他のバンドルは、「brofy.external("../common/common");」を使用してバンドルを参照できます。browserifyにそれを独自のバンドルに含めず、requireを使用して見つけるように指示します。

編集:誰かがより良い解決策を考え出すことをまだ望んでいます.

于 2016-08-11T22:41:45.477 に答える