Blame view

node_modules/is-what/build.js 2.17 KB
7820380e   “wangming”   1
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
  /* eslint-disable */
  
  // npm install rollup-plugin-typescript2 typescript --save-dev
  import typescript from 'rollup-plugin-typescript2'
  // import { terser } from 'rollup-plugin-terser'
  // import resolve from 'rollup-plugin-node-resolve'
  
  // ------------------------------------------------------------------------------------------
  // formats
  // ------------------------------------------------------------------------------------------
  // amd – Asynchronous Module Definition, used with module loaders like RequireJS
  // cjs – CommonJS, suitable for Node and Browserify/Webpack
  // esm – Keep the bundle as an ES module file
  // iife – A self-executing function, suitable for inclusion as a <script> tag. (If you want to create a bundle for your application, you probably want to use this, because it leads to smaller file sizes.)
  // umd – Universal Module Definition, works as amd, cjs and iife all in one
  // system – Native format of the SystemJS loader
  
  // ------------------------------------------------------------------------------------------
  // setup
  // ------------------------------------------------------------------------------------------
  const pkg = require('./package.json')
  const name = pkg.name
  const className = name.replace(/(^\w|-\w)/g, c => c.replace('-', '').toUpperCase())
  const external = Object.keys(pkg.dependencies || [])
  const plugins = [
    typescript({ useTsconfigDeclarationDir: true, tsconfigOverride: { exclude: ['test/**/*'] } }),
  ]
  
  // ------------------------------------------------------------------------------------------
  // Builds
  // ------------------------------------------------------------------------------------------
  function defaults (config) {
    // defaults
    const defaults = {
      plugins,
      external,
    }
    // defaults.output
    config.output = config.output.map(output => {
      return Object.assign(
        {
          sourcemap: false,
          name: className,
          exports: 'named',
        },
        output
      )
    })
    return Object.assign(defaults, config)
  }
  
  export default [
    defaults({
      input: 'src/index.ts',
      output: [
        { file: 'dist/index.cjs.js', format: 'cjs' },
        { file: 'dist/index.esm.js', format: 'esm' },
      ],
    }),
  ]