Code Monkey home page Code Monkey logo

vite-plugin-virtual-html-template's Introduction

vite-plugin-virtual-html-template

npm version

HTML template for vite app, support flexible virtual URL.

Motivation

  • Vite need html for entry file, which means we must have
    • projectRoot/index.html for SPA
    • projectRoot/app1.html, projectRoot/app2.html, projectRoot/sub/page/app3.html for MPA
  • Why not we use html template for all entry html
  • Also we should support lodash.template syntax for the html content, like setting <title></title>.

Usage

npm i --save-dev vite-plugin-virtual-html-template
// vite.config.js
import virtualHtmlTemplate from 'vite-plugin-virtual-html-template'

// @see https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    // ...other plugins
    virtualHtmlTemplate(/* options */)
  ]
})

Options

// you can custom template path(default is public/index.html) and page title
{
  // define pages, if SPA uses this plugin, the index page must be set
  pages: {
    index: {
      template: 'public/index.html',
      title: 'Home Page',
      // If entry is not set, the entry will not be added to the HTML.
      entry: 'src/main.js'
    },
    app: {
      template: 'public/index.html',
      title: 'App Page',
      entry: 'src/app/main.js'
    },
    'sub/other': {
      template: 'public/index.html',
      title: 'Sub Page',
      entry: 'src/sub/other/main.js'
    }
  },
  // expose to template
  data: {
    title: 'Home Page',
  }
}

The key of pages and the URL are associated with the following rules: http://127.0.0.1/${key} (history router mode) or http://127.0.0.1/${key}.html, where key supports multi-level paths.

After starting the dev server, browse:

The URL structure after the project is constructed is the same as that during development:

For MPA, The key of pages and the build.rollupOptions.input are associated with the following rules:

{
  build: {
    rollupOptions: {
      input: {
        app1: path.resolve(__dirname, `index.html`), // The file name is associated with `pages.index` after removing the extension.
        app2: path.resolve(__dirname, `app.html`), // The file name is associated with `pages.app` after removing the extension.
        app3: path.resolve(__dirname, `sub/other.html`), // The file name is associated with `pages['sub/other']` after removing the extension.
      }
    }
  }
}

Thanks

The idea and part of the code for this plugin comes from vite-plugin-html-template.

vite-plugin-virtual-html-template's People

Contributors

hex-ci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

vite-plugin-virtual-html-template's Issues

entry后的参数无效

不论是development mode还是production mode,entry后跟的参数都无法生效;

development mode提示

http://192.168.19.223:8090/src/index.js net::ERR_ABORTED 404 (Not Found)

production mode提示

Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec.

具体项目如下:

https://github.com/mcx1230/vite_debug

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.