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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@sundogrd/node-hmr

v1.0.3

Published

a hmr middleware for mpa node server

Downloads

1

Readme

node-hmr

旨在开启HMR(hot module replacement--模块热替换)功能。提供类似于webpack-dev-server(WDS)的开发体验

原理

百度或者谷歌

注意事项

如果开启这个中间件,所有文件会同webpack-dev-server一样打包到内存,只适合本地开发环境使用。

用法

    // 开发环境开启热更新
    if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
        await require('node-hmr')(app, {
            views: {
                render: 'koa-views', // koa-views
                root: require('path').resolve(__dirname, '../views'), // 类似于koa-views,指定模板文件目录
                opt: {map: {ejs: 'html'}} // koa-views 的第二个选项
            },
            config: require('../../webpack.config'), // your webpack config
            hotClient: { //webpack-hot-client 参数
                reload: false,
                hmr: true
            },
            devMiddleware: {}, // webpack-dev-middleware 中间件参数
            // when compile done, you can get hello string
            compileDone: (middleware) => {
                console.log('hello');
            }
        });
    }

API

由于该中间件事对koa-webpack的封装,所以基本配置和koa-webpack一致。你可以从这里找到koaWebpack的配置。以下是本中间件特有的配置:

views

Type: object

由于本中间件本质是封装了从内存中读取模板数据的功能,所以你可以通过设置该参数来查找。该参数本质是koa-views的配置项加了koa-views本身。

Example:

// middleware.js
await hmr(app, {
   views: {
       render: 'koa-views', // 使用的模板渲染库 类koa-views库
       root: 'server/views', // koa-views 的root参数
       opt: {map: {ejs: 'html'}} // koa-views 的options 可以指定渲染引擎
   },
   config: require('../../webpack.config'), // your webpack config
});

// controller.js
async function (ctx) {
    await ctx.render('index', {
        env: 'develop',
        someRenderData: ''
    });
};

compileDone

Type: function

webpack编译完成时进行的回调。你可以再这里做一下自定义动作。