@rollup/plugin-html 详解

本文详细介绍了Rollup的@rollup/plugin-html插件的配置选项,包括文件名、模板、公共路径等,以及如何在配置中指定HTML文件的结构和特性。

@rollup/plugin-html 是 Rollup 的一个插件,用于生成 HTML 文件,并将打包后的 JS 文件引入到 HTML 文件中。

该插件的配置选项如下:

- `fileName`: 指定生成的 HTML 文件的文件名,默认为 `index.html`。
- `template`: 指定 HTML 文件的模板路径,可以是一个本地文件路径或者是一个模板字符串。如果未指定模板,则会使用默认的模板。
- `publicPath`: 指定生成的 HTML 文件中引入 JS 文件的路径,默认为 `/`。
- `title`: 指定生成的 HTML 文件的标题。
- `attributes`: 指定生成的 HTML 文件的 `<html>` 标签上的属性,可以是一个对象或者一个函数。
- `templateParams`: 指定传递给模板的参数,可以是一个对象或者一个函数。
- `inject`: 指定 JS 文件的引入位置,可以是一个字符串或者一个函数。
- `favicon`: 指定生成的 HTML 文件的 favicon 图标的路径。
- `meta`: 指定生成的 HTML 文件的 `<head>` 标签中的 `<meta>` 标签,可以是一个对象或者一个函数。
- `minify`: 指定是否压缩生成的 HTML 文件,默认为 `false`。
- `sourcemap`: 指定是否生成 JS 文件的 sourcemap,默认为 `false`。

示例配置:
```javascript
import { html } from '@rollup/plugin-html';

export default {
  input: 'src/main.js',
  output: {
    file: 'dist/bundle.js',
    format: 'iife',
  },
  plugins: [
    html({
      fileName: 'index.html',
      template: 'src/index.html',
      publicPath: '/',
      title: 'My App',
      attributes: {
        lang: 'en',
      },
      templateParams: {
        APP_VERSION: '1.0.0',
      },
      inject: 'body',
      favicon: 'src/favicon.ico',
      meta: {
        viewport: 'width=device-width, initial-scale=1.0',
      },
      minify: true,
      sourcemap: true,
    }),
  ],
};
```

上述配置会将 `src/index.html` 文件作为模板,生成一个名为 `index.html` 的文件,并将打包后的 JS 文件引入到 HTML 文件的 `<body>` 中。HTML 文件的标题为 "My App",`<html>` 标签上带有 `lang="en"` 属性,模板中的 `APP_VERSION` 参数为 "1.0.0",生成的 HTML 文件的 `<head>` 中带有一个 `<meta>` 标签,指定了视口大小为设备宽度,并且会对生成的 HTML 文件进行压缩和生成 sourcemap 文件。

