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

ts-project-bundle

v0.0.12

Published

A simple bundler for TypeScript projects using TypeScript project references.

Downloads

1,700

Readme

ts-project-bundle

A simple bundler for TypeScript projects using TypeScript project references.

This is a prototype! Please create an issue to give feedback.

Please see my other repo for some examples of TypeScript projects that demonstrate project references.

If you like this project, please star this repo and support my work

Run it on your project

Open a terminal and navigate to your main TypeScript project:

cd project-root/main-project

Your main project must use TypeScript project references to specify how it depends on shared TypeScript libraries.

First compile your project and it's dependencies:

npx tsc --build

Note the use of the --build argument. This causes dependent projects to be built as well.

Now install ts-project-bundle into your main project as a dev dependency:

npm install --save-dev ts-project-bundle

Now run ts-project-bundle against your main project:

ts-project-bundle

ts-project-bundle automatically uses the current working directory as the main project. You can also specify the project directory with the --project=<dir> parameter.

ts-project-bundle automatically detects referenced TypeScript libraries and the root path that contains both the main project and all the referenced libraries. The root path is required because it is required to reconstitute the directories for the main project and the library projects in the bundle. You can override the automatic root directory using the --root=<dir> argument, use with care.

The main project directory and all library directories must be valid TypeScript projects and must each contains a tsconfig.json file.

ts-project-bundle automatically defaults the output directory for the bundle to ./out under the project directory. You can set this specifically using the --out=<dir> argument.

Example

Here's how you might want to run this for a monorepo that contains microservices.

Directory structure:

some/path/my-application
    microservices/              # Each subdirectory contains a TypeScript microservice.
        microserviceA/
        microserviceB/
    libs/                       # Each subdirectory contains a shared TypeScript library.
        libA/
        libB/

Here's how we can bundle the code for microserviceA.

cd some/path/my-application/microservices/microserviceA
npx tsc --build     # Compiles the microservice and all references libraries.
ts-project-bundler  # Bundles combined code for microservice and libraries in the .out directory.

Build the test project

Clone this repo and then...

cd ts-project-bundle/test/test-project
npm install 
npx tsc --build
ts-project-bundle --root=../ --project=./ --out=../../out

Running it in development

Clone this repo and then...

cd ts-project-bundle
npm install
npm run start:dev