npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vine-jsx

v1.0.9

Published

JSX library

Readme

Vine-JSX: A JSX Library

Looking for a lightweight JSX library for your next project? Introducing Vine JSX. It comes with React-like hooks to make development easier and fun. Web components and SSR support are also on the way.

Getting Started

To install Vine JSX, sumply run:

npm install vine-jsx -D

After that, create a file, import Vine JSX and create your index.jsx file.

import { Vine } from 'vine-jsx'
import { content } from './content.js' // Let's assume it's just a string

const App = (props) => (
    <>
        <h1>{ props.title }</h1>
        <main>
            <article>{ props.content }</article>
        </main>
    </>
)

Vine.render(
    <App title='Hello World' content={ content } />,
    document.getElementById('root')
)

This is pretty basic stuff. You can also use hooks to make your site more interactive.

const { useState, useEffect, useMemo } = Vine

const Component = () => {
    const [count, setCount] = useState(0)

    return (
        <button onClick={ () => setCount(count + 1) }>{ count }</button>
    )
}

Vine JSX currently has useState, useEffect and useMemo hooks. More hooks will be included soon. Class components are also available. However, since functional components are considered to be much cleaner and are used more frequently, class components would very likely not be improved any further. To create a class component:

class MyComponent extends Vine.Component {
    render(props) {
        return (
            <>
                <h1>{ props.title }</h1>
                <main>
                    <article>{ props.content }</article>
                </main>
            </>
        )
    }
}

Vine JSX does not have a Virtual DOM but using web components can improve performance. Use the built-in define function to create web components in an instant

Vine.define('some-text', <p>{ content }</p>, {
    shadow: true // attaches shadow to the component
})

Vine.render(<some-text />, document.getElementById('root'))

To compile it, you can use a build tool like webpack. If you are not familiar with such build tools, don't worry. Read our Webpack Setup section to setup webpack to compile your files.

Webpack Setup

The first step is to install webpack and a couple other things:

npm install webpack webpack-cli babel-loader @babel/core @babel/plugin-transform-react-jsx -D

Now you can configure webpack by writing a webpack.config.js file. Copy this code and paste it in your webpack.config.js file.

const path = require('path')

module.exports = {
    target: 'web',
    mode: 'development',
    entry: './index.jsx',
    output: {
        clean: true,
        filename: 'index.min.js',
        path: path.resolve('./dist')
    },
    module: {
        rules: [
            {
                test: /\.(jsx|js)$/gm,
                exclude: /node_modules/gm,
                use: {
                    loader: 'babel-loader',
                    options: {
                        plugins: [
                            [
                                '@babel/plugin-transform-react-jsx',
                                {
                                    pragma: 'Vine.createNode',
                                    pragmaFrag: "'fragment'"
                                }
                            ]
                        ]
                    }
                }
            }
        ]
    }
}

Now to compile your index.jsx run the following command:

npx webpack --config ./webpack.config.js

The filename of the generated file will be index.min.js. This file can be added to your index.html. There are many other things that you can do with webpack. Be sure to check out all the different loaders that you can use.