webpack入門_shimming

shimming

公式のドキュメントでShimmingを試してみたいと思います。
webpackの設定ファイルでProvidePluginを指定するとライブラリをグローバルに適用することができ、importなしでも使用することができます。例えばサードパーティ製のライブラリがjQueryを使用している場合などProvidePluginを使用することで解決ができるかもしれないです。

以下のjsファイルではlodashを使用していますがimportはコメントアウトされています。

// import _ from 'lodash';

function component() {
  var element = document.createElement('div');
  element.innerHTML = join(['Hello', 'webpack'], ' ');
  return element;
}
document.body.appendChild(component());

この状態でビルドしてブラウザで表示してみるとコンソールでエラーが発生していることが確認できます。

次にwebpackの設定で以下のProvidePluginを指定します。

module.exports = {
  plugins: [
    new webpack.ProvidePlugin({
      _: 'lodash'
    })
 ]
,,,

それからビルドして動作を確認したらエラーが発生しなくなるのが確認できます。

ライブラリ内の特定の関数のみをグローバルで使えるようにできます、lodashのjoinのみをグローバルで使えるようにする場合webpackの設定を以下のように配列で渡します。

module.exports = {
  plugins: [
    new webpack.ProvidePlugin({
      join: ['lodash', 'join']
    })
 ]
,,,

この設定があればlodashのjoinが以下のようにjoinが使えます。

element.innerHTML = join(['Hello', 'webpack'], ' ');