25개 이상의 토픽을 선택하실 수 없습니다. 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. output: [
  39. {
  40. file: 'docs/assets/js/frappe-charts.min.js',
  41. format: 'iife',
  42. },
  43. {
  44. file: pkg.browser,
  45. format: 'iife',
  46. }
  47. ],
  48. name: 'frappe',
  49. plugins: [
  50. postcssPlugin({
  51. preprocessor: (content, id) => new Promise((resolve, reject) => {
  52. const result = sass.renderSync({ file: id })
  53. resolve({ code: result.css.toString() })
  54. }),
  55. extensions: [ '.scss' ],
  56. plugins: [
  57. nested(),
  58. cssnext({ warnForDuplicates: false }),
  59. cssnano()
  60. ]
  61. }),
  62. eslint({
  63. exclude: [
  64. 'src/css/**'
  65. ]
  66. }),
  67. babel({
  68. exclude: 'node_modules/**',
  69. plugins: ['external-helpers']
  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. output: [
  81. {
  82. file: 'docs/assets/js/index.min.js',
  83. format: 'iife',
  84. }
  85. ],
  86. name: 'frappe',
  87. plugins: [
  88. postcssPlugin({
  89. preprocessor: (content, id) => new Promise((resolve, reject) => {
  90. const result = sass.renderSync({ file: id })
  91. resolve({ code: result.css.toString() })
  92. }),
  93. extensions: [ '.scss' ],
  94. plugins: [
  95. nested(),
  96. cssnext({ warnForDuplicates: false }),
  97. cssnano()
  98. ]
  99. }),
  100. eslint({
  101. exclude: [
  102. 'src/css/**'
  103. ]
  104. }),
  105. babel({
  106. exclude: 'node_modules/**'
  107. }),
  108. replace({
  109. exclude: 'node_modules/**',
  110. ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
  111. })
  112. ]
  113. },
  114. {
  115. input: 'src/js/chart.js',
  116. sourcemap: true,
  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. ];