search
HomeWeb Front-endJS TutorialCreate and publish an npm library, with TypeScript and Semantic Versioning

? Write and publish a minimal code

To publish a library on npm, you'll need:

  1. A npm account; you can sign up here.

  2. Your code as a project; i.e., you have a package.json in your code directory, which has name and version specified. Note that you can generate this file via:

npm init
  1. An index.js in your project. Remember, you need to export your function to allow users to import it.

Note: If your script isn't named index.js and placed in the project root, you need to specify the "main" property in package.json. See this answer for more info.

And if the name has been taken on npm, you can add a prefix like @name-or-org/your-lib; that's what most other libraries do nowadays.

You can check my minimal example for reference, but I believe you can write something cooler than this.

Create and publish an npm library, with TypeScript and Semantic Versioning

Finally, publish it with the CLI command:

npm publish

Create and publish an npm library, with TypeScript and Semantic Versioning

Note to people setting the package name with a prefix: It MUST be your npm username or organization name you registered on npm. For example, I can use @remi_guan as my prefix but not others.

Also, you need to run npm publish --access public, because npm thinks you want to publish a private package, which is a paid feature.

This output means it has been successful. However, if you ran into some trouble, you can search on Google to troubleshoot. And here's how you can use your own library:

Create and publish an npm library, with TypeScript and Semantic Versioning

If you've been following this guide, please try your own library instead.

I've also found @backendbro has a much detailed guide than this, if you would like to know more.

After you have published your code, when you want to update the code, can run npm publish again. However, before publish you should update the version property of package.json, and please comply with Semantic Versioning.

I suggest you try it! Can you publish your library's v1.0.1 or v1.1.0, and use it in another project like what I've just done? Can you figure out how to update your npm library's version?

? Use TypeScript

This library we've created so far is not modern, it lacks type declaration so people who use your library can't get highlighted with typing. Also, people commonly use TypeScript with ECMAScript syntax. To learn about the difference: Node.js Modules: CommonJS vs. ECMAScript by Saisathish

But I'm going to skip the detailed setup of TypeScript in this post. There are many good tutorials to learn how to initialize a TypeScript project, like “How to develop a Typescript Library” by inapeace0.

Even further, you can use a template TypeScript repository like alexjoverm/typescript-library-starter that has already integrated many modern tools, best practices, etc.

I'm just going to mention some important notes if you're publishing a TypeScript library:

  1. Build before you publish. If you need to publish it to the public, people with the most common Node.js environment can only execute .js files. So you need to compile your code with tsc, rollup (or vite, which uses rollup), or webpack; any one is okay.

You need to correctly point to the compiled file by using module, main, or entry properties in package.json. Using a template and learning them one by one is a good choice. Again, alexjoverm/typescript-library-starter specified them nicely.

  1. Include a .d.ts file. For the same reason, the user also needs access to the type signatures.

But if you're sure your library will run on Deno, Bun, or ts-node, you can ignore my above guidelines because they support running TypeScript code natively.

Please try to follow a guide to create a TypeScript library and publish it to npm. It's still easy, like the first example. You should test it with another project using import syntax, and you can see type hints with an IDE.

With TypeScript, I can write my library in this syntax:

Create and publish an npm library, with TypeScript and Semantic Versioning

And after publishing, I can install and import it, and see the type hints thanks to TypeScript.

Create and publish an npm library, with TypeScript and Semantic Versioning

✨ Semantic Versioning

There's a common but slightly advanced problem waiting to be solved: Each time we update our package, we need to edit the version code.

That's annoying, especially if you're frequently updating your code.

However, there are tools to help you out.

  • semantic-release: Fully automatic; you can integrate it into GitHub CI to automatically update the version code and publish to npm each time you update your code on GitHub.
  • release-it: Also helps you bump the version, but it's simple to use (no need for CI knowledge); meanwhile, you don't configure it as fully automated.

Create and publish an npm library, with TypeScript and Semantic Versioning

I used ChatGPT to generate this summary comparing the two tools. For new coders, I'd suggest you try release-it, but semantic-release is also convenient if you know how to integrate it with CI.

In this post I'm going to show you how to use release-it, well, after you have made change to the project, simply run this in your project:

npx release-it

And choose is it a minor change or major change, then you're done!

Create and publish an npm library, with TypeScript and Semantic Versioning


Summary

So there you have it! We've walked through publishing a simple npm library, updating it, and even using TypeScript to make it more modern and robust. Remember to:

  • Export your functions properly so others can use them.
  • Update your version numbers following Semantic Versioning.
  • Consider using TypeScript for better type safety and developer experience.
  • Automate your releases with tools like release-it or semantic-release to save time.

Give it a try! Publish your own library, update it, and see how it feels to contribute to the npm ecosystem. Happy coding!

The above is the detailed content of Create and publish an npm library, with TypeScript and Semantic Versioning. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Java vs JavaScript: A Detailed Comparison for DevelopersJava vs JavaScript: A Detailed Comparison for DevelopersMay 16, 2025 am 12:01 AM

JavaandJavaScriptaredistinctlanguages:Javaisusedforenterpriseandmobileapps,whileJavaScriptisforinteractivewebpages.1)Javaiscompiled,staticallytyped,andrunsonJVM.2)JavaScriptisinterpreted,dynamicallytyped,andrunsinbrowsersorNode.js.3)JavausesOOPwithcl

Javascript Data Types : Is there any difference between Browser and NodeJs?Javascript Data Types : Is there any difference between Browser and NodeJs?May 14, 2025 am 12:15 AM

JavaScript core data types are consistent in browsers and Node.js, but are handled differently from the extra types. 1) The global object is window in the browser and global in Node.js. 2) Node.js' unique Buffer object, used to process binary data. 3) There are also differences in performance and time processing, and the code needs to be adjusted according to the environment.

JavaScript Comments: A Guide to Using // and /* */JavaScript Comments: A Guide to Using // and /* */May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript: A Comparative Analysis for DevelopersPython vs. JavaScript: A Comparative Analysis for DevelopersMay 09, 2025 am 12:22 AM

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Python vs. JavaScript: Choosing the Right Tool for the JobPython vs. JavaScript: Choosing the Right Tool for the JobMay 08, 2025 am 12:10 AM

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript: Understanding the Strengths of EachPython and JavaScript: Understanding the Strengths of EachMay 06, 2025 am 12:15 AM

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScript's Core: Is It Built on C or C  ?JavaScript's Core: Is It Built on C or C ?May 05, 2025 am 12:07 AM

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript Applications: From Front-End to Back-EndJavaScript Applications: From Front-End to Back-EndMay 04, 2025 am 12:12 AM

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.