Home Web Front-end JS Tutorial Create and publish an npm library, with TypeScript and Semantic Versioning

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

Sep 13, 2024 pm 02:15 PM

? 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
Copy after login
  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
Copy after login

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
Copy after login

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 of this Website
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

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 Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1677
14
PHP Tutorial
1279
29
C# Tutorial
1257
24
Python vs. JavaScript: The Learning Curve and Ease of Use Python vs. JavaScript: The Learning Curve and Ease of Use Apr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

JavaScript and the Web: Core Functionality and Use Cases JavaScript and the Web: Core Functionality and Use Cases Apr 18, 2025 am 12:19 AM

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

JavaScript in Action: Real-World Examples and Projects JavaScript in Action: Real-World Examples and Projects Apr 19, 2025 am 12:13 AM

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

Understanding the JavaScript Engine: Implementation Details Understanding the JavaScript Engine: Implementation Details Apr 17, 2025 am 12:05 AM

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python vs. JavaScript: Development Environments and Tools Python vs. JavaScript: Development Environments and Tools Apr 26, 2025 am 12:09 AM

Both Python and JavaScript's choices in development environments are important. 1) Python's development environment includes PyCharm, JupyterNotebook and Anaconda, which are suitable for data science and rapid prototyping. 2) The development environment of JavaScript includes Node.js, VSCode and Webpack, which are suitable for front-end and back-end development. Choosing the right tools according to project needs can improve development efficiency and project success rate.

The Role of C/C   in JavaScript Interpreters and Compilers The Role of C/C in JavaScript Interpreters and Compilers Apr 20, 2025 am 12:01 AM

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

From Websites to Apps: The Diverse Applications of JavaScript From Websites to Apps: The Diverse Applications of JavaScript Apr 22, 2025 am 12:02 AM

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python vs. JavaScript: Use Cases and Applications Compared Python vs. JavaScript: Use Cases and Applications Compared Apr 21, 2025 am 12:01 AM

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

See all articles