charts/rollup.config.js
2022-11-15 13:33:52 +05:30

197 lines
5.8 KiB
JavaScript

import pkg from "./package.json";
// Rollup plugins
import babel from "rollup-plugin-babel";
import { eslint } from "rollup-plugin-eslint";
import replace from "rollup-plugin-replace";
import uglify from "rollup-plugin-uglify-es";
import sass from "node-sass";
// PostCSS plugins
import postcssPlugin from "rollup-plugin-postcss";
import nested from "postcss-nested";
import cssnext from "postcss-cssnext";
import cssnano from "cssnano";
import postcss from "postcss";
import precss from "precss";
import CleanCSS from "clean-css";
import autoprefixer from "autoprefixer";
import fs from "fs";
fs.readFile("src/css/charts.scss", (err, css) => {
postcss([precss, autoprefixer])
.process(css, { from: "src/css/charts.scss", to: "src/css/charts.css" })
.then((result) => {
let options = {
level: {
1: {
removeQuotes: false,
},
},
};
let output = new CleanCSS(options).minify(result.css);
let res = JSON.stringify(output.styles).replace(/"/g, "'");
let js = `export const CSSTEXT = "${res.slice(1, -1)}";`;
fs.writeFile("src/css/chartsCss.js", js, (err) => {
if (err) console.log(err);
else {
console.log("File written successfully\n");
}
});
});
});
export default [
{
input: "src/js/index.js",
sourcemap: true,
output: [
{
file: "docs/assets/js/frappe-charts.min.js",
format: "iife",
},
{
file: pkg.browser,
format: "umd",
},
],
name: "frappe",
plugins: [
postcssPlugin({
preprocessor: (content, id) =>
new Promise((resolve, reject) => {
const result = sass.renderSync({ file: id });
resolve({ code: result.css.toString() });
}),
extensions: [".scss"],
plugins: [
nested(),
cssnext({ warnForDuplicates: false }),
cssnano(),
],
}),
eslint({
exclude: ["src/css/**"],
}),
babel({
exclude: "node_modules/**",
plugins: ["external-helpers"],
}),
replace({
exclude: "node_modules/**",
ENV: JSON.stringify(process.env.NODE_ENV || "development"),
}),
uglify(),
],
},
{
input: "docs/assets/js/index.js",
sourcemap: true,
output: [
{
file: "docs/assets/js/index.min.js",
format: "iife",
},
],
name: "frappe",
plugins: [
postcssPlugin({
preprocessor: (content, id) =>
new Promise((resolve, reject) => {
const result = sass.renderSync({ file: id });
resolve({ code: result.css.toString() });
}),
extensions: [".scss"],
plugins: [
nested(),
cssnext({ warnForDuplicates: false }),
cssnano(),
],
}),
eslint({
exclude: ["src/css/**"],
}),
babel({
exclude: "node_modules/**",
}),
replace({
exclude: "node_modules/**",
ENV: JSON.stringify(process.env.NODE_ENV || "development"),
}),
],
},
{
input: "src/js/chart.js",
sourcemap: true,
output: [
{
file: pkg.main,
format: "cjs",
},
{
file: pkg.module,
format: "es",
},
],
plugins: [
postcssPlugin({
preprocessor: (content, id) =>
new Promise((resolve, reject) => {
const result = sass.renderSync({ file: id });
resolve({ code: result.css.toString() });
}),
extensions: [".scss"],
plugins: [
nested(),
cssnext({ warnForDuplicates: false }),
cssnano(),
],
}),
eslint({
exclude: ["src/css/**"],
}),
babel({
exclude: "node_modules/**",
}),
replace({
exclude: "node_modules/**",
ENV: JSON.stringify(process.env.NODE_ENV || "development"),
}),
uglify(),
],
},
{
input: "src/js/chart.js",
output: [
{
file: pkg.src,
format: "es",
},
],
plugins: [
postcssPlugin({
preprocessor: (content, id) =>
new Promise((resolve, reject) => {
const result = sass.renderSync({ file: id });
resolve({ code: result.css.toString() });
}),
extensions: [".scss"],
extract: "dist/frappe-charts.min.css",
plugins: [
nested(),
cssnext({ warnForDuplicates: false }),
cssnano(),
],
}),
eslint({
exclude: ["src/css/**"],
}),
replace({
exclude: "node_modules/**",
ENV: JSON.stringify(process.env.NODE_ENV || "development"),
}),
],
},
];