# 2023-04 vite

# 一、在 vite 项目引入 jquery

# 方法一,通过 script 全局引入

  1. 在 html 增加 script
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Vite-vue3</title>
  <script src="/public/jquery.min.js"></script>
</head>
<body>
  <div id="app"></div>
  <script type="module" src="/src/main.js"></script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  1. 配置 eslint 和 tsconfig,避免报错

// .eslintrc.cjs

module.exports = {
  env: {
    jquery: true,
  },
}
1
2
3
4
5

先执行 npm i @types/jquery -D,再修改配置

// tsconfig.json

{
  "compilerOptions": {
    "types": ["jquery"]
  }
}
1
2
3
4
5
  1. 在代码里直接使用 $

# 方法二、使用插件 @rollup/plugin-inject 注入 jquery

首先,安装 jquery、@rollup/plugin-inject

npm i jquery
npm i @rollup/plugin-inject -D
1
2

修改 vite.config.js 配置

import {defineConfig} from 'vite';
import inject from '@rollup/plugin-inject';

export default defineConfig({
  plugins:[
    inject({
      $: 'jquery', // 会自动导入 node_modules 中的 jquery
      jQuery: 'jquery',
      'window.jQuery': 'jquery'
    })
  ]
})
1
2
3
4
5
6
7
8
9
10
11
12

# 参考

vite 10541 (opens new window)

# 二、vite 项目第三方库依赖了全局 jquery

# 问题

由于第三方库使用了import $ from 'jquery',而且打包的时候配置了 external,然后在打包后的 mjs 中,就会保留 import。项目里面如果想使用 script 全局引入的方式就会导致 无法 import jquery,因为找不到。

# 解决

一、先安装 rollup-plugin-external-globals,外部全局变量引入插件。eslint/ts 报错处理参考前面。

npm i rollup-plugin-external-globals -D
1

二、修改 vite.config.ts

import { defineConfig } from 'vite'
import externalGlobals from 'rollup-plugin-external-globals'

export default defineConfig({
  build: {
    rollupOptions: {
      plugins: [
        externalGlobals({
          jquery: '$',
        }),
      ],
    },
  },
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 参考

上次更新: 4/20/2023, 4:41:17 PM