ハンドルバー テンプレートを使用してライブラリを作成しており、Webpack を使用してバンドルしたいと考えています。テンプレートを要求してプリコンパイルできるように、handlebars-loaderを使用しています。
ただし、ハンドルバー (ハンドルバー/ランタイムも) をコンパイル済みライブラリに含めたくないので、それらを外部として設定したいと思います。
ここに私の設定ファイルがあります:
module.exports = {
context: __dirname + '/src',
entry: './index.js',
output: {
path: __dirname + '/dist',
filename: 'stuff.js',
libraryTarget: 'umd',
library: 'Stuff'
},
externals: [{
'handlebars/runtime': {
root: 'Handlebars',
amd: 'handlebars.runtime',
commonjs2: 'handlebars/runtime',
commonjs: 'handlebars/runtime'
}
}],
module: {
loaders: [
{ test: /\.handlebars$/, loader: 'handlebars-loader' }
]
}
};
残念ながら、それは機能せず、handlebars-loader はまだハンドルバー/ランタイムをバンドルします...
ハンドルバー/ランタイムを直接必要とせず、ローダーによって追加されたコードで必要になるためだと思います。
それを外部としてマークする方法はありますか?
編集:テンプレートをコンパイルするには、ハンドルバー/ランタイムが必要であることを知っています。しかし、ライブラリを構築しているので、ライブラリを含めるのではなく、ライブラリのユーザーが提供するようにしたいと考えています。このように、ユーザーがハンドルバーも使用している場合、ライブラリが 2 回読み込まれることはありません。ライブラリが依存関係をバンドルすることを避けることは良い習慣だと思います (私の謙虚な意見では、これはあまりにも頻繁に見られるものです)。