92 lines
1.9 KiB
Plaintext
92 lines
1.9 KiB
Plaintext
import packageJson from '../../../../package.json'
|
|
import browserslist from 'browserslist'
|
|
import { Result } from 'postcss'
|
|
|
|
import {
|
|
// @ts-ignore
|
|
lazyPostcss,
|
|
|
|
// @ts-ignore
|
|
lazyPostcssImport,
|
|
|
|
// @ts-ignore
|
|
lazyCssnano,
|
|
|
|
// @ts-ignore
|
|
} from '../../../../peers/index'
|
|
|
|
export function lazyLightningCss() {
|
|
// TODO: Make this lazy/bundled
|
|
return require('lightningcss')
|
|
}
|
|
|
|
let lightningCss
|
|
|
|
function loadLightningCss() {
|
|
if (lightningCss) {
|
|
return lightningCss
|
|
}
|
|
|
|
// Try to load a local version first
|
|
try {
|
|
return (lightningCss = require('lightningcss'))
|
|
} catch {}
|
|
|
|
return (lightningCss = lazyLightningCss())
|
|
}
|
|
|
|
export async function lightningcss(shouldMinify: boolean, result: Result) {
|
|
let css = loadLightningCss()
|
|
|
|
try {
|
|
let transformed = css.transform({
|
|
filename: result.opts.from || 'input.css',
|
|
code: Buffer.from(result.css, 'utf-8'),
|
|
minify: shouldMinify,
|
|
sourceMap: !!result.map,
|
|
inputSourceMap: result.map ? result.map.toString() : undefined,
|
|
targets: css.browserslistToTargets(browserslist(packageJson.browserslist)),
|
|
drafts: {
|
|
nesting: true,
|
|
},
|
|
})
|
|
|
|
return Object.assign(result, {
|
|
css: transformed.code.toString('utf8'),
|
|
map: result.map
|
|
? Object.assign(result.map, {
|
|
toString() {
|
|
return transformed.map.toString()
|
|
},
|
|
})
|
|
: result.map,
|
|
})
|
|
} catch (err) {
|
|
console.error('Unable to use Lightning CSS. Using raw version instead.')
|
|
console.error(err)
|
|
|
|
return result
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @returns {import('postcss')}
|
|
*/
|
|
export function loadPostcss() {
|
|
// Try to load a local `postcss` version first
|
|
try {
|
|
return require('postcss')
|
|
} catch {}
|
|
|
|
return lazyPostcss()
|
|
}
|
|
|
|
export function loadPostcssImport() {
|
|
// Try to load a local `postcss-import` version first
|
|
try {
|
|
return require('postcss-import')
|
|
} catch {}
|
|
|
|
return lazyPostcssImport()
|
|
}
|