github.com/GoogleCloudPlatform/testgrid@v0.0.174/web/rollup.config.js (about) 1 import nodeResolve from '@rollup/plugin-node-resolve'; 2 import babel from '@rollup/plugin-babel'; 3 import html from '@web/rollup-plugin-html'; 4 import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets'; 5 import terser from '@rollup/plugin-terser'; 6 import { generateSW } from 'rollup-plugin-workbox'; 7 import path from 'path'; 8 9 export default { 10 input: 'index.html', 11 output: { 12 entryFileNames: '[hash].js', 13 chunkFileNames: '[hash].js', 14 assetFileNames: '[hash][extname]', 15 format: 'es', 16 dir: 'dist', 17 }, 18 preserveEntrySignatures: false, 19 20 plugins: [ 21 /** Enable using HTML as rollup entrypoint */ 22 html({ 23 minify: true, 24 injectServiceWorker: true, 25 serviceWorkerPath: 'dist/sw.js', 26 }), 27 /** Resolve bare module imports */ 28 nodeResolve(), 29 /** Minify JS */ 30 terser(), 31 /** Bundle assets references via import.meta.url */ 32 importMetaAssets(), 33 /** Compile JS to a lower language target */ 34 babel({ 35 babelHelpers: 'bundled', 36 presets: [ 37 [ 38 require.resolve('@babel/preset-env'), 39 { 40 targets: [ 41 'last 3 Chrome major versions', 42 'last 3 Firefox major versions', 43 'last 3 Edge major versions', 44 'last 3 Safari major versions', 45 ], 46 modules: false, 47 bugfixes: true, 48 }, 49 ], 50 ], 51 plugins: [ 52 [ 53 require.resolve('babel-plugin-template-html-minifier'), 54 { 55 modules: { lit: ['html', { name: 'css', encapsulation: 'style' }] }, 56 failOnError: false, 57 strictCSS: true, 58 htmlMinifier: { 59 collapseWhitespace: true, 60 conservativeCollapse: true, 61 removeComments: true, 62 caseSensitive: true, 63 minifyCSS: true, 64 }, 65 }, 66 ], 67 ], 68 }), 69 /** Create and inject a service worker */ 70 generateSW({ 71 globIgnores: ['polyfills/*.js', 'nomodule-*.js'], 72 navigateFallback: '/index.html', 73 // where to output the generated sw 74 swDest: path.join('dist', 'sw.js'), 75 // directory to match patterns against to be precached 76 globDirectory: path.join('dist'), 77 // cache any html js and css by default 78 globPatterns: ['**/*.{html,js,css,webmanifest}'], 79 skipWaiting: true, 80 clientsClaim: true, 81 runtimeCaching: [{ urlPattern: 'polyfills/*.js', handler: 'CacheFirst' }], 82 }), 83 ], 84 };