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  };