rollup-plugin-external-import v1.0.9
rollup-plugin-external-import
A plugin of rollup or vite , help you get external import support in vue3
Example
import _vue from 'vue';
import { createRouter, createWebHistory } from "vue-router"convert like this :
var _vue = Vue
var {createRouter , createWebHistory} = VueRouterGetting Start
npm install rollup-plugin-external-import -Dimport { ExternalImportResolver } from 'rollup-plugin-external-import';
const src = `
import _vue from 'vue';
`
const code = ExternalImportResolver({
content: src,
options: [
{
importName: 'vue',
variableName: 'Vue',
}
]
})
console.log(code);
// var _vue = VueUse in vite
index.html: import your external CDN resource
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- vue -->
<script src="https://unpkg.com/vue@3.2.6/dist/vue.global.prod.js"></script>
<!-- vue router -->
<script src="https://unpkg.com/vue-router@4.0.3/dist/vue-router.global.js"></script>
<!-- ant desgin vue -->
<link href="https://cdn.jsdelivr.net/npm/ant-design-vue@2.2.5/dist/antd.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/ant-design-vue@2.2.5/dist/antd.min.js"></script>
<!-- axios -->
<script src="https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script>
<title>xxx</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>vite.config.ts: add ExternalImport plugin
import { ExternalImport, VueImport, VueRouterImport, AntDesignVueImport } from 'rollup-plugin-external-import';
export default defineConfig({
plugins: [
vue(),
// like this
ExternalImport({
options: [
VueImport,
VueRouterImport,
AntDesignVueImport,
{
importName: "axios",
variableName: "windos.axios"
}
]
}),
],
})shell: run or build your project
npm run dev
npm run buildAPI
interface ExternalImportOption
conver option ,
import name same as package name
variable name must have a
windowprefix in vue3, like :window.Vue
importName:stringimport package name , likevuevue-routervuexvariableName:stringexternal variable name , likeVueVueRouterVuexaliasHandler?: default :AliasImportHandlerdefaultHandler?: default :DefaultImportHandler
function ImportAnalyzer
conver core , content can be a file content or just an express
content:string, conver contentoptions:Array<ExternalImportOption>conver options
function ExternalImport
this function use in vite
fileRegexp?:RegExpuse in match file name ,default:/(\.ts$|\.js$|\.vue$)/options:Array<ExternalImportOption>,conver config
Default ExternalImportOption
VueImport: { importName: 'vue',variableName: 'window.Vue' }
VueRouterImport { importName: 'vue-router', variableName: 'window.VueRouter' }
VuexImport: { importName: 'vuex', variableName: 'window.Vuex'}
AntDesignVueImport: { importName: 'ant-design-vue', variableName: 'window.antd'}
ElementUIImport: { importName: 'element-ui', variableName: 'window.ELEMENT'}
ElementPlusImport : {importName: 'element-plus', variableName: 'window.ElementPlus'}