GithubHelp home page GithubHelp logo

zheeeng / vite-plugin-plain-text Goto Github PK

View Code? Open in Web Editor NEW
23.0 3.0 0.0 54 KB

A Vite plugin transforms the rule-matched file as plain text.

Home Page: https://www.npmjs.com/package/vite-plugin-plain-text

License: MIT License

TypeScript 85.70% HTML 6.50% GLSL 7.80%
vite vitejs plugin vite-plugin plaintext vite-plugin-plain-text

vite-plugin-plain-text's Introduction

vite-plugin-plain-text

NPM

publish workflow npm version

A Vite plugin that transforms matched files into plain text.

Installation

pnpm i -D vite-plugin-plain-text (or npm/yarn)

Usage Example

Assume we are going to transform these files:

  1. The project's LICENSE file
  2. Textbox
  3. .glsl file

into plain text.

// vite.config.(t|j)s

import { defineConfig } from 'vite';

import plainText from 'vite-plugin-plain-text';

export default defineConfig({
  plugins: [
    // passing regular expression or glob matcher
    plainText([/\/LICENSE$/, '**/*.text', /\.glsl$/]),
  ],
});
// component.js

import { plainText as LICENSE } from '../LICENSE'
import { plainText as Lorem } from '../lorem-ipsum.text'
import { plainText as Siren } from '../siren.glsl'

console.log(LICENSE)
console.log(Lorem)
console.log(Siren)

Advanced Usage

Options Reference

type PlainTextOptions = {
  namedExport?: string | false,
  dtsAutoGen?: boolean,
  distAutoClean?: boolean,
}

Enable Default Export

Use the plainTextOptions.namedExport option to configure the named exported variable. To enable the default export, pass false, '', or undefined.

// vite.config.(t|j)s

import { defineConfig } from 'vite';
import plainText from 'vite-plugin-plain-text';

export default defineConfig({
  plugins: [
    plainText(
      [/\/LICENSE$/, '**/*.text', /\.glsl$/],
      { namedExport: false },
    ),
  ],
});
// component.js

import LICENSE from '../LICENSE'
import Lorem from '../lorem-ipsum.text'
import Siren from '../siren.glsl'

console.log(LICENSE)
console.log(Lorem)
console.log(Siren)

Type Safety

Adding Module Declarations Manually

// vite-env.d.ts
declare module '*/LICENSE' {
    export const plainText: string
}
declare module '*.text' {
    export const plainText: string
}
declare module '*.glsl' {
    export const plainText: string
}

Generate the declaration automatically

  1. plainTextOptions.dtsAutoGen generates .dts files for matched files.
  2. plainTextOptions.dtsAutoClean cleans up these .dts files after the vite plugin starts up each time.
import { defineConfig } from 'vite';
import plainText from 'vite-plugin-plain-text';

export default defineConfig({
  plugins: [
    plainText(
      [/\/LICENSE$/, '**/*.text', /\.glsl$/],
      { namedExport: false, dtsAutoGen: true, distAutoClean: true },
    ),
  ],
});

License

MIT

Alternative

Virtual asset Loader: vite-plugin-virtual-plain-text

vite-plugin-plain-text's People

Contributors

zheeeng 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

Watchers

 avatar  avatar  avatar

vite-plugin-plain-text's Issues

Package exports { default }

The type defs and the docs asks to do this in vite.config.ts:

import { defineConfig } from "vite";
import plainText from "vite-plugin-plain-text";

export default defineConfig({
  plugins: [
    plainText(/\.glsl$/),
  ],
});

but this is what works for me:

import { defineConfig } from "vite";
import plainText from "vite-plugin-plain-text";

export default defineConfig({
  plugins: [
    // @ts-ignore
    plainText.default(/\.glsl$/), // <--
  ],
});

There seems to be a minor issue in your transpilation/commonjs/build pipeline :)

Consider returning text in a default export

This will be very convenient to migrate off the webpack's raw-loader for specific file types, which always return a default export from them.

Before

import { plainText } from 'some-file';

After

import plainText from 'some-file';

Sourcemap is likely to be incorrect warning

I enabled source maps in my Vite build config.

export default defineConfig({
  plugins: [
    plainText(/\,hbs$/),
  ],
  
  build: {
    sourcemap: true,
  },
})

When I do a build, I get the following error

Sourcemap is likely to be incorrect: a plugin (plain text) was used to transform files, but didn't generate a sourcemap for the transformation. Consult the plugin documentation for help

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.