{"id":19609,"date":"2018-10-18T11:30:53","date_gmt":"2018-10-18T11:30:53","guid":{"rendered":"https:\/\/www.heartinternet.uk\/blog\/?p=19609"},"modified":"2018-10-18T11:30:53","modified_gmt":"2018-10-18T11:30:53","slug":"7-tips-to-properly-manage-your-dependencies-in-node-js","status":"publish","type":"post","link":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/","title":{"rendered":"7 tips to properly manage your dependencies in Node.js"},"content":{"rendered":"<p>Before using a third-party package, you should get detailed information about it and, for example, consider the popularity, the license or known security issues. And once you&#8217;ve decided to use a package as dependency, you should continue keeping an eye on it. Check regularly that your dependencies are up to date, for instance, if there are bug fixes available and if no dependencies are missing or no longer being used.<\/p>\n<p>In this article, I will show you a couple of useful tools to properly address these issues and help you manage the dependencies of your Node.js applications.<\/p>\n<h3>Review common information about a package<\/h3>\n<p>Before installing a package as a dependency of your project, use <code>npm view<\/code> to get some details about the package: this includes the current version, the license that is used, information about the dependencies of the package, a short description, maintainers and much more.<\/p>\n<p>For example, to get the latest information about the &#8220;express&#8221; package, you would use the following command:<\/p>\n<pre><code>bash\n$ npm view express<\/code><\/pre>\n<p>The information returned is formatted as JSON, which can be easily used for further processing, for example in the build process or when hooking into the preinstallation process before installing a package. While JSON is useful for that kind of automated processing, for manual checking I recommend using more specific subcommands of <code>npm view<\/code> to get exactly the information that you are interested in:<\/p>\n<pre><code>bash\n# get the current version\n$ npm view express version\n4.16.3\n# get the license of that version\n$ npm view express license\nMIT\n# get a list of all versions available\n$ npm view express licenses\n[ '0.14.0',\n  '0.14.1',\n  '1.0.0-beta',\n  '1.0.0-beta2',\n  '1.0.0-rc',\n  ...\n# get the required version of Node.js\n$ npm view express engines.node\n>= 0.10.0<\/code><\/pre>\n<h3>Check for unused and missing dependencies<\/h3>\n<p>When installing a dependency using <code>npm install<\/code>, the dependency is automatically saved in the configuration file (package.json) of the project. However, during the lifetime of a project it easily happens that a dependency is no longer needed, for example when it\u2019s removed from the code, but not removed from the configuration file. On the other hand it also happens that you simply forget to add a dependency to package.json but use it within your application code.<\/p>\n<p>One of the tools that can help you avoiding both scenarios is &#8220;<a href=\"https:\/\/github.com\/dylang\/npm-check\">npm-check<\/a>&#8220;, which can be installed globally with the following command:<\/p>\n<pre><code>bash\n$ npm install -g npm-check<\/code><\/pre>\n<p>Let&#8217;s create a simple project to show the usage of &#8220;npm-check&#8221;: first install a dependency that is not used in the code and then use a dependency that is not referenced in the package.json file:<\/p>\n<pre><code>bash\n$ mkdir example\n$ cd example\n$ npm init -y\n# install express but don't use it\n$ npm install express\n# use lodash but don't reference it\n$ echo \"const _ = require('lodash');\" > start.js<\/code><\/pre>\n<p>When you now run <code>npm-check<\/code> within the root folder of that project, it gives you the following (shortened) output, which lets you easily track down both unused and missing dependencies:<\/p>\n<pre><code>bash\n$ npm-check\nexpress   \ud83d\ude15  NOTUSED?  Still using express?\n   Depcheck did not find code similar to require('express') or import from 'express'.\n   ...\nlodash    \ud83d\ude1f  MISSING!  Not installed.\n   \ud83d\ude1f  PKG ERR!  Not in the package.json. Found in: \/start.js<\/code><\/pre>\n<h3>Find vulnerabilities of dependencies<\/h3>\n<p>In April 2018 the former <a href=\"https:\/\/nodesecurity.io\/\">Node Security Platform<\/a>, also known as NSP, was bought by npm, Inc. and since npm@6 it\u2019s the base for checking security issues and vulnerabilities, which is activated by default when installing a package:<\/p>\n<pre><code>bash\n$ npm install express@4.5\n# ...\n+ express@4.5.1\nadded 33 packages from 22 contributors in 3.365s\n[!] 24 vulnerabilities found [54 packages audited]\n\tSeverity: 9 low | 9 moderate | 6 high\n\tRun `npm audit` for more detail<\/code><\/pre>\n<p>If you want to disable this behaviour, you can either pass the <code>--no-audit<\/code> parameter or disable it globally via <code>npm set audit false<\/code>.<\/p>\n<p>If you already have installed several packages and want to check for vulnerabilities for all of them, use <code>npm audit<\/code>, which will do this recursively for your project. As a result, you get a list of known vulnerabilities including the following information:<\/p>\n<ul>\n<li>the package having the vulnerability<\/li>\n<li>the package directly required in your package.json that includes the package as direct or indirect dependency<\/li>\n<li>the exact path from the directly included package to the package having the vulnerability<\/li>\n<li>a link to the Node Security Platform with further information and possible steps to fix the problem<\/li>\n<\/ul>\n<p>If you want to automatically process this information, you can append the <code>--json<\/code> to the command and it will give you a JSON report. Also note that if you are using an older version of npm where <code>npm audit<\/code> is not available, you have a lot of great alternatives. Some of the most popular tools, for example, are <a href=\"https:\/\/greenkeeper.io\/\">Greenkeeper<\/a>, <a href=\"https:\/\/snyk.io\/\">Snyk<\/a> and <a href=\"http:\/\/retirejs.github.io\/retire.js\/\">Retire.js<\/a>.<\/p>\n<h3>Find and fix outdated dependencies<\/h3>\n<p>Node.js has a great community and a lot of packages that are continuously improved, be it improvements related to the performance, fixing of bugs or adding new features. Therefore one step of your build process should include checking for outdated dependencies. While you can manually check either the homepage of the package or the official registry, it&#8217;s easier to use the <code>npm outdated<\/code> command, which gives you a report including the following information: the name of the outdated package, the version that is used (e.g., 3.2.6), the latest version that can be installed according to the rules of semantic versioning (e.g., 3.21.2), and the latest version available (e.g., 4.16.3).<\/p>\n<pre><code>bash\n# install an older version of Express:\n$ npm install express@3.2\n$ npm outdated\nPackage  Current  Wanted  Latest  Location\nexpress    3.2.6  3.21.2  4.16.3  example<\/code><\/pre>\n<p>If you are looking for an alternative, check out &#8220;<a href=\"https:\/\/github.com\/tjunnone\/npm-check-updates\">npm-check-updates<\/a>&#8220;, which comes with a different set of commands and options.<\/p>\n<h3>Manage internal dependencies<\/h3>\n<p>One of the basic best practices for Node.js development is to structure your code in many different, small, reusable packages, each having a special purpose. The extreme form of this are <a href=\"https:\/\/github.com\/parro-it\/awesome-micro-npm-packages\">micro-packages<\/a>, often having only one exported function. But also without using this extreme form it can easily happen that you end up having dozens or even hundreds of packages for one project. This can get very complex if you manage every package in a separate Git repository, since you need to take care of the build process, the publishing and the deployment for each of those packages separately.<\/p>\n<p>To overcome this problem, you might consider organising related packages in so-called <strong>mono repositories<\/strong>, or <strong>multi package repositories<\/strong>. The idea is quite simple: instead of having one Git repository for each package you just have one Git repository for a set of related packages. This way you can use the same scripts for organising the build, the publishing and the deployment for all of the packages. The most popular tool for managing multi package repositories is <a href=\"https:\/\/github.com\/lerna\/lerna\">lerna.js<\/a>. Initially developed as part of Babel, it\u2019s now available as a separate tool and also used by other popular frameworks.<\/p>\n<h3>Check licenses for dependencies<\/h3>\n<p>One of the most important things to check before using a package is its license. Does it fit the project that are you developing? Does it restrict the usage of the package? Is there a license at all? Or is it a custom license that you need to understand first?<\/p>\n<p>A nice tool which gives you an overview of all the licenses in your dependency tree is &#8220;<a href=\"https:\/\/github.com\/davglass\/license-checker\">license-checker<\/a>&#8220;, which you can install globally using the following command:<\/p>\n<pre><code>bash\n$ npm install -g license-checker<\/code><\/pre>\n<p>If you keep the information in the JSON format for further processing, you can append the parameter <code>--json<\/code>. If you are just interested in an overview, use the parameter <code>--summary<\/code> instead:<\/p>\n<pre><code>bash\n$ license-checker --summary\n\u251c\u2500 MIT*: 15\n\u251c\u2500 MIT: 3\n\u251c\u2500 UNKNOWN: 2\n\u251c\u2500 Custom: https:\/\/secure.travis-ci.org\/shtylman\/node-cookie.png: 1\n\u2514\u2500 ISC: 1<\/code><\/pre>\n<p>If you are not sure whether a given license is suitable for you, have a look at <a href=\"https:\/\/choosealicense.com\/licenses\/\">choosealicense.com\/licenses\/<\/a>, which gives you a nice and understandable overview of several licenses and how they differ.<\/p>\n<h3>Keep your dependencies private<\/h3>\n<p>If you want to keep your packages or dependencies private, you have different options: you can use private Git repositories, use scoped packages at the official npm registry or you can use your own npm registry. The latter can be useful for different reasons, for example due to limited access to the internet, for caching packages or when using modified versions of a package.<\/p>\n<p>One popular example for a private npm registry completely written in JavaScript is <a href=\"https:\/\/github.com\/verdaccio\/verdaccio\">Verdaccio<\/a>, a Fork of the former <a href=\"https:\/\/github.com\/rlidwka\/sinopia\">sinopia<\/a>. It\u2019s available via npm and as a Docker image provided at <a href=\"https:\/\/hub.docker.com\/r\/verdaccio\/verdaccio\/\">Docker Hub<\/a>.<\/p>\n<h3>There is more&#8230;<\/h3>\n<p>In this article I showed you some useful tools for managing your dependencies. But there is more. For example, if you are developing many different packages in parallel that depend on each other, it\u2019s useful to use <code>npm link<\/code> to create symbolic links, so that changes in one package immediately become visible in other packages. And last but not least: keep your own packages up to date, so that others can get the information they are looking for when they want to use them.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using third-party packages in your Node.js applications? This guide examines how to manage your Node.js depedancies to make sure they don&#8217;t cause you problems further down the line.<\/p>\n","protected":false},"author":2,"featured_media":19617,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,24],"tags":[],"class_list":{"0":"post-19609","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-guest-posts","8":"category-web-design"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>7 tips to properly manage your dependencies in Node.js - Heart Internet<\/title>\n<meta name=\"description\" content=\"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 tips to properly manage your dependencies in Node.js - Heart Internet\" \/>\n<meta property=\"og:description\" content=\"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Heart Internet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/heartinternet\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-18T11:30:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1150\" \/>\n\t<meta property=\"og:image:height\" content=\"766\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Eliot Chambers-Ostler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:site\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eliot Chambers-Ostler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\"},\"author\":{\"name\":\"Eliot Chambers-Ostler\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\"},\"headline\":\"7 tips to properly manage your dependencies in Node.js\",\"datePublished\":\"2018-10-18T11:30:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\"},\"wordCount\":1285,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg\",\"articleSection\":[\"Guest Posts\",\"Web Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\",\"name\":\"7 tips to properly manage your dependencies in Node.js - Heart Internet\",\"isPartOf\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg\",\"datePublished\":\"2018-10-18T11:30:53+00:00\",\"description\":\"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg\",\"width\":1150,\"height\":766,\"caption\":\"A man working on a laptop in an office\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.heartinternet.uk\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"7 tips to properly manage your dependencies in Node.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/heartblog.victory.digital\/#website\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"name\":\"Heart Internet\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/heartblog.victory.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\",\"name\":\"Heart Internet\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"width\":992,\"height\":252,\"caption\":\"Heart Internet\"},\"image\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/heartinternet\/\",\"https:\/\/x.com\/heartinternet\",\"https:\/\/www.linkedin.com\/company\/heart-internet-ltd\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28\",\"name\":\"Eliot Chambers-Ostler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg\",\"caption\":\"Eliot Chambers-Ostler\"},\"url\":\"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"7 tips to properly manage your dependencies in Node.js - Heart Internet","description":"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/","og_locale":"en_GB","og_type":"article","og_title":"7 tips to properly manage your dependencies in Node.js - Heart Internet","og_description":"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.","og_url":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/","og_site_name":"Heart Internet","article_publisher":"https:\/\/www.facebook.com\/heartinternet\/","article_published_time":"2018-10-18T11:30:53+00:00","og_image":[{"width":1150,"height":766,"url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg","type":"image\/jpeg"}],"author":"Eliot Chambers-Ostler","twitter_card":"summary_large_image","twitter_creator":"@heartinternet","twitter_site":"@heartinternet","twitter_misc":{"Written by":"Eliot Chambers-Ostler","Estimated reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#article","isPartOf":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/"},"author":{"name":"Eliot Chambers-Ostler","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28"},"headline":"7 tips to properly manage your dependencies in Node.js","datePublished":"2018-10-18T11:30:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/"},"wordCount":1285,"commentCount":0,"publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg","articleSection":["Guest Posts","Web Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/","url":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/","name":"7 tips to properly manage your dependencies in Node.js - Heart Internet","isPartOf":{"@id":"https:\/\/heartblog.victory.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg","datePublished":"2018-10-18T11:30:53+00:00","description":"Find out how to properly manage Node.js dependencies and make sure your Node.js applications run smoothly.","breadcrumb":{"@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#primaryimage","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2018\/10\/man-working-at-laptop-in-office.jpg","width":1150,"height":766,"caption":"A man working on a laptop in an office"},{"@type":"BreadcrumbList","@id":"https:\/\/www.heartinternet.uk\/blog\/7-tips-to-properly-manage-your-dependencies-in-node-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.heartinternet.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"7 tips to properly manage your dependencies in Node.js"}]},{"@type":"WebSite","@id":"https:\/\/heartblog.victory.digital\/#website","url":"https:\/\/heartblog.victory.digital\/","name":"Heart Internet","description":"","publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartblog.victory.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/heartblog.victory.digital\/#organization","name":"Heart Internet","url":"https:\/\/heartblog.victory.digital\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","width":992,"height":252,"caption":"Heart Internet"},"image":{"@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/heartinternet\/","https:\/\/x.com\/heartinternet","https:\/\/www.linkedin.com\/company\/heart-internet-ltd"]},{"@type":"Person","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/58ed7f27cc0f3ab6e69135742a5eee28","name":"Eliot Chambers-Ostler","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/08\/cropped-Eliot-96x96.jpg","caption":"Eliot Chambers-Ostler"},"url":"https:\/\/www.heartinternet.uk\/blog\/author\/eliot-chambers-ostler\/"}]}},"_links":{"self":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/19609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/comments?post=19609"}],"version-history":[{"count":0,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/19609\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media\/19617"}],"wp:attachment":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media?parent=19609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/categories?post=19609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/tags?post=19609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}