(program: Command)
| 143 | } |
| 144 | |
| 145 | export async function run(program: Command) { |
| 146 | const options = await getOptions(program); |
| 147 | const { preservePaths, ...purgeOptions } = options; |
| 148 | const purged = await new PurgeCSS().purge(purgeOptions); |
| 149 | |
| 150 | // output results in specified directory |
| 151 | if (options.output) { |
| 152 | if (purged.length === 1 && options.output.endsWith(".css")) { |
| 153 | await writeCSSToFile(options.output, purged[0].css); |
| 154 | return; |
| 155 | } |
| 156 | |
| 157 | for (const purgedResult of purged) { |
| 158 | let outputPath: string; |
| 159 | if (preservePaths && purgedResult?.file) { |
| 160 | // Preserve the folder hierarchy |
| 161 | outputPath = `${options.output}/${purgedResult.file}`; |
| 162 | } else { |
| 163 | // Default behavior: flatten to just the filename |
| 164 | const fileName = purgedResult?.file?.split("/").pop(); |
| 165 | outputPath = `${options.output}/${fileName}`; |
| 166 | } |
| 167 | // Ensure the directory exists |
| 168 | const dir = outputPath.substring(0, outputPath.lastIndexOf("/")); |
| 169 | await fs.promises.mkdir(dir, { recursive: true }); |
| 170 | await writeCSSToFile(outputPath, purgedResult.css); |
| 171 | } |
| 172 | } else { |
| 173 | console.log(JSON.stringify(purged)); |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | export async function main() { |
| 178 | try { |
no test coverage detected