0.0.13 • Published 1 year ago

@marsgames/vite-plugin-cdn-import v0.0.13

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Import modules from CDN with vite plugin

Origin: GitHub tag License

Allows you to specify modules to be introduced in a production environment using a CDN.

This can reduce build time and improve page load speed in production environments.

In addition (added to this fork): allow specifying script mode like "async" | "defer" and updated all related dependencies and extra autoComplete modules

Installation

Install the plugin with npm:

npm install @marsgames/vite-plugin-cdn-import --save-dev

or yarn

yarn add @marsgames/vite-plugin-cdn-import -D

or pnpm

pnpm install @marsgames/vite-plugin-cdn-import --save-dev

Basic Usage

Add it to vite.config.js

// vite.config.js
import react from "@vitejs/plugin-react";
import { Plugin as importToCDN } from '@marsgames/vite-plugin-cdn-import';

export default {
    plugins: [
        importToCDN({
            modules: [
                {
                    name: 'react',
                    var: 'React',
                    path: `umd/react.production.min.js`,
                    mode: "defer"
                },
                {
                    name: 'react-dom',
                    var: 'ReactDOM',
                    path: `umd/react-dom.production.min.js`,
                    mode: "defer"
                },
            ],
        }),
        react()
    ]
}

Use autoComplete

// vite.config.js
import react from "@vitejs/plugin-react";
import { Plugin as importToCDN, autoComplete } from '@marsgames/vite-plugin-cdn-import';

export default {
    plugins: [
        importToCDN({
            modules: [
                autoComplete('react'),
                autoComplete('react-dom')
            ]
        })
        react()
    ]
}

Autocomplete supported modules

"react" | "react-dom" |
"antd" | "ahooks" | "@ant-design/charts" |
"vue" | "vue2" | "@vueuse/shared" |
"@vueuse/core" | "moment" |
"eventemitter3" | "file-saver" |
"browser-md5-file" | "xlsx | "crypto-js" |
"axios" | "lodash" | "localforage" |
"mobx" | "lottie-web",
"i18next" | "react-i18next" | "i18next-browser-languagedetector"

VueUse demo

import vue from '@vitejs/plugin-vue';
import { Plugin as importToCDN, autoComplete } from '@marsgames/vite-plugin-cdn-import';

export default {
    plugins: [
        vue(),
        importToCDN({
            modules: [
                autoComplete('vue'), // vue2 use autoComplete('vue2')
                autoComplete('@vueuse/shared'),
                autoComplete('@vueuse/core')
            ]
        })
    ]
}

Options

NameDescriptionTypeDefault
prodUrlOverrides the global prodUrl, allowing you to specify the CDN location for a specific modulestringhttps://cdn.jsdelivr.net/npm/{name}@{version}/{path}
modulesModules configArray<Module> / Array<(prodUrl:string) => Module>-

Module

NameDescriptionType
nameThe name of the module you want to externalizestring
varA variable that will be assigned to the module in global scope, Rollup requires thisstring
pathSpecify the load path on the CDNstring / string[]
cssYou can alternatively specify multiple style sheets which will be loaded from the CDNstring / string[]
modeSpecify the script attribute ("async" or "defer")string

Other CDN pordUrl

NamepordUrl
unpkg//unpkg.com/{name}@{version}/{path}
cdnjs//cdnjs.cloudflare.com/ajax/libs/{name}/{version}/{path}

Ressources

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago