Skip to content

Commit

Permalink
wip(rollup-plugin-purgecss): convert to typescript
Browse files Browse the repository at this point in the history
- convert to typescript
- change tests
  • Loading branch information
Ffloriel committed Feb 16, 2021
1 parent 6418767 commit d0235a6
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 39 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import atualA from '../../assets/actual_a.scss'
import atualB from '../../assets/actual_b.scss'
import atualC from '../../assets/actual_c.sass'
import atualA from "../../assets/actual_a.scss";
import atualB from "../../assets/actual_b.scss";
import atualC from "../../assets/actual_c.sass";


export default atualA + atualB + atualC
export default atualA + atualB + atualC;
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
import '../../assets/actual_a.scss'
import '../../assets/actual_b.scss'
import "../../assets/actual_a.scss";
import "../../assets/actual_b.scss";
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
import '../../assets/actual_a.scss'
import '../../assets/actual_b.scss'
import "../../assets/actual_a.scss";
import "../../assets/actual_b.scss";
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
import '../../assets/actual_a.scss'
import '../../assets/actual_b.scss'
import "../../assets/actual_a.scss";
import "../../assets/actual_b.scss";
18 changes: 10 additions & 8 deletions packages/rollup-plugin-purgecss/__tests__/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
import fs from "fs";
// import fs from "fs";
import path from "path";
import { rollup } from "rollup";
import purgecss from "./src/";
import purgecss from "./../src/";

const expectA = fs.readFileSync("__tests__/assets/expect_a.css").toString();
// const expectA = fs.readFileSync(path.resolve(__dirname, "assets/expect_a.css")).toString();

describe("rollup-plugin-purgecss", () => {
it("remove unused css", async () => {
const bundle = await rollup({
input: "__tests__fixtures/index.js",
await rollup({
input: path.resolve(__dirname, "fixtures/basic/index.js"),
plugins: [
purgecss({
content: ["__tests__/assets/test_a.html"],
content: [path.resolve(__dirname, "assets/test_a.html")],
output: path.resolve(__dirname, "temp/purged"),
}),
],
});

const value = await bundle.generate({ format: "cjs" });
expect(value.output).toEqual(expectA);
// const value = await bundle.generate({ format: "cjs" });
// expect(value.output).toEqual(expectA);
});
});
3 changes: 3 additions & 0 deletions packages/rollup-plugin-purgecss/__tests__/temp/purged
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
body{color: red;}

a{color: green;}.used{color: blue;}
25 changes: 9 additions & 16 deletions packages/rollup-plugin-purgecss/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,33 @@
import fs from "fs";
import Purgecss, { PurgeCSS } from "purgecss";
import { PurgeCSS } from "purgecss";
import { Plugin } from "rollup";
import { createFilter } from "rollup-pluginutils";
import { UserDefinedOptions } from "./types";

function pluginPurgeCSS(options: UserDefinedOptions): Plugin {
return {
name: "purgecss",
transform: async (code, id) => {
const v = await new PurgeCSS().purge();
},
};
}

const pluginPurgecss = function (options = {}) {
const filter = createFilter(
options.include || ["**/*.css"],
options.exclude || "node_modules/**"
);
const styles = [];

const styles: string[] = [];
let dest = "";

return {
name: "purgecss",
transform(code, id) {
transform: async (code, id) => {
if (!filter(id)) return null;

const purgecss = new Purgecss({
const v = await new PurgeCSS().purge({
content: options.content,
css: [
{
raw: code,
},
],
});
let css = purgecss.purge()[0].css;
let css = v[0].css;

styles.push(css);

css = JSON.stringify(css);
Expand Down Expand Up @@ -73,6 +66,6 @@ const pluginPurgecss = function (options = {}) {
}
},
};
};
}

export default pluginPurgecss;
export default pluginPurgeCSS;
13 changes: 10 additions & 3 deletions packages/rollup-plugin-purgecss/src/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
UserDefinedSafelist,
StringRegExpArray,
UserDefinedSafelist,
} from "../../../purgecss/src/types/index";

export interface RawContent<T = string> {
Expand All @@ -16,18 +16,25 @@ export interface Extractors {
extractor: ExtractorFunction;
}

type OutputFunction = (css: string, styles: string[]) => void;

export interface UserDefinedOptions {
content?: Array<string | RawContent>;
content: Array<string | RawContent>;
contentFunction?: (sourceFile: string) => Array<string | RawContent>;
defaultExtractor?: ExtractorFunction;
extractors?: Array<Extractors>;
fontFace?: boolean;
keyframes?: boolean;
output?: string;
output?: string | OutputFunction | boolean;
rejected?: boolean;
stdin?: boolean;
stdout?: boolean;
variables?: boolean;
safelist?: UserDefinedSafelist;
blocklist?: StringRegExpArray;

insert?: boolean;
include?: string | RegExp | (string | RegExp)[];
exclude?: string | RegExp | (string | RegExp)[];
dest?: string;
}
6 changes: 5 additions & 1 deletion scripts/build.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import typescript from "@wessberg/rollup-plugin-ts";
import path from "path";
import { rollup } from "rollup";
import { terser } from "rollup-plugin-terser";
import typescript from "@wessberg/rollup-plugin-ts";

const packagesDirectory = path.resolve(__dirname, "./../packages");

Expand All @@ -25,6 +25,10 @@ const packages = [
name: "purgecss-webpack-plugin",
external: ["fs", "path", "purgecss", "webpack", "webpack-sources"],
},
{
name: "rollup-plugin-purgecss",
external: ["fs", "rollup-pluginutils", "purgecss"],
},
{
name: "gulp-purgecss",
external: ["through2", "plugin-error", "purgecss", "glob"],
Expand Down

0 comments on commit d0235a6

Please sign in to comment.