2016-07-09 13 views
0

typescript、babel、webpackとの互換性の問題により、export default class Test {}ではなくexport class Test {}の構文を使用する必要があります。これは私の問題をすべてtypescriptで解決しますが、webpackはオブジェクトのすべての名前空間を代用します。Webpack namespacing es6 modules

webpackでumdを生成し、requirejs経由でインクルードをテストしています。

しかし、関数を直接渡すのではなく、代わりにプロパティを持つオブジェクトを取得しています。これは私の本当のアプリでは飛ばない。

{ 
    Test: function Test() {} 
} 

webpack.config.js:

module.exports = { 
    entry: './test.js', 
    output: { 
     filename: 'a.js', 
     libraryTarget: 'umd' 
    }, 
    module: { 
     loaders: [{ 
      test: /\.js$/, loader: 'babel-loader' 
     }] 
    } 
}; 

が.babelrc:

{ 
    "presets": ["es2015"] 
} 

答えて

0

私は私が正しく理解してきたかどうかわからないんだけど、多くの実験の後、私はクリーンを見つけましたTypeScriptでモジュールを使用する方法は、ソースファイルで単にES6構文を使用することです。

このようにして、ソースファイルは出力モジュール形式には影響を受けません。

// src/widgets/FooWidget.ts 
export class FooWidget {} 

// src/widgets/BarWidget.ts 
export class BarWidget {} 

// src/widgets/index.ts 
export * from './FooWidget'; 
export * from './BarWidget'; 

// src/index.ts 
import * as widgets from './widgets'; 
import * as badgers from './badgers'; 
export { 
    widgets, 
    badgers 
}; 
:大きなライブラリーのために

は、それがモジュールをエクスポートするときに大きな柔軟性を与えるであろう、あなたの「名前空間」のそれぞれのルートでindex.tsを維持することが可能です

関連する問題