rollup.config.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* eslint-disable max-depth */
  2. import { terser } from 'rollup-plugin-terser';
  3. import resolve from '@rollup/plugin-node-resolve';
  4. import typescript from '@rollup/plugin-typescript';
  5. import replace from 'rollup-plugin-re';
  6. const copyrightNotice = `/**
  7. * @license BadiDate v3.0.2
  8. * (c) 2018 Jan Greis
  9. * licensed under MIT
  10. */
  11. `;
  12. const localeRegex = languageCodes => {
  13. const locales = ['ar', 'de', 'es', 'fa', 'fr', 'lv', 'nl', 'pt', 'ru', 'sv',
  14. 'zh', 'en-us'].filter(entry => !languageCodes.includes(entry));
  15. const regexString = `( '?(${locales.join('|')})('?: \\S*)?,)`;
  16. return RegExp(regexString, 'g');
  17. };
  18. const rollupConfig = (root, msm, locales, minify, format, filename) => {
  19. if (filename === undefined) {
  20. filename = `dist/${root.slice(0, -3)}${msm ? '-msm' : ''}${locales === true ? '-locales' : ''}${
  21. minify ? '.min' : ''}.${format === 'es' ? 'm.' : ''}js`;
  22. }
  23. const config = {
  24. external: ['luxon'],
  25. input: `src/${root}`,
  26. output: {
  27. banner: copyrightNotice,
  28. extend: format !== 'es',
  29. file: filename,
  30. format,
  31. name: format === 'es' ? 'badiDate' : 'window',
  32. globals: format === 'es' ? {} : { luxon: 'luxon', meeussunmoon: 'MeeusSunMoon' },
  33. },
  34. plugins: [resolve({ modulesOnly: true }), typescript()],
  35. };
  36. if (locales !== true) {
  37. const replacePatterns = [{ match: 'src/badiLocale.ts', replace: '', test: localeRegex(locales) }];
  38. config.plugins.splice(1, 0, replace({ patterns: replacePatterns }));
  39. }
  40. if (!msm) {
  41. config.external.push('meeussunmoon');
  42. }
  43. if (minify) {
  44. config.plugins.push(terser());
  45. config.output.sourcemap = true;
  46. }
  47. return config;
  48. };
  49. const configs = [];
  50. for (const root of ['badiDate.ts', 'localBadiDate.ts']) {
  51. for (const msm of [true, false]) {
  52. for (const locales of [true, []]) {
  53. for (const minify of [true, false]) {
  54. for (const format of ['es', 'umd']) {
  55. if (!msm || root === 'localBadiDate.ts') {
  56. configs.push(rollupConfig(root, msm, locales, minify, format));
  57. }
  58. }
  59. }
  60. }
  61. }
  62. }
  63. export default configs;