diff options
author | Sarah German <sgerman@gitlab.com> | 2023-06-16 12:26:36 +0300 |
---|---|---|
committer | Achilleas Pipinellis <axil@gitlab.com> | 2023-06-16 12:26:36 +0300 |
commit | d68dcb326cf92975b8494edc5dfda7574485993f (patch) | |
tree | 797794aa9bb7f03bbb375b1ddaa750525aa30c83 | |
parent | 5b17f047b24afe90a256d6fdeec83f7f0867e4f5 (diff) |
Skip unneeded search bundles when compiling JavaScript
-rw-r--r-- | rollup.config.js | 167 |
1 files changed, 88 insertions, 79 deletions
diff --git a/rollup.config.js b/rollup.config.js index 50f5a052..0454d4d7 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -14,84 +14,93 @@ function mapDirectory(file) { return file.replace('content/', 'public/'); } -// Global assets are copied here. -const vendorDir = './public/assets/vendor'; +const vendorDir = './public/assets/vendor'; // Global assets are copied here +const searchBackend = process.env.SEARCH_BACKEND || 'google'; -module.exports = globSync('content/frontend/**/*.js').map((file) => ({ - input: file, - output: { - file: mapDirectory(file), - format: 'iife', - name: file, - inlineDynamicImports: true, - globals: { - vue: 'Vue', - jquery: '$', +module.exports = globSync('content/frontend/**/*.js') + // Drop search bundles that aren't required in this build. + .filter((file) => { + const fileName = file.split('/').pop(); + return ( + fileName.startsWith(searchBackend) || + (!fileName.startsWith('google') && !fileName.startsWith('lunr')) + ); + }) + .map((file) => ({ + input: file, + output: { + file: mapDirectory(file), + format: 'iife', + name: file, + inlineDynamicImports: true, + globals: { + vue: 'Vue', + jquery: '$', + }, }, - }, - external: ['vue', 'jquery'], - cache: true, - plugins: [ - nodeResolve({ browser: true, preferBuiltins: false }), - commonjs(), - vue(), - url({ - destDir: 'public/assets/images', - publicPath: '/assets/images/', - fileName: 'icons.svg', - }), - babel({ - exclude: 'node_modules/**', - babelHelpers: 'bundled', - }), - json(), - css(), - replace({ - preventAssignment: true, - 'process.env.NODE_ENV': JSON.stringify('production'), - }), - terser(), - copy({ - copyOnce: true, - hook: 'closeBundle', - targets: [ - { - src: './node_modules/mermaid/dist/mermaid.min.js*', - dest: vendorDir, - }, - { - src: './node_modules/vue/dist/vue.min.js', - dest: vendorDir, - }, - { - src: './node_modules/lunr/lunr.min.js', - dest: vendorDir, - }, - { - src: './node_modules/jquery/dist/jquery.slim.min.js', - dest: vendorDir, - }, - { - src: './node_modules/bootstrap/dist/js/bootstrap.bundle.min.js*', - dest: vendorDir, - }, - { - src: './node_modules/@gitlab/ui/dist/utility_classes.css*', - dest: vendorDir, - }, - { - src: './node_modules/@gitlab/ui/dist/index.css*', - dest: vendorDir, - }, - { - src: './node_modules/@gitlab/fonts/gitlab-sans/GitLabSans.woff2', - dest: vendorDir, - }, - { - src: './node_modules/@gitlab/fonts/jetbrains-mono/JetBrainsMono*', - dest: vendorDir, - }, - ], - }), - ], -})); + external: ['vue', 'jquery'], + cache: true, + plugins: [ + nodeResolve({ browser: true, preferBuiltins: false }), + commonjs(), + vue(), + url({ + destDir: 'public/assets/images', + publicPath: '/assets/images/', + fileName: 'icons.svg', + }), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'bundled', + }), + json(), + css(), + replace({ + preventAssignment: true, + 'process.env.NODE_ENV': JSON.stringify('production'), + }), + terser(), + copy({ + copyOnce: true, + hook: 'closeBundle', + targets: [ + { + src: './node_modules/mermaid/dist/mermaid.min.js*', + dest: vendorDir, + }, + { + src: './node_modules/vue/dist/vue.min.js', + dest: vendorDir, + }, + { + src: './node_modules/lunr/lunr.min.js', + dest: vendorDir, + }, + { + src: './node_modules/jquery/dist/jquery.slim.min.js', + dest: vendorDir, + }, + { + src: './node_modules/bootstrap/dist/js/bootstrap.bundle.min.js*', + dest: vendorDir, + }, + { + src: './node_modules/@gitlab/ui/dist/utility_classes.css*', + dest: vendorDir, + }, + { + src: './node_modules/@gitlab/ui/dist/index.css*', + dest: vendorDir, + }, + { + src: './node_modules/@gitlab/fonts/gitlab-sans/GitLabSans.woff2', + dest: vendorDir, + }, + { + src: './node_modules/@gitlab/fonts/jetbrains-mono/JetBrainsMono*', + dest: vendorDir, + }, + ], + }), + ], + })); |