1.0.9 • Published 3 years ago

rollup-plugin-external-import v1.0.9

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 years ago

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} = VueRouter

Getting Start

npm install rollup-plugin-external-import -D
import { 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 = Vue

Use in vite

  1. 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>
  1. 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"
        }
      ]
    }),

  ],
})
  1. shell : run or build your project
npm run dev
npm run build

API

interface ExternalImportOption

conver option ,

import name same as package name

variable name must have a window prefix in vue3, like : window.Vue

  • importName: string import package name , like vue vue-router vuex
  • variableName : string external variable name , like Vue VueRouter Vuex
  • aliasHandler ?: default : AliasImportHandler
  • defaultHandler ?: default : DefaultImportHandler

function ImportAnalyzer

conver core , content can be a file content or just an express

  • content: string, conver content

  • options: Array<ExternalImportOption> conver options

function ExternalImport

this function use in vite

  • fileRegexp ?: RegExp use 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'}

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago