@vunk/shared

scriptSetupRE ​

Usage ​

ts
setupHtml = setupHtml.replace(scriptSetupRE, (_, attr1, attr2, code) => {
  const attr = `${attr1} ${attr2}`.trim()
  return [
    `<script setup ${attr}>`,
    ...leadingCode,
    code,
    ...trailingCode,
    '</script>',
  ].filter(Boolean).join('\n')
})

Source ​

ts

/**
 *
 * @description 正则匹配 script setup
 * @link https://github.com/unplugin/unplugin-vue-markdown/blob/825ffc0d780f16297e48b9a27a278d7b72146408/src/core/markdown.ts#L9
 * 
 * @example
 * \`\`\`ts
 * function extractScriptSetup(html: string) {
  const scripts: ScriptMeta[] = []
  html = html.replace(scriptSetupRE, (_, attr1, attr2, code) => {
    scripts.push({
      code,
      attr: `${attr1} ${attr2}`.trim(),
    })
    return ''
  })

  return { html, scripts }
}

 * \`\`\`
 */
export const scriptSetupRE = /<\s*script([^>]*)\bsetup\b([^>]*)>([\s\S]*)<\/script>/mg

regexp/vue/scriptSetupRE.ts