From 17c2e2929effc4b1e9f45a2a9a07a050665d6d3e Mon Sep 17 00:00:00 2001 From: mister-ben <1676039+mister-ben@users.noreply.github.com> Date: Mon, 22 Jul 2024 00:51:11 +0200 Subject: [PATCH] add eclude line plugin --- build/rollup-exclude-lines.js | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 build/rollup-exclude-lines.js 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, ''); + } + }; +}