You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

194 lines
4.0 KiB

  1. import pkg from './package.json';
  2. // Rollup plugins
  3. import babel from 'rollup-plugin-babel';
  4. import eslint from 'rollup-plugin-eslint';
  5. import replace from 'rollup-plugin-replace';
  6. import uglify from 'rollup-plugin-uglify-es';
  7. import sass from 'node-sass';
  8. // PostCSS plugins
  9. import postcssPlugin from 'rollup-plugin-postcss';
  10. import nested from 'postcss-nested';
  11. import cssnext from 'postcss-cssnext';
  12. import cssnano from 'cssnano';
  13. import postcss from 'postcss';
  14. import precss from 'precss';
  15. import CleanCSS from 'clean-css';
  16. import autoprefixer from 'autoprefixer';
  17. import fs from 'fs';
  18. fs.readFile('src/css/charts.scss', (err, css) => {
  19. postcss([precss, autoprefixer])
  20. .process(css, { from: 'src/css/charts.scss', to: 'src/css/charts.css' })
  21. .then(result => {
  22. let options = {
  23. level: {
  24. 1: {
  25. removeQuotes: false,
  26. }
  27. }
  28. }
  29. let output = new CleanCSS(options).minify(result.css);
  30. let res = JSON.stringify(output.styles).replace(/"/g, "'");
  31. let js = `export const CSSTEXT = "${res.slice(1, -1)}";`;
  32. fs.writeFile('src/css/chartsCss.js', js);
  33. });
  34. });
  35. export default [
  36. {
  37. input: 'src/js/index.js',
  38. sourcemap: true,
  39. output: [
  40. {
  41. file: 'docs/assets/js/frappe-charts.min.js',
  42. format: 'iife',
  43. },
  44. {
  45. file: pkg.browser,
  46. format: 'iife',
  47. }
  48. ],
  49. name: 'frappe',
  50. plugins: [
  51. postcssPlugin({
  52. preprocessor: (content, id) => new Promise((resolve, reject) => {
  53. const result = sass.renderSync({ file: id })
  54. resolve({ code: result.css.toString() })
  55. }),
  56. extensions: [ '.scss' ],
  57. plugins: [
  58. nested(),
  59. cssnext({ warnForDuplicates: false }),
  60. cssnano()
  61. ]
  62. }),
  63. eslint({
  64. exclude: [
  65. 'src/css/**'
  66. ]
  67. }),
  68. babel({
  69. exclude: 'node_modules/**'
  70. }),
  71. replace({
  72. exclude: 'node_modules/**',
  73. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  74. }),
  75. uglify()
  76. ]
  77. },
  78. {
  79. input: 'docs/assets/js/index.js',
  80. sourcemap: true,
  81. output: [
  82. {
  83. file: 'docs/assets/js/index.min.js',
  84. format: 'iife',
  85. }
  86. ],
  87. name: 'frappe',
  88. plugins: [
  89. postcssPlugin({
  90. preprocessor: (content, id) => new Promise((resolve, reject) => {
  91. const result = sass.renderSync({ file: id })
  92. resolve({ code: result.css.toString() })
  93. }),
  94. extensions: [ '.scss' ],
  95. plugins: [
  96. nested(),
  97. cssnext({ warnForDuplicates: false }),
  98. cssnano()
  99. ]
  100. }),
  101. eslint({
  102. exclude: [
  103. 'src/css/**'
  104. ]
  105. }),
  106. babel({
  107. exclude: 'node_modules/**'
  108. }),
  109. replace({
  110. exclude: 'node_modules/**',
  111. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  112. })
  113. ]
  114. },
  115. {
  116. input: 'src/js/chart.js',
  117. output: [
  118. {
  119. file: pkg.main,
  120. format: 'cjs',
  121. },
  122. {
  123. file: pkg.module,
  124. format: 'es',
  125. }
  126. ],
  127. plugins: [
  128. postcssPlugin({
  129. preprocessor: (content, id) => new Promise((resolve, reject) => {
  130. const result = sass.renderSync({ file: id })
  131. resolve({ code: result.css.toString() })
  132. }),
  133. extensions: [ '.scss' ],
  134. plugins: [
  135. nested(),
  136. cssnext({ warnForDuplicates: false }),
  137. cssnano()
  138. ]
  139. }),
  140. eslint({
  141. exclude: [
  142. 'src/css/**',
  143. ]
  144. }),
  145. babel({
  146. exclude: 'node_modules/**',
  147. }),
  148. replace({
  149. exclude: 'node_modules/**',
  150. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  151. }),
  152. uglify()
  153. ],
  154. },
  155. {
  156. input: 'src/js/chart.js',
  157. output: [
  158. {
  159. file: pkg.src,
  160. format: 'es',
  161. }
  162. ],
  163. plugins: [
  164. postcssPlugin({
  165. preprocessor: (content, id) => new Promise((resolve, reject) => {
  166. const result = sass.renderSync({ file: id })
  167. resolve({ code: result.css.toString() })
  168. }),
  169. extensions: [ '.scss' ],
  170. extract: 'dist/frappe-charts.min.css',
  171. plugins: [
  172. nested(),
  173. cssnext({ warnForDuplicates: false }),
  174. cssnano()
  175. ]
  176. }),
  177. eslint({
  178. exclude: [
  179. 'src/css/**',
  180. ]
  181. }),
  182. replace({
  183. exclude: 'node_modules/**',
  184. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  185. })
  186. ],
  187. }
  188. ];