From ebb3fdbc31a25d6428522d2e340a31c9a5b36a5c Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Mon, 1 Mar 2021 18:51:29 +0900 Subject: [PATCH] fix: export default warning --- src/pluginWebpack4.ts | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/pluginWebpack4.ts b/src/pluginWebpack4.ts index 4356e99..18e5585 100644 --- a/src/pluginWebpack4.ts +++ b/src/pluginWebpack4.ts @@ -5,6 +5,7 @@ import webpack from 'webpack' import { ReplaceSource } from 'webpack-sources' import { isFunction, isObject, isRegExp, isString } from '@intlify/shared' const Dependency = require('webpack/lib/Dependency') // eslint-disable-line @typescript-eslint/no-var-requires +const NullFactory = require('webpack/lib/NullFactory') // eslint-disable-line @typescript-eslint/no-var-requires const PLUGIN_ID = 'IntlifyVuePlugin' @@ -44,6 +45,17 @@ class VueComponentDependency extends Dependency { this.statement = statement } + get type() { + return 'harmony export expression' + } + + getExports() { + return { + exports: ['default'], + dependencies: undefined + } + } + updateHash(hash: any) { super.updateHash(hash) const scriptModule = this.script @@ -52,7 +64,7 @@ class VueComponentDependency extends Dependency { (!scriptModule.buildMeta || scriptModule.buildMeta.exportsType)) + '' ) hash.update((scriptModule && scriptModule.id) + '') - const templateModule = this.templa + const templateModule = this.template hash.update( (templateModule && (!templateModule.buildMeta || templateModule.buildMeta.exportsType)) + @@ -164,6 +176,7 @@ function toVueComponentDependency(parser: any, values: InjectionValues) { values, statement ) + // dep.loc = statement.loc parser.state.current.addDependency(dep) return true } @@ -182,11 +195,11 @@ export default class IntlifyVuePlugin implements webpack.Plugin { compiler.hooks.compilation.tap( PLUGIN_ID, (compilation, { normalModuleFactory }) => { - // compilation.dependencyFactories.set( - // // @ts-ignore - // VueComponentDependency, - // new NullFactory() - // ) + compilation.dependencyFactories.set( + // @ts-ignore + VueComponentDependency, + new NullFactory() + ) compilation.dependencyTemplates.set( // @ts-ignore VueComponentDependency, @@ -200,7 +213,10 @@ export default class IntlifyVuePlugin implements webpack.Plugin { parser.hooks.exportExpression.tap( PLUGIN_ID, (statement, declaration) => { - if (declaration.name === 'script') { + if ( + (parser as any).state.module.resource.endsWith('.vue') && + declaration.name === 'script' + ) { // console.log('exportExpression', statement, declaration) return toVueComponentDependency(parser, injections)(statement) }