2016-08-16 12 views
0

私はWebパックアプリケーションを持っており、複数のファイルを単一のjavascriptファイルではなくビルドしたいと考えています。例えば私がそのようなフォルダ構造を持っている場合webpackを複数のファイルに構築する

components 
1.js 
2.js 
actions 
1.js. 
2.js 

私のwebpackビルドは同じフォルダ構造のファイルをコンパイルする必要があります。どのようにそれを達成することができますか?

私はバベルのCLIを試してみました:

babel ./src --out-dir ./lib --source-maps --presets es2015,react --plugins babel-plugin-add-module-exports,babel-plugin-transform-decorators-legacy,babel-plugin-transform-class-properties --watch 

私が望んでいたが、それはWebPACKのの解決については何も知らないので、エラー

を得ることがモジュール

を解決できませんとしてそれは、ファイルを出力します。

提案がありますか?

+0

タグの説明をお読みください! *「Webベースのアプリケーションに重点を置いたPython国際化ライブラリ、JavaScriptライブラリに関する質問は、[babeljs]を使用してください。」* –

+0

Oops私の悪い.... – user525717

答えて

1

複数のファイルを出力するようにWebpackを取得することは可能ですが、制限があります。まず、これがどのように機能するかを理解することが重要です。 Webpackは実際には、必要に応じてコード「チャンク」を読み込むことができるランタイムスクリプトを提供しています。これは大規模アプリケーションにとって重要なので、ユーザーはホームページを見るだけでアプリケーション全体のJavaScriptをダウンロードする必要はありません。しかしwebpackは、これらのチャンクと、実行時にそれらを正しくロードできるようにビルド時に名前が付けられているものを追跡する必要があります。そのため、この機能を有効にするのには、独自のファイル命名規則があります。詳細はこちらhttps://webpack.github.io/docs/code-splitting.htmlをご覧ください。したがって、あなたはすべてのデープをrequire.ensureすることができますが、webpackのランタイムはそのような場合にそれらを見つけることができないので、彼らはあなたが記述したように名前は付けられません。

もう一つ重要な点は、webpackはバンドラなので、ファイルをバンドルすることです。基本的には、ファイルをバンドルしたくないと言っています。その場合、おそらくrequire.jsを使用して調べるべきです。多くの人々はWepbackやBrowserifyなどのバンドル業者に移行してきました。通常、ほとんどのモジュールを個別にダウンロードするのは効率的ではありません。しかし、すべてのアプリは異なっているので、実際にバンドルしないのがよい理由があるかもしれません。

実際にいくつかのバンドルを行いたいが、それがどのように行われているかを最適化したいのであれば、私もそれを手助けすることができ、webpackは確かにそのための素晴らしいツールです。しかし、私はあなたのユースケースを理解して、最善のアドバイスを与える必要があります。

+0

返事のためのベン、ありがとう、私はちょうど 'my-module/components'からのインポート{ログイン}を達成しようとしています。私は私のWebpack Webアプリケーションに含まれるwebpackを使ってモジュールを書いていますが、そのようなimportをしたいのですが、今は 'my-module'からimport {components}を持っていて、このcomponentsのようなLoginにアクセスできます。何かアドバイス? – user525717

+0

実際にes6インポート構文で少し問題があるようですが、webpackはあなたのニーズに合ったものになります。あなたは私のモジュール/コンポーネントのために持っているフォルダ構造を送ることができますか? my-moduleフォルダーにcomponents.js(x)という名前のファイルが必要です。このようなエクスポートは、 'export class Login ...'のようになります。あなたが実際にやってみたいことは、login.jsxと呼ばれるログインのためのコンポーネントフォルダに別のファイルがあるようです。その場合、Login.jsxのshoudには、(Loginがコンポーネントであると仮定して)一番下に 'export default Login;'があります。 –

+0

ログインした場合。jsxはそれ自身のファイルで、 'export default'を実行していますので、次のようにtiをインポートする必要があります:' my-modules/components/Login 'からのログインログイン '; –

関連する問題