mirror of https://gitee.com/antv-l7/antv-l7
33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
|
import { createFilter } from 'rollup-pluginutils';
|
||
|
|
||
|
// borrow from https://github.com/uber/luma.gl/blob/master/dev-modules/babel-plugin-remove-glsl-comments/index.js#L4-L5
|
||
|
const INLINE_COMMENT_REGEX = /\s*\/\/.*[\n\r]/g;
|
||
|
const BLOCK_COMMENT_REGEX = /\s*\/\*(\*(?!\/)|[^*])*\*\//g;
|
||
|
|
||
|
// 生产环境压缩 GLSL
|
||
|
export default function glsl(include, minify) {
|
||
|
const filter = createFilter(include);
|
||
|
return {
|
||
|
name: 'glsl',
|
||
|
transform(code, id) {
|
||
|
if (!filter(id)) return;
|
||
|
|
||
|
if (minify) {
|
||
|
code = code
|
||
|
.trim() // strip whitespace at the start/end
|
||
|
.replace(/\n+/g, '\n') // collapse multi line breaks
|
||
|
// remove comments
|
||
|
.replace(INLINE_COMMENT_REGEX, '\n')
|
||
|
.replace(BLOCK_COMMENT_REGEX, '')
|
||
|
.replace(/\n\s+/g, '\n') // strip identation
|
||
|
// .replace(/\s?([+-\/*=,])\s?/g, '$1') // strip whitespace around operators
|
||
|
// .replace(/([;\(\),\{\}])\n(?=[^#])/g, '$1'); // strip more line breaks
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
code: `export default ${JSON.stringify(code)};`,
|
||
|
map: { mappings: '' }
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
}
|