configs.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const path = require('path')
  2. const buble = require('rollup-plugin-buble')
  3. const replace = require('rollup-plugin-replace')
  4. const version = process.env.VERSION || require('../package.json').version
  5. const banner =
  6. `/**
  7. * vuex v${version}
  8. * (c) ${new Date().getFullYear()} Evan You
  9. * @license MIT
  10. */`
  11. const resolve = _path => path.resolve(__dirname, '../', _path)
  12. const configs = {
  13. umdDev: {
  14. input: resolve('src/index.js'),
  15. file: resolve('dist/vuex.js'),
  16. format: 'umd',
  17. env: 'development'
  18. },
  19. umdProd: {
  20. input: resolve('src/index.js'),
  21. file: resolve('dist/vuex.min.js'),
  22. format: 'umd',
  23. env: 'production'
  24. },
  25. commonjs: {
  26. input: resolve('src/index.js'),
  27. file: resolve('dist/vuex.common.js'),
  28. format: 'cjs'
  29. },
  30. esm: {
  31. input: resolve('src/index.esm.js'),
  32. file: resolve('dist/vuex.esm.js'),
  33. format: 'es'
  34. },
  35. 'esm-browser-dev': {
  36. input: resolve('src/index.esm.js'),
  37. file: resolve('dist/vuex.esm.browser.js'),
  38. format: 'es',
  39. env: 'development',
  40. transpile: false
  41. },
  42. 'esm-browser-prod': {
  43. input: resolve('src/index.esm.js'),
  44. file: resolve('dist/vuex.esm.browser.min.js'),
  45. format: 'es',
  46. env: 'production',
  47. transpile: false
  48. }
  49. }
  50. function genConfig (opts) {
  51. const config = {
  52. input: {
  53. input: opts.input,
  54. plugins: [
  55. replace({
  56. __VERSION__: version
  57. })
  58. ]
  59. },
  60. output: {
  61. banner,
  62. file: opts.file,
  63. format: opts.format,
  64. name: 'Vuex'
  65. }
  66. }
  67. if (opts.env) {
  68. config.input.plugins.unshift(replace({
  69. 'process.env.NODE_ENV': JSON.stringify(opts.env)
  70. }))
  71. }
  72. if (opts.transpile !== false) {
  73. config.input.plugins.push(buble())
  74. }
  75. return config
  76. }
  77. function mapValues (obj, fn) {
  78. const res = {}
  79. Object.keys(obj).forEach(key => {
  80. res[key] = fn(obj[key], key)
  81. })
  82. return res
  83. }
  84. module.exports = mapValues(configs, genConfig)