init
This commit is contained in:
85
node_modules/purgecss/README.md
generated
vendored
Normal file
85
node_modules/purgecss/README.md
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
# PurgeCSS
|
||||
|
||||
[](https://www.npmjs.com/package/purgecss)
|
||||

|
||||

|
||||

|
||||
[](https://coveralls.io/github/FullHuman/purgecss?branch=main)
|
||||
|
||||
<p align="center">
|
||||
<img src="https://i.imgur.com/UEiUiJ0.png" height="200" width="200" alt="PurgeCSS logo"/>
|
||||
</p>
|
||||
|
||||
## What is PurgeCSS?
|
||||
|
||||
When you are building a website, chances are that you are using a css framework like Bootstrap, Materializecss, Foundation, etc... But you will only use a small set of the framework and a lot of unused css styles will be included.
|
||||
|
||||
This is where PurgeCSS comes into play. PurgeCSS analyzes your content and your css files. Then it matches the selectors used in your files with the one in your content files. It removes unused selectors from your css, resulting in smaller css files.
|
||||
|
||||
## Sponsors 🥰
|
||||
|
||||
[<img src="https://avatars0.githubusercontent.com/u/67109815?v=4" height="85" style="margin-right: 10px">](https://tailwindcss.com)
|
||||
[<img src="https://avatars.githubusercontent.com/u/6852555?&v=4" height="85">](https://vertistudio.com/)
|
||||
|
||||
## Documentation
|
||||
|
||||
You can find the PurgeCSS documentation on [this website](https://purgecss.com).
|
||||
|
||||
### Table of Contents
|
||||
|
||||
#### PurgeCSS
|
||||
|
||||
- [Configuration](https://purgecss.com/configuration.html)
|
||||
- [Command Line Interface](https://purgecss.com/CLI.html)
|
||||
- [Programmatic API](https://purgecss.com/api.html)
|
||||
- [Safelisting](https://purgecss.com/safelisting.html)
|
||||
- [Extractors](https://purgecss.com/extractors.html)
|
||||
- [Comparison](https://purgecss.com/comparison.html)
|
||||
|
||||
#### Plugins
|
||||
|
||||
- [PostCSS](https://purgecss.com/plugins/postcss.html)
|
||||
- [Webpack](https://purgecss.com/plugins/webpack.html)
|
||||
- [Gulp](https://purgecss.com/plugins/gulp.html)
|
||||
- [Grunt](https://purgecss.com/plugins/grunt.html)
|
||||
- [Gatsby](https://purgecss.com/plugins/gatsby.html)
|
||||
|
||||
#### Guides
|
||||
|
||||
- [Vue.js](https://purgecss.com/guides/vue.html)
|
||||
- [Nuxt.js](https://purgecss.com/guides/nuxt.html)
|
||||
- [React.js](https://purgecss.com/guides/react.html)
|
||||
- [Next.js](https://purgecss.com/guides/next.html)
|
||||
- [Razzle](https://purgecss.com/guides/razzle.html)
|
||||
|
||||
## Getting Started
|
||||
|
||||
#### Installation
|
||||
|
||||
```
|
||||
npm i --save-dev purgecss
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import PurgeCSS from 'purgecss'
|
||||
const purgeCSSResults = await new PurgeCSS().purge({
|
||||
content: ['**/*.html'],
|
||||
css: ['**/*.css']
|
||||
})
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Please read [CONTRIBUTING.md](./../../CONTRIBUTING.md) for details on our code of
|
||||
conduct, and the process for submitting pull requests to us.
|
||||
|
||||
## Versioning
|
||||
|
||||
PurgeCSS use [SemVer](http://semver.org/) for versioning.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](./../../LICENSE) file
|
||||
for details.
|
||||
2
node_modules/purgecss/bin/purgecss.js
generated
vendored
Executable file
2
node_modules/purgecss/bin/purgecss.js
generated
vendored
Executable file
File diff suppressed because one or more lines are too long
509
node_modules/purgecss/lib/purgecss.d.ts
generated
vendored
Normal file
509
node_modules/purgecss/lib/purgecss.d.ts
generated
vendored
Normal file
@@ -0,0 +1,509 @@
|
||||
/**
|
||||
* Core package of PurgeCSS
|
||||
*
|
||||
* Contains the core methods to analyze the files, remove unused CSS.
|
||||
*
|
||||
* @packageDocumentation
|
||||
*/
|
||||
|
||||
import * as postcss from 'postcss';
|
||||
|
||||
/* Excluded from this release type: AtRules */
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type ComplexSafelist = {
|
||||
standard?: StringRegExpArray;
|
||||
/**
|
||||
* You can safelist selectors and their children based on a regular
|
||||
* expression with `safelist.deep`
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* const purgecss = await new PurgeCSS().purge({
|
||||
* content: [],
|
||||
* css: [],
|
||||
* safelist: {
|
||||
* deep: [/red$/]
|
||||
* }
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
* In this example, selectors such as `.bg-red .child-of-bg` will be left
|
||||
* in the final CSS, even if `child-of-bg` is not found.
|
||||
*
|
||||
*/
|
||||
deep?: RegExp[];
|
||||
greedy?: RegExp[];
|
||||
variables?: StringRegExpArray;
|
||||
keyframes?: StringRegExpArray;
|
||||
};
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare const defaultOptions: Options;
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type ExtractorFunction<T = string> = (content: T) => ExtractorResult;
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type ExtractorResult = ExtractorResultDetailed | string[];
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare interface ExtractorResultDetailed {
|
||||
attributes: {
|
||||
names: string[];
|
||||
values: string[];
|
||||
};
|
||||
classes: string[];
|
||||
ids: string[];
|
||||
tags: string[];
|
||||
undetermined: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare class ExtractorResultSets {
|
||||
private undetermined;
|
||||
private attrNames;
|
||||
private attrValues;
|
||||
private classes;
|
||||
private ids;
|
||||
private tags;
|
||||
constructor(er: ExtractorResult);
|
||||
merge(that: ExtractorResult | ExtractorResultSets): this;
|
||||
hasAttrName(name: string): boolean;
|
||||
private someAttrValue;
|
||||
hasAttrPrefix(prefix: string): boolean;
|
||||
hasAttrSuffix(suffix: string): boolean;
|
||||
hasAttrSubstr(substr: string): boolean;
|
||||
hasAttrValue(value: string): boolean;
|
||||
hasClass(name: string): boolean;
|
||||
hasId(id: string): boolean;
|
||||
hasTag(tag: string): boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare interface Extractors {
|
||||
extensions: string[];
|
||||
extractor: ExtractorFunction;
|
||||
}
|
||||
|
||||
/* Excluded from this release type: IgnoreType */
|
||||
|
||||
/**
|
||||
* Merge two extractor selectors
|
||||
*
|
||||
* @param extractorSelectorsA - extractor selectors A
|
||||
* @param extractorSelectorsB - extractor selectors B
|
||||
* @returns the merged extractor result sets
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare function mergeExtractorSelectors(...extractors: (ExtractorResultDetailed | ExtractorResultSets)[]): ExtractorResultSets;
|
||||
|
||||
/**
|
||||
* Options used by PurgeCSS to remove unused CSS
|
||||
* Those options are used internally
|
||||
* @see {@link UserDefinedOptions} for the options defined by the user
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare interface Options {
|
||||
/**
|
||||
* You can specify content that should be analyzed by PurgeCSS with an
|
||||
* array of filenames or globs. The files can be HTML, Pug, Blade, etc.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* await new PurgeCSS().purge({
|
||||
* content: ['index.html', '*.js', '*.html', '*.vue'],
|
||||
* css: ['css/app.css']
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
* PurgeCSS also works with raw content. To do this, you need to pass an
|
||||
* object with the `raw` property instead of a filename. To work properly
|
||||
* with custom extractors you need to pass the `extension` property along
|
||||
* with the raw content.
|
||||
*
|
||||
* ```ts
|
||||
* await new PurgeCSS().purge({
|
||||
* content: [
|
||||
* {
|
||||
* raw: '<html><body><div class="app"></div></body></html>',
|
||||
* extension: 'html'
|
||||
* },
|
||||
* '*.js',
|
||||
* '*.html',
|
||||
* '*.vue'
|
||||
* ],
|
||||
* css: [
|
||||
* {
|
||||
* raw: 'body { margin: 0 }'
|
||||
* },
|
||||
* 'css/app.css'
|
||||
* ]
|
||||
* })
|
||||
* ```
|
||||
*/
|
||||
content: Array<string | RawContent>;
|
||||
/**
|
||||
* Similar to content, you can specify css that should be processed by
|
||||
* PurgeCSS with an array of filenames or globs
|
||||
*/
|
||||
css: Array<string | RawCSS>;
|
||||
defaultExtractor: ExtractorFunction;
|
||||
extractors: Array<Extractors>;
|
||||
/**
|
||||
* If there are any unused \@font-face rules in your css, you can remove
|
||||
* them by setting the `fontFace` option to `true`.
|
||||
*
|
||||
* @defaultValue `false`
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* await new PurgeCSS().purge({
|
||||
* content: ['index.html', '*.js', '*.html', '*.vue'],
|
||||
* css: ['css/app.css'],
|
||||
* fontFace: true
|
||||
* })
|
||||
* ```
|
||||
*/
|
||||
fontFace: boolean;
|
||||
keyframes: boolean;
|
||||
output?: string;
|
||||
rejected: boolean;
|
||||
rejectedCss: boolean;
|
||||
/** {@inheritDoc postcss#SourceMapOptions} */
|
||||
sourceMap: boolean | (postcss.SourceMapOptions & {
|
||||
to?: string;
|
||||
});
|
||||
stdin: boolean;
|
||||
stdout: boolean;
|
||||
variables: boolean;
|
||||
/**
|
||||
* You can indicate which selectors are safe to leave in the final CSS.
|
||||
* This can be accomplished with the option safelist.
|
||||
*/
|
||||
safelist: Required<ComplexSafelist>;
|
||||
/**
|
||||
* Blocklist will block the CSS selectors from appearing in the final
|
||||
* output CSS. The selectors will be removed even when they are seen
|
||||
* as used by PurgeCSS.
|
||||
*/
|
||||
blocklist: StringRegExpArray;
|
||||
/**
|
||||
* If you provide globs for the content parameter, you can use this option
|
||||
* to exclude certain files or folders that would otherwise be scanned.
|
||||
* Pass an array of globs matching items that should be excluded.
|
||||
* (Note: this option has no effect if content is not globs.)
|
||||
*/
|
||||
skippedContentGlobs: Array<string>;
|
||||
/**
|
||||
* Option to add custom CSS attribute selectors like "aria-selected",
|
||||
* "data-selected", ...etc.
|
||||
*/
|
||||
dynamicAttributes: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type PostCSSRoot = postcss.Root;
|
||||
|
||||
/**
|
||||
* Class used to instantiate PurgeCSS and can then be used
|
||||
* to purge CSS files.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* await new PurgeCSS().purge({
|
||||
* content: ['index.html'],
|
||||
* css: ['css/app.css']
|
||||
* })
|
||||
* ```
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare class PurgeCSS {
|
||||
private ignore;
|
||||
private atRules;
|
||||
private usedAnimations;
|
||||
private usedFontFaces;
|
||||
selectorsRemoved: Set<string>;
|
||||
removedNodes: postcss.Node[];
|
||||
variablesStructure: VariablesStructure;
|
||||
options: Options;
|
||||
private collectDeclarationsData;
|
||||
/**
|
||||
* Get the extractor corresponding to the extension file
|
||||
* @param filename - Name of the file
|
||||
* @param extractors - Array of extractors definition
|
||||
*/
|
||||
private getFileExtractor;
|
||||
/**
|
||||
* Extract the selectors present in the files using a PurgeCSS extractor
|
||||
*
|
||||
* @param files - Array of files path or glob pattern
|
||||
* @param extractors - Array of extractors
|
||||
*/
|
||||
extractSelectorsFromFiles(files: string[], extractors: Extractors[]): Promise<ExtractorResultSets>;
|
||||
/**
|
||||
* Extract the selectors present in the passed string using a PurgeCSS extractor
|
||||
*
|
||||
* @param content - Array of content
|
||||
* @param extractors - Array of extractors
|
||||
*/
|
||||
extractSelectorsFromString(content: RawContent[], extractors: Extractors[]): Promise<ExtractorResultSets>;
|
||||
/**
|
||||
* Evaluate at-rule and register it for future reference
|
||||
* @param node - node of postcss AST
|
||||
*/
|
||||
private evaluateAtRule;
|
||||
/**
|
||||
* Evaluate css selector and decide if it should be removed or not
|
||||
*
|
||||
* @param node - node of postcss AST
|
||||
* @param selectors - selectors used in content files
|
||||
*/
|
||||
private evaluateRule;
|
||||
/**
|
||||
* Get the purged version of the css based on the files
|
||||
*
|
||||
* @param cssOptions - css options, files or raw strings
|
||||
* @param selectors - set of extracted css selectors
|
||||
*/
|
||||
getPurgedCSS(cssOptions: Array<string | RawCSS>, selectors: ExtractorResultSets): Promise<ResultPurge[]>;
|
||||
/**
|
||||
* Check if the keyframe is safelisted with the option safelist keyframes
|
||||
*
|
||||
* @param keyframesName - name of the keyframe animation
|
||||
*/
|
||||
private isKeyframesSafelisted;
|
||||
/**
|
||||
* Check if the selector is blocklisted with the option blocklist
|
||||
*
|
||||
* @param selector - css selector
|
||||
*/
|
||||
private isSelectorBlocklisted;
|
||||
/**
|
||||
* Check if the selector is safelisted with the option safelist standard
|
||||
*
|
||||
* @param selector - css selector
|
||||
*/
|
||||
private isSelectorSafelisted;
|
||||
/**
|
||||
* Check if the selector is safelisted with the option safelist deep
|
||||
*
|
||||
* @param selector - selector
|
||||
*/
|
||||
private isSelectorSafelistedDeep;
|
||||
/**
|
||||
* Check if the selector is safelisted with the option safelist greedy
|
||||
*
|
||||
* @param selector - selector
|
||||
*/
|
||||
private isSelectorSafelistedGreedy;
|
||||
/**
|
||||
* Remove unused CSS
|
||||
*
|
||||
* @param userOptions - PurgeCSS options or path to the configuration file
|
||||
* @returns an array of object containing the filename and the associated CSS
|
||||
*
|
||||
* @example Using a configuration file named purgecss.config.js
|
||||
* ```ts
|
||||
* const purgeCSSResults = await new PurgeCSS().purge()
|
||||
* ```
|
||||
*
|
||||
* @example Using a custom path to the configuration file
|
||||
* ```ts
|
||||
* const purgeCSSResults = await new PurgeCSS().purge('./purgecss.config.js')
|
||||
* ```
|
||||
*
|
||||
* @example Using the PurgeCSS options
|
||||
* ```ts
|
||||
* const purgeCSSResults = await new PurgeCSS().purge({
|
||||
* content: ['index.html', '**\/*.js', '**\/*.html', '**\/*.vue'],
|
||||
* css: ['css/app.css']
|
||||
* })
|
||||
* ```
|
||||
*/
|
||||
purge(userOptions: UserDefinedOptions | string | undefined): Promise<ResultPurge[]>;
|
||||
/**
|
||||
* Remove unused CSS variables
|
||||
*/
|
||||
removeUnusedCSSVariables(): void;
|
||||
/**
|
||||
* Remove unused font-faces
|
||||
*/
|
||||
removeUnusedFontFaces(): void;
|
||||
/**
|
||||
* Remove unused keyframes
|
||||
*/
|
||||
removeUnusedKeyframes(): void;
|
||||
/**
|
||||
* Transform a selector node into a string
|
||||
*/
|
||||
private getSelectorValue;
|
||||
/**
|
||||
* Determine if the selector should be kept, based on the selectors found in the files
|
||||
*
|
||||
* @param selector - set of css selectors found in the content files or string
|
||||
* @param selectorsFromExtractor - selectors in the css rule
|
||||
*
|
||||
* @returns true if the selector should be kept in the processed CSS
|
||||
*/
|
||||
private shouldKeepSelector;
|
||||
/**
|
||||
* Walk through the CSS AST and remove unused CSS
|
||||
*
|
||||
* @param root - root node of the postcss AST
|
||||
* @param selectors - selectors used in content files
|
||||
*/
|
||||
walkThroughCSS(root: PostCSSRoot, selectors: ExtractorResultSets): void;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare interface RawContent<T = string> {
|
||||
extension: string;
|
||||
raw: T;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare interface RawCSS {
|
||||
raw: string;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare interface ResultPurge {
|
||||
css: string;
|
||||
/**
|
||||
* sourceMap property will be empty if
|
||||
* {@link UserDefinedOptions.sourceMap} inline is not set to false, as the
|
||||
* source map will be contained within the text of ResultPurge.css
|
||||
*/
|
||||
sourceMap?: string;
|
||||
rejectedCss?: string;
|
||||
file?: string;
|
||||
rejected?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the configuration file from the path
|
||||
*
|
||||
* @param configFile - Path of the config file
|
||||
* @returns The options from the configuration file
|
||||
*
|
||||
* @throws Error
|
||||
* This exception is thrown if the configuration file was not imported
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare function setOptions(configFile?: string): Promise<Options>;
|
||||
|
||||
/**
|
||||
* Format the user defined safelist into a standardized safelist object
|
||||
*
|
||||
* @param userDefinedSafelist - the user defined safelist
|
||||
* @returns the formatted safelist object that can be used in the PurgeCSS options
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare function standardizeSafelist(userDefinedSafelist?: UserDefinedSafelist): Required<ComplexSafelist>;
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type StringRegExpArray = Array<RegExp | string>;
|
||||
|
||||
/**
|
||||
* Options used by PurgeCSS to remove unused CSS
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export declare interface UserDefinedOptions {
|
||||
/** {@inheritDoc Options.content} */
|
||||
content: Array<string | RawContent>;
|
||||
/** {@inheritDoc Options.css} */
|
||||
css: Array<string | RawCSS>;
|
||||
/** {@inheritDoc Options.defaultExtractor} */
|
||||
defaultExtractor?: ExtractorFunction;
|
||||
/** {@inheritDoc Options.extractors} */
|
||||
extractors?: Array<Extractors>;
|
||||
/** {@inheritDoc Options.fontFace} */
|
||||
fontFace?: boolean;
|
||||
/** {@inheritDoc Options.keyframes} */
|
||||
keyframes?: boolean;
|
||||
/** {@inheritDoc Options.output} */
|
||||
output?: string;
|
||||
/** {@inheritDoc Options.rejected} */
|
||||
rejected?: boolean;
|
||||
/** {@inheritDoc Options.rejectedCss} */
|
||||
rejectedCss?: boolean;
|
||||
/** {@inheritDoc Options.sourceMap } */
|
||||
sourceMap?: boolean | (postcss.SourceMapOptions & {
|
||||
to?: string;
|
||||
});
|
||||
/** {@inheritDoc Options.stdin} */
|
||||
stdin?: boolean;
|
||||
/** {@inheritDoc Options.stdout} */
|
||||
stdout?: boolean;
|
||||
/** {@inheritDoc Options.variables} */
|
||||
variables?: boolean;
|
||||
/** {@inheritDoc Options.safelist} */
|
||||
safelist?: UserDefinedSafelist;
|
||||
/** {@inheritDoc Options.blocklist} */
|
||||
blocklist?: StringRegExpArray;
|
||||
/** {@inheritDoc Options.skippedContentGlobs} */
|
||||
skippedContentGlobs?: Array<string>;
|
||||
/** {@inheritDoc Options.dynamicAttributes} */
|
||||
dynamicAttributes?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export declare type UserDefinedSafelist = StringRegExpArray | ComplexSafelist;
|
||||
|
||||
declare class VariableNode {
|
||||
nodes: VariableNode[];
|
||||
value: postcss.Declaration;
|
||||
isUsed: boolean;
|
||||
constructor(declaration: postcss.Declaration);
|
||||
}
|
||||
|
||||
declare class VariablesStructure {
|
||||
nodes: Map<string, VariableNode[]>;
|
||||
usedVariables: Set<string>;
|
||||
safelist: StringRegExpArray;
|
||||
addVariable(declaration: postcss.Declaration): void;
|
||||
addVariableUsage(declaration: postcss.Declaration, matchedVariables: RegExpMatchArray[]): void;
|
||||
addVariableUsageInProperties(matchedVariables: RegExpMatchArray[]): void;
|
||||
setAsUsed(variableName: string): void;
|
||||
removeUnused(): void;
|
||||
isVariablesSafelisted(variable: string): boolean;
|
||||
}
|
||||
|
||||
export { }
|
||||
1
node_modules/purgecss/lib/purgecss.esm.js
generated
vendored
Normal file
1
node_modules/purgecss/lib/purgecss.esm.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/purgecss/lib/purgecss.js
generated
vendored
Normal file
1
node_modules/purgecss/lib/purgecss.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
58
node_modules/purgecss/package.json
generated
vendored
Normal file
58
node_modules/purgecss/package.json
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "purgecss",
|
||||
"version": "5.0.0",
|
||||
"description": "Remove unused css selectors",
|
||||
"author": "Ffloriel",
|
||||
"homepage": "https://purgecss.com",
|
||||
"keywords": [
|
||||
"optimize",
|
||||
"optimization",
|
||||
"remove",
|
||||
"unused",
|
||||
"css",
|
||||
"html",
|
||||
"rules",
|
||||
"purge",
|
||||
"uncss",
|
||||
"purify"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "lib/purgecss.js",
|
||||
"module": "./lib/purgecss.esm.js",
|
||||
"types": "./lib/purgecss.d.ts",
|
||||
"bin": {
|
||||
"purgecss": "bin/purgecss.js"
|
||||
},
|
||||
"directories": {
|
||||
"lib": "lib",
|
||||
"test": "__tests__"
|
||||
},
|
||||
"files": [
|
||||
"bin",
|
||||
"lib"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/FullHuman/purgecss.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "ts-node build.ts",
|
||||
"test": "jest"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": "^9.0.0",
|
||||
"glob": "^8.0.3",
|
||||
"postcss": "^8.4.4",
|
||||
"postcss-selector-parser": "^6.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/glob": "^7.2.0"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/FullHuman/purgecss/issues"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public",
|
||||
"registry": "https://registry.npmjs.org/"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user