{"id":18148,"date":"2024-05-02T15:56:32","date_gmt":"2024-05-02T22:56:32","guid":{"rendered":"https:\/\/ioflood.com\/blog\/?p=18148"},"modified":"2024-05-02T15:56:32","modified_gmt":"2024-05-02T22:56:32","slug":"npm-run-dev","status":"publish","type":"post","link":"https:\/\/ioflood.com\/blog\/npm-run-dev\/","title":{"rendered":"Uses of &#8216;Npm Run Dev&#8217; | A How-To Development Guide"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/ioflood.com\/blog\/wp-content\/uploads\/2024\/05\/Illustration-of-a-digital-start-button-on-a-developers-console-representing-the-npm-run-dev-command-300x300.jpg\" alt=\"Illustration of a digital start button on a developers console representing the npm run dev command\" width=\"300\" height=\"300\" title=\"\"><\/figure>\n<\/div>\n<p>Utilizing the &#8216;npm run dev&#8217; command is essential for setting up and running development environments effectively at IOFLOOD. As we utilize various in-house bare metal cloud servers for development, we&#8217;ve found that using &#8216;npm run dev&#8217; is crucial for automating tasks related to startup, code compiling, and live reloading. To assist our customers and other developers with similar questions, we&#8217;ve formulated today&#8217;s article, complete with examples and tips.<\/p>\n<p><strong>This guide will walk you through using &#8216;npm run dev&#8217; effectively,<\/strong> enhancing your development workflow in Node.js projects. By mastering this command, you&#8217;ll unlock a more efficient and streamlined development experience, allowing you to focus on crafting your application&#8217;s logic rather than wrestling with setup and configuration.<\/p>\n<p>Let&#8217;s explore how &#8216;npm run dev&#8217; simplifies the setup and management of development environments, allowing you to focus on building and testing your software projects<\/p>\n<h2>TL;DR: What Does &#8216;npm run dev&#8217; Do?<\/h2>\n<blockquote><p>\n  <code>npm run dev<\/code> executes the <code>dev<\/code> script defined in your project&#8217;s package.json file, typically starting a development server with live reloading. This command is a cornerstone for Node.js developers, streamlining the process of testing and debugging applications in real-time.\n<\/p><\/blockquote>\n<p>Here&#8217;s a basic example:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"node server.js\"\n}\n\n# Output:\n# Server running at http:\/\/localhost:3000\n<\/code><\/pre>\n<p>In this example, when you run <code>npm run dev<\/code> in your terminal, it executes the <code>dev<\/code> script specified in your project&#8217;s package.json file. This script starts a Node.js server using <code>node server.js<\/code>. It&#8217;s a straightforward way to kickstart your development environment without manually starting your server each time.<\/p>\n<blockquote><p>\n  Dive deeper into this guide for more insights on setting up and leveraging &#8216;npm run dev&#8217; for your projects, including advanced configurations and troubleshooting tips.\n<\/p><\/blockquote>\n<h2>Script Setup: &#8216;npm run dev&#8217;<\/h2>\n<h3>Understanding npm Scripts<\/h3>\n<p>In the heart of every Node.js project lies a <code>package.json<\/code> file, a manifest that holds various metadata relevant to the project. Among its many uses, it defines <em>scripts<\/em> that can automate tasks, such as starting a development server. For beginners, setting up a &#8216;dev&#8217; script is your first step towards automating your development workflow.<\/p>\n<p>To define a &#8216;dev&#8217; script in your <code>package.json<\/code>, you simply add an entry under the <code>scripts<\/code> section. This script usually starts your project&#8217;s development server. Here\u2019s how you can set it up:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"node app.js\"\n}\n<\/code><\/pre>\n<p>In this example, running <code>npm run dev<\/code> in your terminal will execute the <code>node app.js<\/code> command, starting your Node.js application. Here&#8217;s what you might see as output:<\/p>\n<pre><code class=\"language-bash line-numbers\"># Output:\n# Listening on http:\/\/localhost:3000\n<\/code><\/pre>\n<p>This output indicates that your server is up and running, and you can now view your application by navigating to <code>http:\/\/localhost:3000<\/code> in your browser. The beauty of using <code>npm run dev<\/code> lies in its simplicity. With just a single command, you&#8217;ve started your development server, bypassing the need to manually execute <code>node app.js<\/code> every time you want to run your application.<\/p>\n<h3>Pros and Cons for Beginners<\/h3>\n<p><strong>Pros:<\/strong><br \/>\n&#8211; <strong>Easy Setup:<\/strong> Just a few lines in <code>package.json<\/code> and you\u2019re ready to go.<br \/>\n&#8211; <strong>Quick Start:<\/strong> Jump straight into development without fiddling with commands.<\/p>\n<p><strong>Cons:<\/strong><br \/>\n&#8211; <strong>Limited Customization:<\/strong> At this level, there\u2019s minimal room for tweaking how your development environment behaves. For more advanced features like live reloading, you&#8217;ll need to explore further.<\/p>\n<p>Mastering the <code>npm run dev<\/code> command is a significant first step in optimizing your development process. It not only saves time but also introduces you to the world of npm scripts, an essential tool for any Node.js developer.<\/p>\n<h2>Automation Tips for &#8216;npm run dev&#8217;<\/h2>\n<h3>Automatic Server Restarts<\/h3>\n<p>After mastering the basic use of <code>npm run dev<\/code>, it&#8217;s time to enhance your development workflow. A common pain point in development is having to manually restart your server after making changes to your code. This is where <strong>Nodemon<\/strong> comes into play. Nodemon is a utility that monitors for any changes in your source and automatically restarts your server, saving you a significant amount of time and effort.<\/p>\n<p>To integrate Nodemon into your workflow, you first need to install it as a development dependency:<\/p>\n<pre><code class=\"language-bash line-numbers\">npm install --save-dev nodemon\n<\/code><\/pre>\n<p>Next, update your &#8216;dev&#8217; script in <code>package.json<\/code> to use Nodemon instead of node:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"nodemon app.js\"\n}\n<\/code><\/pre>\n<p>Running <code>npm run dev<\/code> now utilizes Nodemon. Here&#8217;s what you might encounter as output when making a change:<\/p>\n<pre><code class=\"language-bash line-numbers\"># Output:\n# [nodemon] starting `node app.js`\n# [nodemon] restarting due to changes...\n# [nodemon] starting `node app.js`\n<\/code><\/pre>\n<p>This output indicates that Nodemon is actively monitoring your project. Upon detecting a file change, it automatically restarts your server, ensuring that your latest changes are always in effect without the need for manual intervention.<\/p>\n<h3>Environment Variables Made Easy<\/h3>\n<p>Another aspect of advancing your &#8216;npm run dev&#8217; setup involves the use of environment variables for configuring your development environment. Environment variables allow you to manage application settings outside of your code, such as database connection strings or API keys, enhancing security and flexibility.<\/p>\n<p>To set up environment variables, you can use a package like <code>dotenv<\/code>:<\/p>\n<pre><code class=\"language-bash line-numbers\">npm install dotenv\n<\/code><\/pre>\n<p>Then, create a <code>.env<\/code> file in your project root and define your variables:<\/p>\n<pre><code class=\"language-env line-numbers\">PORT=3000\nDB_STRING=mongodb:\/\/localhost\/devdb\n<\/code><\/pre>\n<p>In your application, you can access these variables using <code>process.env<\/code>:<\/p>\n<pre><code class=\"language-javascript line-numbers\">require('dotenv').config();\nconsole.log(process.env.PORT); \/\/ Output: 3000\n<\/code><\/pre>\n<h3>Pros and Cons<\/h3>\n<p><strong>Pros:<\/strong><br \/>\n&#8211; <strong>Increased Efficiency:<\/strong> Automatic restarts with Nodemon save time.<br \/>\n&#8211; <strong>Convenience:<\/strong> Environment variables streamline configuration management.<\/p>\n<p><strong>Cons:<\/strong><br \/>\n&#8211; <strong>Additional Setup:<\/strong> Integrating Nodemon and environment variables requires initial setup effort.<\/p>\n<p>By incorporating these advanced techniques into your &#8216;npm run dev&#8217; command, you not only improve your development efficiency but also take a significant step towards a more professional and scalable Node.js project setup.<\/p>\n<h2>Exploring Beyond &#8216;npm run dev&#8217;<\/h2>\n<h3>Embrace Docker for Consistent Environments<\/h3>\n<p>As your projects grow in complexity, you might seek more robust solutions to manage your development environments. <strong>Docker<\/strong> emerges as a powerful ally, enabling you to containerize your applications and their dependencies. This ensures that your application runs consistently across all environments.<\/p>\n<p>To leverage Docker in your workflow, start by creating a <code>Dockerfile<\/code> in your project root:<\/p>\n<pre><code class=\"language-Dockerfile line-numbers\">FROM node:14\nWORKDIR \/app\nCOPY . .\nRUN npm install\nCMD [\"npm\", \"run\", \"dev\"]\n<\/code><\/pre>\n<p>This <code>Dockerfile<\/code> sets up a Node.js environment, copies your project files, installs dependencies, and specifies <code>npm run dev<\/code> as the default command. To build and run your Docker container, execute:<\/p>\n<pre><code class=\"language-bash line-numbers\">docker build -t my-node-app .\ndocker run -p 3000:3000 my-node-app\n\n# Output:\n# &gt; node app.js\n# Listening on http:\/\/localhost:3000\n<\/code><\/pre>\n<p>This setup encapsulates your development environment within a Docker container, ensuring that it remains consistent regardless of where it&#8217;s deployed. It&#8217;s an excellent step towards achieving development-production parity.<\/p>\n<h3>Integrate Task Runners for Automation<\/h3>\n<p>Task runners like <strong>Gulp<\/strong> or <strong>Webpack<\/strong> can further automate and enhance your development process. These tools can compile your code, minify assets, and even refresh your browser automatically upon file changes, integrating seamlessly with <code>npm run dev<\/code>.<\/p>\n<p>For example, integrating Webpack might involve adding a new script in your <code>package.json<\/code>:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"webpack serve --mode development\"\n}\n<\/code><\/pre>\n<p>This command uses Webpack to bundle your application and serve it in development mode, offering features like hot module replacement.<\/p>\n<h3>Pros and Cons of Alternative Approaches<\/h3>\n<p><strong>Pros:<\/strong><br \/>\n&#8211; <strong>Consistency:<\/strong> Docker ensures your environment is the same everywhere.<br \/>\n&#8211; <strong>Automation:<\/strong> Task runners like Gulp and Webpack streamline repetitive tasks.<\/p>\n<p><strong>Cons:<\/strong><br \/>\n&#8211; <strong>Complexity:<\/strong> Setting up Docker and integrating task runners can introduce additional complexity.<br \/>\n&#8211; <strong>Learning Curve:<\/strong> There&#8217;s a learning curve involved in mastering these tools.<\/p>\n<p>By exploring these alternative approaches, you can tailor your development environment to your project&#8217;s specific needs, ensuring efficiency and consistency across all stages of development.<\/p>\n<h2>Overcoming &#8216;npm run dev&#8217; Hurdles<\/h2>\n<h3>Tackling &#8216;Script Not Found&#8217;<\/h3>\n<p>One of the most common issues developers encounter with &#8216;npm run dev&#8217; is the dreaded &#8216;script not found&#8217; error. This typically occurs when the &#8216;dev&#8217; script is missing or incorrectly defined in your <code>package.json<\/code>. To resolve this, ensure your &#8216;dev&#8217; script is properly set up:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"nodemon app.js\"\n}\n<\/code><\/pre>\n<p>After adding or correcting the &#8216;dev&#8217; script, running <code>npm run dev<\/code> should successfully start your development server. If the problem persists, double-check for typos or syntax errors in your <code>package.json<\/code>.<\/p>\n<h3>Resolving Environment Variable Issues<\/h3>\n<p>Environment variables are crucial for configuring your application without hard-coding sensitive information. If <code>npm run dev<\/code> isn&#8217;t recognizing your environment variables, ensure you&#8217;ve loaded them correctly using <code>dotenv<\/code> or a similar package:<\/p>\n<pre><code class=\"language-javascript line-numbers\">require('dotenv').config();\nconsole.log(process.env.MY_VARIABLE); \/\/ Replace MY_VARIABLE with your actual variable name\n\n# Output:\n# Your variable value\n<\/code><\/pre>\n<p>This code block demonstrates how to load and access environment variables. If you don&#8217;t see the expected output, verify that your <code>.env<\/code> file is in the root directory of your project and that it&#8217;s correctly formatted.<\/p>\n<h3>Avoiding Port Conflicts<\/h3>\n<p>Port conflicts occur when another process is using the port your application is trying to bind to. This is common when running multiple projects simultaneously. To avoid this, you can configure your application to use a different port if the default one is unavailable:<\/p>\n<pre><code class=\"language-javascript line-numbers\">const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3001; \/\/ Fallback to 3001 if process.env.PORT is unavailable\n\napp.listen(PORT, () =&gt; {\n  console.log(`Server running on http:\/\/localhost:${PORT}`);\n});\n\n# Output:\n# Server running on http:\/\/localhost:3001\n<\/code><\/pre>\n<p>In this example, we use a fallback port (3001) if the preferred port is not available. This simple strategy can help mitigate port conflicts, ensuring your development server runs smoothly.<\/p>\n<h3>Best Practices and Optimization<\/h3>\n<ul>\n<li><strong>Keep your <code>package.json<\/code> clean and organized:<\/strong> Regularly review your scripts and dependencies to avoid errors.<\/li>\n<li><strong>Use environment variables wisely:<\/strong> Store sensitive information in environment variables and keep your <code>.env<\/code> file out of version control.<\/li>\n<li><strong>Handle port conflicts gracefully:<\/strong> Implement fallback strategies to ensure your application always has a port to run on.<\/li>\n<\/ul>\n<p>By addressing these common issues and adhering to best practices, you can optimize your development process and minimize disruptions when using &#8216;npm run dev&#8217;.<\/p>\n<h2>Npm and package.json Essentials<\/h2>\n<h3>The Heart of Node.js Projects<\/h3>\n<p>Understanding <code>npm<\/code> (Node Package Manager) is crucial for every Node.js developer. It&#8217;s not just a tool for installing packages; it&#8217;s the backbone of managing project dependencies, scripts, and more. The <code>package.json<\/code> file, often considered the heart of a Node.js project, plays a pivotal role in this ecosystem.<\/p>\n<p>At its core, <code>package.json<\/code> serves multiple purposes:<\/p>\n<ul>\n<li><strong>Dependency Management:<\/strong> It lists all the project dependencies, ensuring consistency across environments.<\/li>\n<li><strong>Script Automation:<\/strong> It allows the definition of scripts for common tasks, such as starting the development server.<\/li>\n<\/ul>\n<p>Here&#8217;s a minimal <code>package.json<\/code> example:<\/p>\n<pre><code class=\"language-json line-numbers\">{\n  \"name\": \"my-app\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"start\": \"node app.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.17.1\"\n  }\n}\n<\/code><\/pre>\n<p>In this example, <code>npm start<\/code> would execute <code>node app.js<\/code>, starting the application. The dependencies section ensures that anyone working on the project uses the same version of Express.<\/p>\n<h3>Scripts: Beyond &#8216;npm run dev&#8217;<\/h3>\n<p>The <code>scripts<\/code> section of <code>package.json<\/code> is where <code>npm run dev<\/code> comes into play. It&#8217;s a custom script, typically used to start a development server with features like hot reloading or debugging tools enabled. This is different from the <code>start<\/code> script, which is often used in production environments.<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"nodemon app.js\",\n  \"start\": \"node app.js\"\n}\n<\/code><\/pre>\n<p>This setup illustrates the distinction between development (<code>dev<\/code>) and production (<code>start<\/code>) environments. Using <code>nodemon<\/code> for the <code>dev<\/code> script automates the process of restarting the server upon file changes, enhancing development efficiency.<\/p>\n<h3>Development vs. Production Environments<\/h3>\n<p>The difference between development and production environments is crucial. Development environments are configured for ease of use and debugging, often with additional tools like live reloading. Production environments, on the other hand, are optimized for performance and stability.<\/p>\n<p>Understanding and utilizing the appropriate scripts and configurations for each environment is essential for a smooth workflow. This ensures that developers can work efficiently in the development phase, while the application runs optimally in production.<\/p>\n<p>By grasping these fundamentals, developers can leverage <code>npm<\/code> and <code>package.json<\/code> to streamline their development process, making <code>npm run dev<\/code> a powerful command in their development arsenal.<\/p>\n<h2>&#8216;npm run dev&#8217; in Complex Projects<\/h2>\n<h3>Integrating Front-End Build Tools<\/h3>\n<p>As projects grow in complexity, integrating front-end build tools like <strong>Webpack<\/strong> or <strong>Parcel<\/strong> with <code>npm run dev<\/code> becomes essential. These tools offer a plethora of features such as module bundling, asset optimization, and hot module replacement, significantly enhancing the development experience.<\/p>\n<p>Consider a scenario where you integrate Webpack with your <code>npm run dev<\/code> setup. Your <code>package.json<\/code> might include a script like this:<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"dev\": \"webpack-dev-server --mode development\"\n}\n<\/code><\/pre>\n<p>This command starts the Webpack development server in development mode, providing features like live reloading and hot module replacement out of the box. Here&#8217;s a simplified output you might see:<\/p>\n<pre><code class=\"language-bash line-numbers\"># Output:\n# Project is running at http:\/\/localhost:8080\/\n# webpack output is served from \/dist\/\n<\/code><\/pre>\n<p>This setup not only streamlines your development process but also ensures that your front-end assets are efficiently managed and served.<\/p>\n<h3>Related Commands and Functions<\/h3>\n<p>Besides <code>npm run dev<\/code>, several related commands and functions can enhance your workflow. For instance, <code>npm run build<\/code> is commonly used in conjunction with <code>npm run dev<\/code> for preparing the application for production by compiling and minifying assets.<\/p>\n<pre><code class=\"language-json line-numbers\">\"scripts\": {\n  \"build\": \"webpack --mode production\"\n}\n<\/code><\/pre>\n<p>Executing <code>npm run build<\/code> compiles your application with Webpack in production mode, optimizing your assets for performance. This command is crucial for preparing your application for deployment.<\/p>\n<h3>Further Resources for &#8216;npm run dev&#8217; Mastery<\/h3>\n<p>To deepen your understanding and mastery of <code>npm run dev<\/code> and its ecosystem, here are three invaluable resources:<\/p>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/nodejs.org\/en\/docs\/\" target=\"_blank\" rel=\"noopener\">Visit Node.js Documentation<\/a> to explore the fundamentals and advanced topics in Node.js.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/webpack.js.org\/concepts\/\" target=\"_blank\" rel=\"noopener\">Explore Webpack Concepts<\/a> for a comprehensive understanding of Webpack and how it can be integrated with Node.js projects.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/parceljs.org\/docs\/\" target=\"_blank\" rel=\"noopener\">Learn about Parcel<\/a>, a fast, zero-configuration web application bundler, and how to use it in your Node.js projects.<\/p>\n<\/li>\n<\/ul>\n<p>These resources provide a wealth of information that can help you leverage <code>npm run dev<\/code> more effectively in your projects, ensuring a robust and efficient development workflow.<\/p>\n<h2>Wrapping Up: Mastering &#8216;npm run dev&#8217;<\/h2>\n<p>In this comprehensive guide, we&#8217;ve explored the vital command &#8216;npm run dev&#8217;, a cornerstone in the development of Node.js projects. This command initiates your development environment, setting the stage for efficient and streamlined workflow.<\/p>\n<p>We began with the basics, understanding the role of <code>package.json<\/code> and how to set up a simple &#8216;dev&#8217; script to start our Node.js server. This foundational knowledge is crucial for anyone stepping into the world of Node.js development.<\/p>\n<p>Moving forward, we delved into more advanced usage, integrating tools like Nodemon for automatic server restarts and employing environment variables for more dynamic configurations. These intermediate steps not only make the development process more efficient but also introduce best practices for managing application settings.<\/p>\n<p>Exploring alternative approaches, we discussed the integration of Docker and the use of task runners like Gulp and Webpack. These expert-level configurations offer a glimpse into the possibilities for scaling and optimizing Node.js projects, ensuring consistency across environments and automating repetitive tasks.<\/p>\n<table>\n<thead>\n<tr>\n<th>Approach<\/th>\n<th>Efficiency<\/th>\n<th>Complexity<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Basic &#8216;npm run dev&#8217;<\/td>\n<td>High<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Nodemon Integration<\/td>\n<td>Higher<\/td>\n<td>Moderate<\/td>\n<\/tr>\n<tr>\n<td>Docker &amp; Task Runners<\/td>\n<td>Highest<\/td>\n<td>High<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Whether you&#8217;re just starting out with &#8216;npm run dev&#8217; or looking to enhance your current setup, we hope this guide has provided you with valuable insights and practical knowledge. The command &#8216;npm run dev&#8217; is more than just a way to start your development server; it&#8217;s a gateway to optimizing your development workflow and embracing the full potential of Node.js.<\/p>\n<p>With the right setup and understanding, &#8216;npm run dev&#8217; can significantly reduce development time and increase productivity. Embrace these techniques, and you&#8217;ll find yourself navigating the Node.js ecosystem with greater ease and confidence. Happy coding!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilizing the &#8216;npm run dev&#8217; command is essential for setting up and running development environments effectively at IOFLOOD. As we utilize various in-house bare metal cloud servers for development, we&#8217;ve found that using &#8216;npm run dev&#8217; is crucial for automating tasks related to startup, code compiling, and live reloading. To assist our customers and other [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":19432,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[125,155,121],"tags":[],"class_list":["post-18148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-node-js","category-programming-coding","cat-125-id","cat-155-id","cat-121-id","has_thumb"],"_links":{"self":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/18148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/comments?post=18148"}],"version-history":[{"count":9,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/18148\/revisions"}],"predecessor-version":[{"id":19528,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/posts\/18148\/revisions\/19528"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/media\/19432"}],"wp:attachment":[{"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/media?parent=18148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/categories?post=18148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ioflood.com\/blog\/wp-json\/wp\/v2\/tags?post=18148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}