@winner-fed/unplugin-vue-setup-extend
v0.0.3
Published
Extending the vue script setup syntactic sugar
Downloads
2
Maintainers
Readme
unplugin-vue-setup-extend
Support <script name>
for Vue script setup.
Install
node version: >=12.0.0
vite version: >=2.0.0
npm i unplugin-vue-setup-extend -D
# or
yarn add unplugin-vue-setup-extend -D
// vite.config.ts
import vueSetupExtend from '@winner-fed/unplugin-vue-setup-extend/vite'
export default defineConfig({
plugins: [
vueSetupExtend({ /* options */ }),
],
})
Example: playground/
// rollup.config.js
import vueSetupExtend from '@winner-fed/unplugin-vue-setup-extend/rollup'
export default {
plugins: [
vueSetupExtend({ /* options */ }),
],
}
// webpack.config.js
module.exports = {
/* ... */
plugins: [
require('@winner-fed/unplugin-vue-setup-extend/webpack').default({ /* options */ })
]
}
// nuxt.config.js
export default {
buildModules: [
['@winner-fed/unplugin-vue-setup-extend/nuxt', { /* options */ }],
],
}
This module works for both Nuxt 2 and Nuxt Vite
// vue.config.js
module.exports = {
configureWebpack: {
plugins: [
require('@winner-fed/unplugin-vue-setup-extend/webpack').default({ /* options */ }),
],
},
}
Note
当 script
标签里不存在任何代码时,@vue/compiler-sfc
转换后的 scriptSetup
为 null
,此种情况不支持转换。
const { parse, compileScript } = require("@vue/compiler-sfc");
const { descriptor } = parse(
`
<template><h1>12312312</h1></template>
<script setup name="App"></script>
`
);
console.log(descriptor);
descriptor
转换后的结果如下:
{
filename: 'anonymous.vue',
source: '\n' +
' <template><h1>12312312</h1></template><script setup name="App"></script>\n',
template: {
type: 'template',
content: '<h1>12312312</h1>',
loc: { source: '<h1>12312312</h1>', start: [Object], end: [Object] },
attrs: {},
ast: {
type: 1,
ns: 0,
tag: 'template',
tagType: 0,
props: [],
isSelfClosing: false,
children: [Array],
loc: [Object],
codegenNode: undefined
},
map: {
version: 3,
sources: [Array],
names: [],
mappings: 'AACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC',
file: 'anonymous.vue',
sourceRoot: '',
sourcesContent: [Array]
}
},
script: null,
scriptSetup: null,
styles: [],
customBlocks: [],
cssVars: [],
slotted: false,
shouldForceReload: [Function: shouldForceReload]
}