Is it possible to use npm dependencies from another package in my own project?

All we need is an easy explanation of the problem, so here it is.

I have a node.js project. In this project I have dependency A, and dependency B, also I noticed that dependency A inside it’s dependencies has dependency B, so my question is should I install dependency B or I can just use it from dependency A ?

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

You can, but…

What happens if dependency A no longer has the dependency on B?

For this reason, you should add as dependencies all packages you require in your code.

Edit

Further points to consider:

Your code has been build for version 1.0.0 of the code, and A has upgraded the version of B required to 2.0.0 of the code.

Assuming dependency B follows SEMVER, major breaking changes will have occured between version 1.0.0 and version 2.0.0. If B doesn’t follow SEMVER, then breaking changes could apply at any moment.

NPM (Yarn, and other package managers) will take care of this, and provide the correct version for the different packages and the project as a whole. This means version 1.0.0 of package B will be put directly in your node_modules folder, whilst version 2.0.0 of package B is put into the node_modules folder for package A.

Frameworks/Libraries

When including a library, framework, or the likes, it is common to use packages that library/framework use directly even though you haven’t put them in your references.

This should be kept to a minimum, and only according to the library/framework documentation as it can cause complications if you ever need to upgrade the library/framework (which you should do frequently).

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply