25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

196 lines
4.1 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. import { HEATMAP_LEFT_MARGIN } from './src/js/utils/constants';
  19. fs.readFile('src/css/charts.scss', (err, css) => {
  20. postcss([precss, autoprefixer])
  21. .process(css, { from: 'src/css/charts.scss', to: 'src/css/charts.css' })
  22. .then(result => {
  23. let options = {
  24. level: {
  25. 1: {
  26. removeQuotes: false,
  27. }
  28. }
  29. }
  30. let output = new CleanCSS(options).minify(result.css);
  31. let res = JSON.stringify(output.styles).replace(/"/g, "'");
  32. let js = `export const CSSTEXT = "${res.slice(1, -1)}";`;
  33. fs.writeFile('src/css/chartsCss.js', js);
  34. });
  35. });
  36. export default [
  37. {
  38. input: 'src/js/index.js',
  39. sourcemap: true,
  40. output: [
  41. {
  42. file: 'docs/assets/js/frappe-charts.min.js',
  43. format: 'iife',
  44. },
  45. {
  46. file: pkg.browser,
  47. format: 'iife',
  48. }
  49. ],
  50. name: 'frappe',
  51. plugins: [
  52. postcssPlugin({
  53. preprocessor: (content, id) => new Promise((resolve, reject) => {
  54. const result = sass.renderSync({ file: id })
  55. resolve({ code: result.css.toString() })
  56. }),
  57. extensions: [ '.scss' ],
  58. plugins: [
  59. nested(),
  60. cssnext({ warnForDuplicates: false }),
  61. cssnano()
  62. ]
  63. }),
  64. eslint({
  65. exclude: [
  66. 'src/css/**'
  67. ]
  68. }),
  69. babel({
  70. exclude: 'node_modules/**',
  71. plugins: ['external-helpers']
  72. }),
  73. replace({
  74. exclude: 'node_modules/**',
  75. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  76. }),
  77. uglify()
  78. ]
  79. },
  80. {
  81. input: 'docs/assets/js/index.js',
  82. sourcemap: true,
  83. output: [
  84. {
  85. file: 'docs/assets/js/index.min.js',
  86. format: 'iife',
  87. }
  88. ],
  89. name: 'frappe',
  90. plugins: [
  91. postcssPlugin({
  92. preprocessor: (content, id) => new Promise((resolve, reject) => {
  93. const result = sass.renderSync({ file: id })
  94. resolve({ code: result.css.toString() })
  95. }),
  96. extensions: [ '.scss' ],
  97. plugins: [
  98. nested(),
  99. cssnext({ warnForDuplicates: false }),
  100. cssnano()
  101. ]
  102. }),
  103. eslint({
  104. exclude: [
  105. 'src/css/**'
  106. ]
  107. }),
  108. babel({
  109. exclude: 'node_modules/**'
  110. }),
  111. replace({
  112. exclude: 'node_modules/**',
  113. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  114. })
  115. ]
  116. },
  117. {
  118. input: 'src/js/chart.js',
  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. ];