UNPKG

rate-the-docs

Version:

Feedback widget for Read the Docs documentation

63 lines (56 loc) 2.02 kB
// Adapted from https://developers.livechatinc.com/blog/how-to-create-javascript-libraries-in-2018-part-1/ import babel from '@rollup/plugin-babel'; import html from 'rollup-plugin-html'; // note: @rollup/plugin-html is *not* an upgrade to this import postcss from 'rollup-plugin-postcss' import postcssBanner from 'postcss-banner'; import postcssPresetEnv from 'postcss-preset-env'; import pkg from './package.json'; const externals = [ ...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {}), ]; const production = process.env.BUILD === "production"; const banner = `${pkg.name} ${pkg.version} - ${pkg.repository}`; const bannerJS = `/*! ${banner} */`; export default { input: 'src/index.js', external: externals, plugins: [ postcss({ // extract: true, // uncomment for external css files minimize: production, // uses cssnano plugins: [ postcssBanner({ banner, important: true, inline: true }), postcssPresetEnv(), ], sourceMap: !production, // inlined, so don't include in production }), html({ include: '**/*.html', htmlMinifierOptions: { collapseBooleanAttributes: true, collapseWhitespace: true, quoteCharacter: "'", // avoids excessive escaping in generated JS removeComments: production, }, }), babel({ babelHelpers: 'bundled', comments: !production, presets: [production && "babel-preset-minify"].filter(Boolean), }), ], output: [ { file: outputFilename(pkg.main), format: 'umd', name: 'RateTheDocs', banner: bannerJS, sourcemap: true }, { file: outputFilename(pkg.module), format: 'esm', banner: bannerJS, sourcemap: true }, ], }; function outputFilename(filename) { // Ensure ".min" before extension in production, remove ".min" otherwise const nonMinFilename = filename.replace(/\.min(\.\w+)$/, "$1"); return production ? nonMinFilename.replace(/(\.\w+)$/, ".min$1") : nonMinFilename; }