import { join, resolve } from 'path'; import buble from '@rollup/plugin-buble'; import consts from '@nickkaramoff/rollup-plugin-consts'; import strip from '@rollup/plugin-strip'; import postcss from 'rollup-plugin-postcss'; import { terser } from 'rollup-plugin-terser'; const autoprefixer = require('autoprefixer'); const banner = require('postcss-banner'); const calc = require('postcss-calc'); const cssnano = require('cssnano'); const cssVariables = require('postcss-css-variables'); const mixins = require('postcss-mixins'); const networks = require('./src/networksMixin'); const { urlBuilderMap } = require('./src/networks'); const pkg = require('./package.json'); const isDev = process.env.ROLLUP_WATCH || process.env.NODE_ENV === 'development'; const outputDir = resolve('.', 'dist'); const bannerText = `${pkg.name} v${pkg.version}`; const postcssPlugins = [ mixins({ mixins: { networks, }, }), cssVariables, calc, ]; if (!isDev) { postcssPlugins.push( cssnano({ preset: 'default', }), autoprefixer(), banner({ banner: bannerText, important: true, inline: true, }), ); } const getPlugins = (css) => [ consts({ urlBuilderMap, }), css && postcss({ extract: resolve(join(outputDir, 'shareon.min.css')), plugins: postcssPlugins, }), (!isDev) && strip({ debugger: true, include: ['**/*.js'], functions: ['console.log', 'console.debug', 'assert.*'], sourceMap: false, }), (!isDev) && buble({ transforms: { modules: false, }, }), ]; const getOutput = (baseDir) => { const defaultParameters = { name: pkg.name, exports: 'default', }; return [ { ...defaultParameters, format: 'iife', file: join(baseDir, `${pkg.name}${isDev ? '' : '.min'}.js`), plugins: isDev ? [] : [terser({ output: { comments: /^!/ } })], banner: `/*! ${bannerText} */`, }, (!isDev) && { ...defaultParameters, format: 'cjs', file: join(baseDir, `${pkg.name}.cjs`), banner: `/*! ${bannerText} */`, }, (!isDev) && { ...defaultParameters, format: 'esm', file: join(baseDir, `${pkg.name}.mjs`), banner: `/*! ${bannerText} */`, }, ]; }; export default [ { input: join(__dirname, 'src', 'autoinit.js'), output: getOutput(outputDir), plugins: getPlugins(true), }, { input: join(__dirname, 'src', 'shareon.js'), output: getOutput(join(outputDir, 'noinit')), plugins: getPlugins(false), }, ];