提交 72f778f5 编写于 作者: fxy060608's avatar fxy060608

fix(cli): compatible with @vue/cli-plugin-babel@4.2.3 #1394

上级 b611f3df
const t = require('@babel/types') const t = require('@babel/types')
const babelTemplate = require('@babel/template').default const babelTemplate = require('@babel/template').default
const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, { // const buildDynamicImport = babelTemplate(`var IMPORT_NAME = ()=>import(IMPORT_SOURCE)`, {
preserveComments: true, // preserveComments: true,
plugins: [ // plugins: [
'dynamicImport' // 'dynamicImport'
] // ]
}) // })
// 已废弃,@vue/cli-plugin-babel@4 增加了 dynamic import 转换
// var test = ()=>import(/* webpackChunkName: "components/test" */'../../components/test') // var test = ()=>import(/* webpackChunkName: "components/test" */'../../components/test')
function getDynamicImport (name, source, chunkName) { // function getDynamicImport (name, source, chunkName) {
const stringLiteral = t.stringLiteral(source) // const stringLiteral = t.stringLiteral(source)
const dynamicImportComment = { // const dynamicImportComment = {
type: 'CommentBlock', // type: 'CommentBlock',
value: `webpackChunkName: "${chunkName}"` // value: `webpackChunkName: "${chunkName}"`
} // }
stringLiteral.leadingComments = [dynamicImportComment] // stringLiteral.leadingComments = [dynamicImportComment]
return buildDynamicImport({ // 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_NAME: t.identifier(name),
IMPORT_SOURCE: stringLiteral IMPORT_SOURCE: t.stringLiteral(source),
CHUNK_NAME: t.stringLiteral(chunkName)
}) })
} }
...@@ -30,7 +43,7 @@ module.exports = function ({ ...@@ -30,7 +43,7 @@ module.exports = function ({
const dynamicImport = state.opts.dynamicImports[path.node.source.value] const dynamicImport = state.opts.dynamicImports[path.node.source.value]
if (dynamicImport) { if (dynamicImport) {
path.insertBefore( path.insertBefore(
getDynamicImport( getRequireEnsure(
path.node.specifiers[0].local.name, path.node.specifiers[0].local.name,
dynamicImport.source, dynamicImport.source,
dynamicImport.chunkName dynamicImport.chunkName
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册