diff --git a/__tests__/core/__fixtures__/ComponentScriptSetup.vue b/__tests__/core/__fixtures__/ComponentScriptSetup.vue new file mode 100644 index 0000000..f5f928d --- /dev/null +++ b/__tests__/core/__fixtures__/ComponentScriptSetup.vue @@ -0,0 +1,10 @@ + + + diff --git a/__tests__/core/__snapshots__/vueScriptSetupExtractor.js.snap b/__tests__/core/__snapshots__/vueScriptSetupExtractor.js.snap new file mode 100644 index 0000000..dd25df6 --- /dev/null +++ b/__tests__/core/__snapshots__/vueScriptSetupExtractor.js.snap @@ -0,0 +1,10 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`core.extractVueScript extract script 1`] = ` +" +/** + * @vue-event {String} foo - Emit foo event + */ + const emit = defineEmits(['foo']) +" +`; diff --git a/__tests__/core/vueScriptSetupExtractor.js b/__tests__/core/vueScriptSetupExtractor.js new file mode 100644 index 0000000..32f5905 --- /dev/null +++ b/__tests__/core/vueScriptSetupExtractor.js @@ -0,0 +1,10 @@ +const path = require('path'); +const extractVueScript = require('../../lib/core/vueScriptExtractor'); + +describe('core.extractVueScript', () => { + const filename = path.join(__dirname, '__fixtures__', 'ComponentScriptSetup.vue'); + + test('extract script', () => { + expect(extractVueScript(filename)).toMatchSnapshot(); + }); +}); diff --git a/lib/core/seekExportDefaultLine.js b/lib/core/seekExportDefaultLine.js index 8bbe262..3e5ad53 100644 --- a/lib/core/seekExportDefaultLine.js +++ b/lib/core/seekExportDefaultLine.js @@ -18,6 +18,10 @@ module.exports = function seekExportDefaultLine(source, filename) { if (inScript && /export\s+default/.test(line)) { return i + 1; // index starts at 0, but file's lines start at 1 } + + if (inScript && //.test(line)) { + return i; + } } return 0; diff --git a/lib/core/vueScriptExtractor.js b/lib/core/vueScriptExtractor.js index 7d501c6..9e36a50 100644 --- a/lib/core/vueScriptExtractor.js +++ b/lib/core/vueScriptExtractor.js @@ -4,7 +4,7 @@ const compiler = require('@vue/compiler-sfc'); module.exports = function extractVueScript(filename) { const source = fs.readFileSync(filename, 'utf8'); const parsedComponent = compiler.parse(source); - const scriptContent = parsedComponent.descriptor.script ? parsedComponent.descriptor.script.content : ''; - + let scriptContent = parsedComponent.descriptor.script ? parsedComponent.descriptor.script.content : null; + scriptContent ??= parsedComponent.descriptor.scriptSetup ? parsedComponent.descriptor.scriptSetup.content : ''; return scriptContent; };