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.
 
 
 

196 regels
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: 'umd',
  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. plugins: ['external-helpers']
  71. }),
  72. replace({
  73. exclude: 'node_modules/**',
  74. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  75. }),
  76. uglify()
  77. ]
  78. },
  79. {
  80. input: 'docs/assets/js/index.js',
  81. sourcemap: true,
  82. output: [
  83. {
  84. file: 'docs/assets/js/index.min.js',
  85. format: 'iife',
  86. }
  87. ],
  88. name: 'frappe',
  89. plugins: [
  90. postcssPlugin({
  91. preprocessor: (content, id) => new Promise((resolve, reject) => {
  92. const result = sass.renderSync({ file: id })
  93. resolve({ code: result.css.toString() })
  94. }),
  95. extensions: ['.scss'],
  96. plugins: [
  97. nested(),
  98. cssnext({ warnForDuplicates: false }),
  99. cssnano()
  100. ]
  101. }),
  102. eslint({
  103. exclude: [
  104. 'src/css/**'
  105. ]
  106. }),
  107. babel({
  108. exclude: 'node_modules/**'
  109. }),
  110. replace({
  111. exclude: 'node_modules/**',
  112. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  113. })
  114. ]
  115. },
  116. {
  117. input: 'src/js/chart.js',
  118. sourcemap: true,
  119. output: [
  120. {
  121. file: pkg.main,
  122. format: 'cjs',
  123. },
  124. {
  125. file: pkg.module,
  126. format: 'es',
  127. }
  128. ],
  129. plugins: [
  130. postcssPlugin({
  131. preprocessor: (content, id) => new Promise((resolve, reject) => {
  132. const result = sass.renderSync({ file: id })
  133. resolve({ code: result.css.toString() })
  134. }),
  135. extensions: ['.scss'],
  136. plugins: [
  137. nested(),
  138. cssnext({ warnForDuplicates: false }),
  139. cssnano()
  140. ]
  141. }),
  142. eslint({
  143. exclude: [
  144. 'src/css/**',
  145. ]
  146. }),
  147. babel({
  148. exclude: 'node_modules/**',
  149. }),
  150. replace({
  151. exclude: 'node_modules/**',
  152. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  153. }),
  154. uglify()
  155. ],
  156. },
  157. {
  158. input: 'src/js/chart.js',
  159. output: [
  160. {
  161. file: pkg.src,
  162. format: 'es',
  163. }
  164. ],
  165. plugins: [
  166. postcssPlugin({
  167. preprocessor: (content, id) => new Promise((resolve, reject) => {
  168. const result = sass.renderSync({ file: id })
  169. resolve({ code: result.css.toString() })
  170. }),
  171. extensions: ['.scss'],
  172. extract: 'dist/frappe-charts.min.css',
  173. plugins: [
  174. nested(),
  175. cssnext({ warnForDuplicates: false }),
  176. cssnano()
  177. ]
  178. }),
  179. eslint({
  180. exclude: [
  181. 'src/css/**',
  182. ]
  183. }),
  184. replace({
  185. exclude: 'node_modules/**',
  186. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  187. })
  188. ],
  189. }
  190. ];