diff --git a/packages/webpack-uni-mp-loader/lib/babel/plugin-dynamic-import.js b/packages/webpack-uni-mp-loader/lib/babel/plugin-dynamic-import.js index ec7f4391efbede1496697b75bcc16bba63b5e4e6..79bc3155de85fd448dc494c311a6baf25e2d5bcf 100644 --- a/packages/webpack-uni-mp-loader/lib/babel/plugin-dynamic-import.js +++ b/packages/webpack-uni-mp-loader/lib/babel/plugin-dynamic-import.js @@ -1,23 +1,36 @@ const t = require('@babel/types') const babelTemplate = require('@babel/template').default -const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, { - preserveComments: true, - plugins: [ - 'dynamicImport' - ] -}) +// const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, { +// preserveComments: true, +// plugins: [ +// 'dynamicImport' +// ] +// }) +// 已废弃,@vue/cli-plugin-babel@4 增加了 dynamic import 转换 // var test = ()=>import(/* webpackChunkName: "components/test" */'../../components/test') -function getDynamicImport (name, source, chunkName) { - const stringLiteral = t.stringLiteral(source) - const dynamicImportComment = { - type: 'CommentBlock', - value: `webpackChunkName: "${chunkName}"` - } - stringLiteral.leadingComments = [dynamicImportComment] - return buildDynamicImport({ +// function getDynamicImport (name, source, chunkName) { +// const stringLiteral = t.stringLiteral(source) +// const dynamicImportComment = { +// type: 'CommentBlock', +// value: `webpackChunkName: "${chunkName}"` +// } +// stringLiteral.leadingComments = [dynamicImportComment] +// return buildDynamicImport({ +// IMPORT_NAME: t.identifier(name), +// IMPORT_SOURCE: stringLiteral +// }) +// } +// var test = function(resolve) {require.ensure([], () => resolve(require('../../components/test')),'components/test')} +const buildRequireEnsure = babelTemplate( + `var IMPORT_NAME = function(){require.ensure([],()=>resolve(require(IMPORT_SOURCE)),CHUNK_NAME)}` +) + +function getRequireEnsure (name, source, chunkName) { + return buildRequireEnsure({ IMPORT_NAME: t.identifier(name), - IMPORT_SOURCE: stringLiteral + IMPORT_SOURCE: t.stringLiteral(source), + CHUNK_NAME: t.stringLiteral(chunkName) }) } @@ -30,7 +43,7 @@ module.exports = function ({ const dynamicImport = state.opts.dynamicImports[path.node.source.value] if (dynamicImport) { path.insertBefore( - getDynamicImport( + getRequireEnsure( path.node.specifiers[0].local.name, dynamicImport.source, dynamicImport.chunkName