私はこれが古い投稿であることを知っていますが、webpackスクリプトローダーがこの場合にも役立つ可能性があることを言及することは有用だと思いました。webpackドキュメントから:
「スクリプト:JavaScriptファイルをグローバルコンテキストで1回実行します(スクリプトタグのように)。requiresは解析されません。」
http://webpack.github.io/docs/list-of-loaders.html
https://github.com/webpack/script-loader
これは、JSベンダーファイルとアプリファイルを連結する古いビルドプロセスを移行するときに特に便利です。警告の言葉は、スクリプトローダーはオーバーロードrequire()
を介してのみ機能するようであり、webpack.configファイル内で指定されていることで私が知る限りは機能しないということです。オーバーロードrequire
は悪い習慣であると多くの人が主張していますが、ベンダーとアプリのスクリプトを1つのバンドルにまとめると同時に、追加のWebpackバンドルにシムする必要のないJSグローバルを公開するのに非常に役立ちます。例えば:
require('script!jquery-cookie/jquery.cookie');
require('script!history.js/scripts/bundled-uncompressed/html4+html5/jquery.history');
require('script!momentjs');
require('./scripts/main.js');
これにより、$。cookie、履歴、およびモーメントがこのバンドルの内外でグローバルに利用可能になり、これらのベンダーライブラリがmain.jsスクリプトとそのすべてにバンドルされます。 require
dファイルにます。
また、この手法で役立つのは次のとおりです。
resolve: {
extensions: ["", ".js"],
modulesDirectories: ['node_modules', 'bower_components']
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"])
)
]
Bowerを使用している場合はmain
、各require
dライブラリpackage.json内のファイルを確認します。上記の例では、History.jsにmain
ファイルが指定されていないため、ファイルへのパスが必要です。
new
前に追加するwebpack.ProvidePlugin
必要があります