"dependencies": { "@codemirror/lang-javascript": "^6.1.0", "@codemirror/theme-one-dark": "^6.1.0", "@element-plus/icons-vue": "^2.0.4", "axios": "1.6.5", "codemirror": "^6.0.1", "echarts": "5.3.2", "element-plus": "2.11.5", "js-error-collection": "^1.0.7", "json-editor-vue3": "^1.0.8", "mitt": "3.0.0", "moment-mini": "2.22.1", "nprogress": "0.2.0", "path": "0.12.7", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", "pinia": "^2.3.1", "pinia-plugin-persistedstate": "2.3.0", "screenfull": "^6.0.2", "sortablejs": "^1.15.0", "vue": "^3.5.22", "vue-clipboard3": "^2.0.0", "vue-codemirror": "^6.1.1", "vue-i18n": "9.1.10", "vue-router": "^4.1.5" }, "devDependencies": { "@babel/eslint-parser": "7.16.3", "@originjs/vite-plugin-commonjs": "^1.0.3", "@types/mockjs": "1.0.10", "@types/node": "^17.0.35", "@types/path-browserify": "^1.0.0", "@types/sortablejs": "^1.15.0", "@typescript-eslint/eslint-plugin": "5.30.0", "@typescript-eslint/parser": "5.30.0", "@vitejs/plugin-legacy": "^5.2.0", "@vitejs/plugin-vue": "^5.0.3", "@vitejs/plugin-vue-jsx": "^3.1.0", "@vitest/coverage-c8": "^0.33.0", "@vitest/ui": "^1.2.0", "@vue/cli-plugin-unit-jest": "4.5.17", "@vue/cli-service": "5.0.8", "@vue/test-utils": "^2.0.2", "@vueuse/core": "^8.7.5", "eslint": "8.18.0", "eslint-config-prettier": "8.5.0", "eslint-define-config": "1.5.1", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-jsonc": "^2.3.0", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-prettier": "4.1.0", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unicorn": "^43.0.2", "eslint-plugin-vue": "9.1.1", "husky": "7.0.2", "jsdom": "16.4.0", "jsonc-eslint-parser": "^2.1.0", "majestic": "1.8.1", "mockjs": "1.1.0", "prettier": "2.2.1", "resize-observer-polyfill": "^1.5.1", "rollup-plugin-visualizer": "^5.8.3", "sass": "1.77.6", "svg-sprite-loader": "6.0.11", "typescript": "^4.7.2", "unocss": "^0.58.3", "unplugin-auto-import": "^0.11.2", "unplugin-vue-components": "^0.22.8", "unplugin-vue-define-options": "^0.6.1", "vite": "^7.1.11", "vite-plugin-html": "^3.2.0", "vite-plugin-mkcert": "^1.7.2", "vite-plugin-mock": "^3.0.1", "vite-plugin-style-import": "1.2.1", "vite-plugin-svg-icons": "^2.0.1", "vitest": "^0.22.1", "vue-tsc": "^0.34.16" }, "pnpm": { "peerDependencyRules": { "ignoreMissing": [ "html-webpack-plugin", "vite-plugin-mock", "unplugin-auto-import", "unplugin-vue-components", "vue-template-compiler", "unocss", "unplugin", "vite-plugin-mock", "@vitejs/plugin-legacy", "@vitejs/plugin-vue", "@vitejs/*", "@babel/*", "vite", "vue", "@unocss/vite", "rollup", "vue-jest", "@babel/*" ] } },
最新发布
11-05
项目启动报错 [vite] [plugin:vite:import-analysis] Cannot find module 'vue-router/dist/vue-router.esm-bundler.js' Require stack: - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/resolve.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/env.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/utils.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/ast.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/dist/cli/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/bin/uni.js at ../node_modules/@dcloudio/uni-h5/dist/uni-h5.es.js:1:0 下午11:18:47 [vite] [plugin:vite:import-analysis] Cannot find module 'vue-router/dist/vue-router.esm-bundler.js' Require stack: - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/resolve.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/env.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/utils.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/ast.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/dist/cli/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/bin/uni.js at ../node_modules/@dcloudio/uni-h5/dist/uni-h5.es.js:1:0 (x2) 下午11:18:47 [vite] [plugin:vite:import-analysis] Cannot find module 'vue-router/dist/vue-router.esm-bundler.js' Require stack: - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/resolve.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/env.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/utils.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/ast.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/dist/cli/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/bin/uni.js at ../node_modules/@dcloudio/uni-h5/dist/uni-h5.es.js:1:0 (x3) 下午11:18:47 [vite] [plugin:vite:import-analysis] Cannot find module 'vue-router/dist/vue-router.esm-bundler.js' Require stack: - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/resolve.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/env.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/utils.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/ast.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/dist/cli/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/bin/uni.js at ../node_modules/@dcloudio/uni-h5/dist/uni-h5.es.js:1:0 (x4) 下午11:18:47 [vite] [plugin:vite:import-analysis] Cannot find module 'vue-router/dist/vue-router.esm-bundler.js' Require stack: - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/resolve.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/env.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/hbx/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/utils.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/ast.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/mp/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/uni-cli-shared/dist/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/dist/cli/index.js - /Users/di/Desktop/uni-preset-vue-vite/node_modules/@dcloudio/vite-plugin-uni/bin/uni.js at ../node_modules/@dcloudio/uni-h5/dist/uni-h5.es.js:1:0 (x5)
10-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值