rollup-modules.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const path = require('path')
  2. const { readFileSync } = require('fs')
  3. const nodeResolve = require('rollup-plugin-node-resolve')
  4. const sass = require('rollup-plugin-sass')
  5. const { renderBanner, isRelPath, isScssPath, TEMPLATE_PLUGIN, SOURCEMAP_PLUGINS, WATCH_OPTIONS, onwarn, watchSubdirSassIncludes } = require('./rollup-util')
  6. const { pkgStructs, getCorePkgStruct } = require('./pkg-struct')
  7. module.exports = function(isDev) {
  8. return pkgStructs.filter((pkgStruct) => !pkgStruct.isBundle)
  9. .map((pkgStruct) => buildPkgConfig(pkgStruct, isDev))
  10. }
  11. const coreVarsScssString = readFileSync(
  12. path.join(getCorePkgStruct().srcDir, 'styles/_vars.scss'),
  13. 'utf8'
  14. )
  15. function buildPkgConfig(pkgStruct, isDev) {
  16. let banner = renderBanner(pkgStruct.jsonObj)
  17. let anyCss = false
  18. return {
  19. input: path.join('tmp/tsc-output', pkgStruct.srcDir, 'main.js'),
  20. output: {
  21. file: path.join(pkgStruct.distDir, 'main.js'),
  22. format: 'esm',
  23. banner,
  24. sourcemap: isDev,
  25. intro() {
  26. if (anyCss) {
  27. return 'import \'./main.css\';'
  28. }
  29. return ''
  30. }
  31. },
  32. external(id) {
  33. return !isRelPath(id)
  34. },
  35. plugins: [
  36. watchSubdirSassIncludes,
  37. nodeResolve(),
  38. sass({
  39. output: true, // to a .css file
  40. options: {
  41. // core already has sass vars imported, but inject them for other modules
  42. data: (pkgStruct.isCore ? '' : coreVarsScssString) + '\n'
  43. }
  44. }),
  45. TEMPLATE_PLUGIN,
  46. ...(isDev ? SOURCEMAP_PLUGINS : []),
  47. {
  48. resolveId(id) { // TODO: not DRY
  49. if (isScssPath(id) && isRelPath(id)) {
  50. anyCss = true
  51. return { id: path.join(process.cwd(), pkgStruct.srcDir, id), external: false }
  52. }
  53. return null
  54. }
  55. }
  56. ],
  57. watch: WATCH_OPTIONS,
  58. onwarn
  59. }
  60. }