{"id":5196,"date":"2023-04-17T20:09:50","date_gmt":"2023-04-17T20:09:50","guid":{"rendered":"https:\/\/puvox.software\/blog\/?p=5196"},"modified":"2024-02-15T08:00:23","modified_gmt":"2024-02-15T08:00:23","slug":"recognize-if-nodemon-is-started-first-time-not-restarted","status":"publish","type":"post","link":"https:\/\/puvox.software\/blog\/recognize-if-nodemon-is-started-first-time-not-restarted\/","title":{"rendered":"Recognize if nodemon is started first time, not restarted"},"content":{"rendered":"<div class=\"default-content-clss content_5196 type_post \">\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5196\" class=\"elementor elementor-5196\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7f92d758 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7f92d758\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-257babbf\" data-id=\"257babbf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-638336db elementor-widget elementor-widget-text-editor\" data-id=\"638336db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><\/p>\n<p class=\"wp-block-paragraph\">If you want in your js app to somehow recognize that it&#8217;s first time when nodemon starts (and not a restart due to script change), you might use this experimental (not reliable) solution.<\/p>\n<p><\/p>\n<p><\/p>\n<ol class=\"wp-block-list\">\n<li style=\"list-style-type: none;\">\n<ol><\/ol>\n<\/li>\n<\/ol>\n<p>1) in <code>package.json<\/code> place such content:<\/p>\n<div>\n<pre>\"scripts\": {<br \/>  \u00a0 \"MYSTART\": \"node app\/app.js\",<br \/>  \u00a0 \"preMYSTART\": \"node -e \\\"const fs=require('fs'); fs.writeFileSync(__dirname + '\/pre_firstrun_flag','')\\\"\"<br \/>\u00a0 }\n<\/pre>\n<div>note, the <code>pre<\/code> phrase there is for reason, it&#8217;s constant for node. so whatever you name your script (i.e. <code>MYSTART<\/code>) you should just add <code>pre<\/code> in front of it, so that command will be pre-run automatically when you run <code>npm run MYSTART<\/code><\/div>\n<div>\u00a0<\/div>\n<div>2) next, in your script you can detect with <code>isFirstRun<\/code> variable:<\/div>\n<div>\n<pre><span style=\"color: #569cd6;\">const<\/span> <span style=\"color: #4fc1ff;\">isFirstRun<\/span> = <span style=\"color: #4ec9b0;\">fs<\/span>.<span style=\"color: #dcdcaa;\">existsSync<\/span>( <span style=\"color: #ce9178;\">'path\/to\/root\/pre_firstrun_flag'<\/span>);<br \/><span style=\"color: #c586c0;\">if<\/span> (<span style=\"color: #4fc1ff;\">isFirstRun<\/span>) <span style=\"color: #4ec9b0;\">fs<\/span>.<span style=\"color: #dcdcaa;\">unlinkSync<\/span>(<span style=\"color: #ce9178;\">'path\/to\/root\/pre_firstrun_flag'<\/span>);<\/pre>\n<\/div>\n<\/div>\n<p><\/p>\n<p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>","protected":false},"excerpt":{"rendered":"<div class=\"default-content-clss excerpt_5196 type_post \"><p>If you want in your js app to somehow recognize that it&#8217;s first time when nodemon starts (and not a restart due to script change), you might use this experimental<a class=\"excerpt-read-more\" href=\"https:\/\/puvox.software\/blog\/recognize-if-nodemon-is-started-first-time-not-restarted\/\">(Continue Reading)<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":5528,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5196","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/5196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/comments?post=5196"}],"version-history":[{"count":1,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/5196\/revisions"}],"predecessor-version":[{"id":5529,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/posts\/5196\/revisions\/5529"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/media\/5528"}],"wp:attachment":[{"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/media?parent=5196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/categories?post=5196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/puvox.software\/blog\/wp-json\/wp\/v2\/tags?post=5196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}