esbuild-plugin-lit
Version:
Import CSS, SVG, HTML, XLIFF files as tagged-template literals. Optionally minify with esbuild minifier.
30 lines • 1.18 kB
JavaScript
import { AssetLoader } from "./asset-loader.js";
export class CSSLoader extends AssetLoader {
extension = /\.css$/;
constructor(build, options = {}, specifier = "lit", minifier) {
super(build, options, specifier, minifier);
if (options.extension)
this.extension = options.extension;
if (options.transform)
this.transform = options.transform;
this.minify = !!build.initialOptions.minify && options.minify !== false;
this.sourcemap = !!build.initialOptions.sourcemap;
}
async load(input, filename) {
let output = this.transform(input, filename);
let sourcemap = "";
const { code, map } = await this.build.esbuild.transform(output, {
loader: "css",
minify: this.minify,
sourcemap: this.sourcemap,
sourcefile: filename,
});
if (this.sourcemap)
sourcemap = this.toSourceMapURL(map);
output = this.sanitize(code);
return `import { css } from '${this.specifier}';
export const styles = css\`${output}\`;
export default styles;${sourcemap}`;
}
}
//# sourceMappingURL=css-loader.js.map