2019-11-14 20:52:43 +08:00
|
|
|
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: '' }
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|
2020-03-19 20:24:18 +08:00
|
|
|
}
|