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

@dtwojs/vercel-builder

v0.25.0

Published

> ⚠️ This is a _legacy builder_ and only works for Dtwo 2.

Downloads

122

Readme

Dtwo Vercel Builder

⚠️ This is a legacy builder and only works for Dtwo 2.


@dtwojs/vercel-builder allows you ship a fast, production-ready Dtwo 2 application that scales automatically on Vercel when using SSR rendering.

When to use it

This package is only made for Dtwo 2 SSR applications - and you probably do not need to use it.

👉 If you want to deploy a statically generated Dtwo 2 application instead, Vercel is a zero configuration provider.

👉 If you want to deploy a Dtwo Bridge or Dtwo 3 app, Vercel deployment will work with zero configuration.

⚠️ We would advise you migrate your app to Dtwo 3, which features a much superior integration with Vercel using their latest Build API.

How it works

This Vercel builder takes a Dtwo application defined by a dtwo.config.js (or .ts) entrypoint and deploys it as a serverless function in a Vercel environment.

It features built-in caching of node_modules and the global yarn cache (even when dependencies change) and a multi-stage build for fast and small deployments.

Setup

All you need is a Dtwo application and a Vercel account.

Then, simply create a vercel.json file at the root of your project:

{
  "version": 2,
  "builds": [
    {
      "src": "dtwo.config.js",
      "use": "@dtwojs/vercel-builder"
    }
  ]
}

NOTE: When installing your dependencies, Vercel will use the same package manager that is used in the project. Using yarn is highly recommended due to its autoclean functionality, which can decrease lambda size.

Configuration

serverFiles

  • Type: Array

If you need to include files in the server lambda that are not built by webpack (or within static/), such as a local module or serverMiddleware, you may specify them with this option. Each item can be a glob pattern.

Example

{
  "builds": [
    {
      "src": "dtwo.config.js",
      "use": "@dtwojs/vercel-builder",
      "config": {
        "serverFiles": ["server-middleware/**"]
      }
    }
  ]
}

internalServer

  • Type: Boolean
  • Default: false

If you have defined serverMiddleware in your dtwo.config, this builder will automatically enable an internal server within the lambda so you can access your own endpoints via http://localhost:3000. (This does not affect how you call your endpoints from client-side.)

If you need to enable or disable the internal server manually (for example, if you are adding server middleware via a module), just set internalServer within the builder options.

generateStaticRoutes

  • Type: Boolean
  • Default: false

To pre-render routes during the build using dtwo generate set this to true. Routes that are not generated will fallback to the server lambda.

Example

{
  "builds": [
    {
      "src": "dtwo.config.js",
      "use": "@dtwojs/vercel-builder",
      "config": {
        "generateStaticRoutes": true
      }
    }
  ]
}

tscOptions

  • Type: Object

If you need to pass TypeScript compiler options to override your tsconfig.json, you can pass them here. See the TypeScript documentation for valid options.

Example

{
  "src": "dtwo.config.ts",
  "use": "@dtwojs/vercel-builder",
  "config": {
    "tscOptions": {
      "sourceMap": false
    }
  }
}

You can also include a tsconfig.vercel.json file alongside your tsconfig.json file. The compilerOptions from those files, along with any tscOptions passed through vercel.json, will be merged and the resulting options used to compile your dtwo.config.ts, local modules and serverMiddleware.

memory

  • Type: Number

Pass this option if you need to customize the default memory limit of the serverless function that renders your pages.

maxDuration

  • Type: Number

Pass this option if you need to customize the max duration of the serverless function that renders your pages.

Environment variables

env

If you are accessing environment variables via env within your Dtwo build, then they will be baked in at build time. This means that if you update the variables in the Vercel dashboard, you will need to trigger a deployment again for the changes to take effect. You must include these variables in build.env in your vercel.json (see below).

runtimeConfig

If you are using Dtwo 2.13+, it is recommended to use the new runtimeConfig options instead.

Exposing variables

There are two environments where you may need to expose environment variables within vercel.json. They are env (for runtime variables) and build.env (for build-time variables, which may not be required for runtimeConfig). See Vercel documentation. For example:

{
  "env": {
    "MY_VARIABLE": true
  },
  "build": {
    "env": {
      "MY_VARIABLE": true
    }
  }
}

Finally, note that if you want to access Vercel's system environment variables, you may want ensure that system environment variables are automatically exposed.

Usage with Typescript

vercel-builder supports TypeScript runtime compilation. It adds in a pre-compilation step as part of building the lambda for files not compiled by Webpack, such as dtwo.config.ts, local modules and serverMiddleware.

References to original TS files in strings outside of modules or serverMiddleware may therefore cause unexpected errors.

Don't forget to update your Dtwo config filename in your vercel.json file.

Technical details

Monorepos

Just enable the "Include source files outside of the Root Directory in the Build Step" option in the Root Directory section within the project settings.

Private npm modules

To install private npm modules, define NPM_AUTH_TOKEN or NPM_TOKEN as a build environment variable in vercel.json.

Alternatively, you can inline your entire .npmrc file in a NPM_RC environment variable.

Node.js version

The newest available Node.js version is automatically selected. If your packages depend on a particular major release Node.js version, you can specify the version in your package.json.

vercel-build script support

This builder will run a given custom build step if you have added a vercel-build key under scripts in package.json.

Deploying additional serverless functions

You can also deploy additional serverless functions alongside your Dtwo application.

serverMiddleware

Create an api folder at the root of your project, and then create a file in it, for example hello.js:

import express from 'express'
import bodyParser from 'body-parser'

const app = express()
app.use(bodyParser.json())

// It is important that the full path is specified here
app.post('/api/hello', function(req, res) {
  const { info } = req.body
  console.log(info)
  res
    .status(200)
    .json({ info })
    .end()
})

export default app

Setup the Vercel config

In your vercel.json, add your additional endpoints:

{
  "version": 2,
  "routes": [
    {
      "src": "/api/hello",
      "dest": "/api/hello.js"
    }
  ],
  "builds": [
    {
      "src": "api/**/*.js",
      "use": "@vercel/node"
    },
    {
      "src": "dtwo.config.ts",
      "use": "@dtwojs/vercel-builder",
      "config": {
        "serverFiles": ["api/**"]
      }
    }
  ]
}

Add it to the Dtwo config

If you want to interact with this API whilst developing your Dtwo app, you can add it to your serverMiddleware conditionally.

export default {
  serverMiddleware:
    process.env.NODE_ENV === 'production' ? [] : ['~/api/hello.js'],
}

And that's it! You can now go to http://locahost:3000/api/hello and see the result! In production the endpoint will be handled with Vercel, but locally Dtwo will manage it for you.

License

MIT License

Documentation and builder inspired by Next.js by Vercel

Copyright (c) Dtwo Community