Я использую шаблон веб-пакета для Angular, предоставленный семенем углового стартера в Angular Webpack Starter .Это использует chunkhashing для производственных сборок (см. Webpack.prod.js).
Я изменил конфигурацию webpack, чтобы сгенерировать отдельный пакет для веб-работника (см. Webpack.common.js).Имя файла генерируется в каталоге dist и называется worker. [Chunkhash] .bundle.js .
Есть ли способ определить chunkhash для пакета, чтобы его можно было правильно импортироватьв конструктор Worker, например,
let w: Worker = new Worker('worker' + chunkhash_variable + '.bundle.js')
В качестве альтернативы, лучше практиковать
Хранить JavaScript для веб-работников в папке активов, let w: Worker = new Worker('assets/js/worker.js')
.
Используйте CopyWebPackPlugin , чтобы скопировать javascript веб-работника из исходной папки в папку для сборки.
Может кто-нибудь посоветовать лучшую практику дляссылки на веб-работников?
webpack.common.js
module.exports = function (options) {
...
const entry = {
polyfills: './src/polyfills.browser.ts',
main: './src/main.browser.ts',
worker: './src/app/documents/webworkers/documentupload.webworker.js'
};
...
}
webpack.prod.js
module.exports = function (env) {
...
return webpackMerge(commonConfig({env: ENV, metadata: METADATA}), {
output: {
path: helpers.root('dist'),
filename: '[name].[chunkhash].bundle.js',
sourceMapFilename: '[file].map',
chunkFilename: '[name].[chunkhash].chunk.js'
},
module: {
rules: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'
}),
include: [helpers.root('src', 'styles')]
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader!sass-loader'
}),
include: [helpers.root('src', 'styles')]
},
]
},
plugins: [
new SourceMapDevToolPlugin({
filename: '[file].map[query]',
moduleFilenameTemplate: '[resource-path]',
fallbackModuleFilenameTemplate: '[resource-path]?[hash]',
sourceRoot: 'webpack:///'
}),
...
}