diff --git a/build/rollup-exclude-lines.js b/build/rollup-exclude-lines.js new file mode 100644 index 0000000000..a9304f76a5 --- /dev/null +++ b/build/rollup-exclude-lines.js @@ -0,0 +1,41 @@ +/** + * Remove parts of files from outputs. Everything between a pair of `/* start-delete-from-build *\u002f` + * and `/* end-delete-from-build *\u002f` comments + * + * Based on https://github.com/se-panfilov/rollup-plugin-strip-code + */ + +import { createFilter } from '@rollup/pluginutils'; + +const START_COMMENT = 'start-delete-from-build'; +const END_COMMENT = 'end-delete-from-build'; + +/** + * Remove lines of code surrounded by comments + * + * @param {Object} [options] Options + * @param {string} [options.include] Files to inlcude + * @param {string} [options.exclude] Files to exclude + * @param {string} [options.startComment] Starting keywork, default start-delete-from-build + * @param {string} [options.endComment] Eding keywork, default end-delete-from-build + * @param {RegExp} [options.pattern] Custom regex + * @return void + */ +export default function excludeLines(options = {}) { + // assume that the myPlugin accepts options of `options.include` and `options.exclude` + const filter = createFilter(options.include, options.exclude); + + return { + transform(code, id) { + if (!filter(id)) { + return; + } + + const startComment = options.startComment || START_COMMENT; + const endComment = options.endComment || END_COMMENT; + const defaultPattern = new RegExp(`([\\t ]*\\/\\* ?${startComment} ?\\*\\/)[\\s\\S]*?(\\/\\* ?${endComment} ?\\*\\/[\\t ]*\\n?)`, 'g'); + + return code.replace(options.pattern || defaultPattern, ''); + } + }; +}