2017-01-20 14 views
2

webpackを使用してファイルをインポートしようとしていますが、私は正常です。Webpack:グローバル名前空間に機能を持ち、利用可能なファイルをインポートしますか?

import "../../lib/SampleFunctions.js";このサンプル関数内

がグローバル名前空間i..e

function CreateItem() 
{ 

}; 

function CreaturePack(inside) 
{ 

}; 

// constructor 
CreaturePack.prototype = Object.create(CreateItem.prototype); 

上で直接作成された多数の機能がありますが、問題はCreatePackまたはCreateItemは、グローバル名前空間では利用できないということです。

私は、私が公開したプラグインを使用してこの問題を解決することができthouhgt多分私はそれが間違って使用しています..しかし、私は

 {test: /SampleFunctions\.js$/, loader: 'expose?CreaturePack'}, 

次私は今CreateItemについてCreaturePackが、その空のオブジェクトと何を持っていましたか?

少し狂っている人は、誰でもこれを行う方法を知っています。私はインポート ".....ファイル"を使用することができますが、グローバルスコープで作成されたオブジェクトを持っていたい。 SomeFunctionsはサンプルであり、実際のファイルは非常に複雑なので、ES6モジュールを使用するようリファクタリングすることはできません。

グローバルネームスペース内にすべてを配置するローダーが他にもありますか?

私はそれを使用するいくつかのファイルを持っており、グローバル名前空間上でこれらの機能を期待しています。

+0

['expose-members-loader'](https://github.com/davidpelayo/expose-members-loader)を見ましたか? – CodingIntrigue

+0

私はあなたに「ES6モジュールを使用するようにリファクタリングすることはできない」と懐疑的です。関数をグローバル名前空間に入れたいのであれば、その名前に名前があることを意味し、名前がある場合は、それぞれの前に 'export'を置くことができます。あなたには何百もの機能がありますが、それは多くの仕事ではありません。私は何が欠けていますか? –

答えて

1

代わりのexpose-loaderを使用して、あなたはexports-loaderを使用する必要があります。

+0

*私はそれを使用する他のファイルをいくつか持っており、これらの関数はグローバル名前空間で期待されます*。 OPのようなサウンドはCommonJsを使う他のファイルをリファクタリングするのではなく、関数をグローバルにすることを望んでいる – CodingIntrigue

+1

この場合、['script-loader'](https://webpack.js.org/guides/shimming/#script-ローダー)に興味があるかもしれません。 webpackの[shimming](https://webpack.js.org/guides/shimming/)ガイドには、非モジュールで作業するためのさまざまなオプションと用途が記述されています。 – simon04

+0

はい、ありがとうございました!スクリプトローダーの使用 – Martin

0

@Martin:あなたの要求が正しく理解されていれば、 あなたのプロジェクトにはいくつかのグローバルオブジェクトを持たせたいと思っています。それは、Server_Name、Versionなどで構成されています。

もしそうなら、その共通モジュールをWebpack.config.jsの一番上にインポートして、それをいくつかのローカルオブジェクトに割り当て、それをの外部 Webpackのオブジェクトに入れることができます。

var CommonModule = require('./config'); 

module.exports = { 
........ 
    externals: { 
     'appConfig': JSON.stringify(CommonModule) 
    } 
........ 
} 

次に、さまざまなモジュール間でGLOBALを直接インポートできます。

import appConfig from 'appConfig'; 
関連する問題