rollup-tests.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const path = require('path')
  2. const glob = require('glob')
  3. const multiEntry = require('rollup-plugin-multi-entry')
  4. const nodeResolve = require('rollup-plugin-node-resolve')
  5. const alias = require('rollup-plugin-alias')
  6. const scss = require('rollup-plugin-scss')
  7. const commonjs = require('rollup-plugin-commonjs')
  8. const sourcemaps = require('rollup-plugin-sourcemaps')
  9. const { EXTERNAL_BROWSER_GLOBALS, WATCH_OPTIONS, stripScssTildeImporter, onwarn } = require('./rollup-util')
  10. module.exports = function() {
  11. return [
  12. buildMainConfig(),
  13. buildForManuaTests()
  14. ]
  15. }
  16. function buildMainConfig() {
  17. let nodeModulesDirs = [
  18. 'packages/__tests__/node_modules',
  19. 'packages-premium/__tests__/node_modules'
  20. ]
  21. return {
  22. input: [
  23. 'tmp/tsc-output/packages?(-premium)/__tests__/src/globals.js',
  24. 'tmp/tsc-output/packages?(-premium)/__tests__/src/**/*.js',
  25. '!tmp/tsc-output/packages?(-premium)/__tests__/src/for-manual/**'
  26. ],
  27. output: {
  28. file: 'tmp/tests.js',
  29. format: 'iife',
  30. globals: EXTERNAL_BROWSER_GLOBALS,
  31. sourcemap: true
  32. },
  33. // HACK: because hoisting is no yet implemented for the monorepo-tool, when we require our packages,
  34. // *their* dependencies are not deduped, we we get multiple instances of the below libraries in the bundle.
  35. // Until hoisting is implemented, make these external and include them manually from karma.config.js.
  36. external: Object.keys(EXTERNAL_BROWSER_GLOBALS).concat([
  37. 'moment/locale/es'
  38. ]),
  39. plugins: [
  40. multiEntry({
  41. exports: false // don't combine all the exports. no need, and would collide
  42. }),
  43. nodeResolve({
  44. customResolveOptions: {
  45. paths: nodeModulesDirs
  46. }
  47. }),
  48. alias({
  49. // the alias to the non-premium tests. must be absolute
  50. 'package-tests': path.join(process.cwd(), 'tmp/tsc-output/packages/__tests__/src')
  51. }),
  52. scss({
  53. includePaths: nodeModulesDirs,
  54. importer: stripScssTildeImporter
  55. }),
  56. commonjs(), // for fast-deep-equal import
  57. sourcemaps()
  58. ],
  59. watch: WATCH_OPTIONS,
  60. onwarn
  61. }
  62. }
  63. function buildForManuaTests() {
  64. return {
  65. input: glob.sync('tmp/tsc-output/packages?(-premium)/__tests__/src/for-manual/**/*.js'),
  66. external: Object.keys(EXTERNAL_BROWSER_GLOBALS),
  67. output: {
  68. dir: 'tmp/tests-manual',
  69. format: 'iife',
  70. globals: EXTERNAL_BROWSER_GLOBALS
  71. },
  72. plugins: [
  73. nodeResolve()
  74. ]
  75. }
  76. }