2017-11-15 30 views
0

webpack-bundlerを使用して1つのbundle.jsファイル内のフォルダにあるすべてのtsxファイルをコンパイルしようとしています。webpack-bundlerに関する問題

var glob = require('glob'); 
module.exports = { 
    entry: toObject(glob.sync('./src/editor/**/*.ts*')), 
    output: { 
     filename: "bundle.js", 
     path: __dirname + "/out", 
     library:'bundle', 
     libraryTarget:'var' 
    }, 

    // Enable sourcemaps for debugging webpack's output. 
    devtool: "source-map", 

    resolve: { 
     // Add '.ts' and '.tsx' as resolvable extensions. 
     extensions: [".ts", ".tsx", ".js", ".json"] 
    }, 

    module: { 
     rules: [ 
      // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'. 
      { test: /\.tsx?$/, loader: "awesome-typescript-loader" }, 

      // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'. 
      { enforce: "pre", test: /\.js$/, loader: "source-map-loader" } 
     ] 
    }, 

    // When importing a module whose path matches one of the following, just 
    // assume a corresponding global variable exists and use that instead. 
    // This is important because it allows us to avoid bundling all of our 
    // dependencies, which allows browsers to cache those libraries between builds. 

}; 
function toObject(paths) { 
    var ret = {}; 

    paths.forEach(function(path) { 
    // you can define entry names mapped to [name] here 
    ret[path.split('/').slice(-1)[0]] = path; 
    }); 

    return ret; 
} 

今私はそれをコンパイルしようとしていたときに、それは

として私にエラーを与えている「紛争:複数の資産が同じファイル名に放出し、[バンドル] 私webpack.config.jsこのようです.js " 各ファイルごとに同じエラーが発生しています。 ファイル自体は個別です。

誰かが私にそれを行う方法を教えてもらえますか?

+0

あなたは今、それは 'src'ディレクトリ –

答えて

0

複数のentryポイントがあるようですが、同じ名前のファイル(bundle.js)にコンパイルされているようです。交換してみてください。

output: { 
     filename: "bundle.js", 
     path: __dirname + "/out", 
     library:'bundle', 
     libraryTarget:'var' 
    } 

output: { 
     filename: "[name].js", 
     path: __dirname + "/out", 
     library:'bundle', 
     libraryTarget:'var' 
    } 

であなたの.tsファイルごとに別々の束を得ることができますこの方法。

OR

アプリのentryポイントの単一のファイル名を指定します。

entry: './src/editor/somefolder/app.ts', 
+0

であなたのファイル構造を共有する場合、それはより明確になります別の名前でディレクトリ全体をコンパイルしていますが、bundle.js.Isという名前の単一のファイルにバンドルしたいので、すべてのディレクトリを単一の.jsファイルにコンパイルすることができます –

+0

あなたのアプリケーションの名前を渡す必要がありますエントリポイントスクリプトを 'entry'プロパティに追加します。その後、このファイルは、このファイルが参照するすべての依存関係を処理します。 –

+0

すべてのファイルは独立しており、必要なファイルはすべてインポートされており、他のすべてのファイルにアクセスすることができるファイルはありません。しかし、今はそれらを1つのfile.Isで出力にまとめたいのですか? –