File size: 2,310 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { babel } from '@rollup/plugin-babel'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import terser from '@rollup/plugin-terser'
import commonjs from '@rollup/plugin-commonjs'
import { readFileSync } from 'fs'
const pkg = JSON.parse(readFileSync(new URL('package.json', import.meta.url)))

const getBabelOptions = ({ useESModules, plugins = [] }) => ({
  exclude: /node_modules/,
  babelHelpers: 'runtime',
  plugins: [['@babel/transform-runtime', { useESModules }]].concat(plugins),
  comments: false
})

const input = './src/index.js'
// check relative and absolute paths for windows and unix
const external = id => !id.startsWith('.') && !id.startsWith('/') && !id.includes(':')

export default [
  {
    input,
    output: {
      dir: 'dist/cjs',
      preserveModules: true,
      // file: pkg.main,
      format: 'cjs'
    },
    external,
    // external: [
    //   ...Object.keys(pkg.dependencies || {})
    // ],
    plugins: [babel(getBabelOptions({
      useESModules: false,
      plugins: [['add-module-exports']]
    }))]
  },
  {
    input,
    output: {
      dir: 'dist/esm',
      preserveModules: true,
      // file: pkg.module,
      format: 'esm' // the preferred format
    },
    external,
    // external: [
    //   ...Object.keys(pkg.dependencies || {})
    // ],
    plugins: [babel(getBabelOptions({ useESModules: true }))]
  },
  // this is not used, if we make sure every js file is imported with .js ending
  // {
  //   input,
  //   output: {
  //     dir: 'dist/deno',
  //     preserveModules: true,
  //     // file: pkg.module,
  //     format: 'esm' // the preferred format
  //   },
  //   external
  //   // external: [
  //   //   ...Object.keys(pkg.dependencies || {})
  //   // ]
  // },
  {
    input,
    output: {
      file: pkg.browser,
      format: 'umd',
      name: 'i18nextResourcesToBackend' // the global which can be used in a browser
    },
    plugins: [commonjs(), babel(getBabelOptions({ useESModules: true })), nodeResolve()]
  },
  {
    input,
    output: {
      file: pkg.browser.replace('.js', '.min.js'),
      format: 'umd',
      name: 'i18nextResourcesToBackend' // the global which can be used in a browser
    },
    plugins: [commonjs(), babel(getBabelOptions({ useESModules: true })), nodeResolve(), terser()]
  }
]