webpack-target-webextension
Version:
WebExtension plugin for Webpack. Supports code-splitting and dynamic import.
41 lines (36 loc) • 1.19 kB
JavaScript
// @ts-check
const BrowserRuntime = require('./BrowserRuntime.js')
/**
* @param {import('webpack')} webpack
* @returns {import('webpack').RuntimeModule}
*/
module.exports = function PublicPathRuntimeModule(webpack) {
const { RuntimeGlobals, RuntimeModule, Template } = webpack
class PublicPathRuntimeModule extends RuntimeModule {
constructor() {
super('publicPath', RuntimeModule.STAGE_BASIC)
}
/**
* @returns {string} runtime code
*/
generate() {
const { compilation } = this
if (!compilation)
return Template.asString(
'/* [webpack-target-webextension] PublicPathRuntimeModule skipped because no compilation is found. */',
)
const { publicPath } = compilation.outputOptions
const path = JSON.stringify(
compilation.getPath(publicPath || '', {
hash: compilation.hash || 'XXXX',
}),
)
return Template.asString([
`if (${BrowserRuntime.RuntimeGlobal}) {`,
Template.indent([`${RuntimeGlobals.publicPath} = ${BrowserRuntime.RuntimeGlobal}.runtime.getURL(${path});`]),
'}',
])
}
}
return new PublicPathRuntimeModule()
}