diff options
author | dizzy <diosmosis@users.noreply.github.com> | 2021-10-15 09:08:14 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-15 09:08:14 +0300 |
commit | 2f80606b1db3caaeb4195ff7cd0bf949b2154968 (patch) | |
tree | 3ebe7333835309b135395a3b31496f9bee93c9ed /vue.config.js | |
parent | 71c98f36ec238b6d688065963f196c387850da53 (diff) |
[Vue] utility function for creating angularjs adapters (#18146)4.6.0-b1
* incomplete conversion
* get ajax helper migration to work
* delete old periods.spec.js
* remove global-ajax-queue.js file
* migrate piwik service and test (w/ hacks to get it the test to work)
* rebuild and remove old files + get tests to pass
* unfinished commit
* return jqxhr object so promise api can be used
* move hasBlockedContent and deprecate piwikApi service
* remove alert files
* convert piwikHelper.spec.js
* in new vue code, use "Matomo" everywhere possible instead of "piwik" and rebuild vue files
* add another needed export line in command
* include polyfills after vue so we can add to vue engine
* Add HTML sanitizer for use w/ migrating ng-bind-html uses.
* fix broken merge, rebuild js, fix issue in build command
* add sanitize to other components for consistency (will be replaced by utility function eventually)
* migrate matomo-dialog, fix issue where vue:build --watch did not correctly watch all plugin files, fix path issue in webpack externals, add vue matomo dialog use example to ExampleVue
* update expected screenshot
* create initial createAngularJsAdapter generic function and use for AcitivityIndicator
* fix webpack chunk loading issue that occurs only on production (since the chunk is not stored in the same directory as the merged asset JS)
* use adapter utility for Alert
* use adapter function for matomo-dialog (even though the mapping becomes more complex)
* fix unit tests
Diffstat (limited to 'vue.config.js')
-rw-r--r-- | vue.config.js | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/vue.config.js b/vue.config.js index ef7b9a550a..4755a75fff 100644 --- a/vue.config.js +++ b/vue.config.js @@ -6,7 +6,7 @@ const pluginExternals = scanPluginExternals(); function scanPluginExternals() { const pluginExternals = {}; - const pluginsDir = path.join(__dirname, '..', '..'); + const pluginsDir = path.join(__dirname, 'plugins'); for (let pluginName of fs.readdirSync(pluginsDir)) { const vuePackageFolder = path.join(pluginsDir, pluginName, 'vue', 'src'); if (!fs.existsSync(vuePackageFolder)) { @@ -19,9 +19,36 @@ function scanPluginExternals() { return pluginExternals; } +if (!process.env.MATOMO_CURRENT_PLUGIN) { + console.log("The MATOMO_CURRENT_PLUGIN environment variable is not set!"); +} + +const publicPath = `plugins/${process.env.MATOMO_CURRENT_PLUGIN}/vue/dist/`; + +// hack to get publicPath working for lib build target (see https://github.com/vuejs/vue-cli/issues/4896#issuecomment-569001811) +function PublicPathWebpackPlugin () {} + +PublicPathWebpackPlugin.prototype.apply = function (compiler) { + compiler.hooks.entryOption.tap('PublicPathWebpackPlugin', (context, entry) => { + if (entry['module.common']) { + entry['module.common'] = path.resolve(__dirname, './src/main.js'); + } + if (entry['module.umd']) { + entry['module.umd'] = path.resolve(__dirname, './src/main.js'); + } + if (entry['module.umd.min']) { + entry['module.umd.min'] = path.resolve(__dirname, './src/main.js'); + } + }); + compiler.hooks.beforeRun.tap('PublicPathWebpackPlugin', (compiler) => { + compiler.options.output.publicPath = publicPath; + }); +}; + module.exports = { - publicPath: "", + publicPath, chainWebpack: config => { + config.plugin().use(PublicPathWebpackPlugin); config.externals({ 'tslib': 'tslib', ...pluginExternals, |