<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rajesh Kumaravel</title>
    <description>The latest articles on DEV Community by Rajesh Kumaravel (@rajeshkumaravel).</description>
    <link>https://dev.to/rajeshkumaravel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F282100%2Fe7300331-fdc5-42a6-a3dc-2c4a1d331c37.jpeg</url>
      <title>DEV Community: Rajesh Kumaravel</title>
      <link>https://dev.to/rajeshkumaravel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rajeshkumaravel"/>
    <language>en</language>
    <item>
      <title>Demystifying NPM and NPX: A Dive into Package Management</title>
      <dc:creator>Rajesh Kumaravel</dc:creator>
      <pubDate>Tue, 13 Feb 2024 10:57:26 +0000</pubDate>
      <link>https://dev.to/rajeshkumaravel/demystifying-npm-and-npx-a-dive-into-package-management-5c92</link>
      <guid>https://dev.to/rajeshkumaravel/demystifying-npm-and-npx-a-dive-into-package-management-5c92</guid>
      <description>&lt;h2&gt;
  
  
  Demystifying NPM and NPX: A Dive into Package Management
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving landscape of web development, efficient package management has become an integral part of the workflow. Among the tools that have significantly shaped this ecosystem, npm (Node Package Manager) stands out as a key player. To complement npm, a tool called npx was introduced, adding a layer of versatility to the package management process.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Birth of npx
&lt;/h2&gt;

&lt;p&gt;As projects and their dependencies grew in complexity, developers encountered challenges in managing and executing packages seamlessly. npm addressed these issues by providing a centralized repository for JavaScript libraries and a reliable way to install, manage, and share packages. However, as projects expanded, the need for an improved execution environment became evident.&lt;/p&gt;

&lt;p&gt;Enter npx, a tool bundled with npm (versions 5.2.0 and higher) to tackle the intricacies of package execution. Prior to npx, executing binaries from packages installed via npm required adding those binaries to the system's PATH. This approach had its drawbacks, including potential conflicts and difficulties in version management.&lt;/p&gt;

&lt;p&gt;With npx, the execution of packages is streamlined. It allows developers to run binaries from packages without the need for a global install, making it easier to manage project-specific dependencies. Additionally, npx enables the execution of binaries from packages that are not globally installed, resolving the issue of having to specify the full path to the executable.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Closer Look at npm
&lt;/h2&gt;

&lt;p&gt;npm, the backbone of the Node.js package ecosystem, is used to install, manage, and share packages of code. It facilitates the discovery and distribution of packages, making it an essential tool for developers building applications with JavaScript, whether for the front end or back end.&lt;/p&gt;

&lt;p&gt;The npm registry is a vast collection of open-source packages, providing developers with a rich set of tools, libraries, and frameworks to enhance their projects. Installing a package is as simple as running the command &lt;code&gt;npm install &amp;lt;package-name&amp;gt;&lt;/code&gt;, and npm takes care of fetching and installing the specified package along with its dependencies.&lt;/p&gt;

&lt;p&gt;npm not only excels in package installation but also facilitates version management. Developers can specify the desired version of a package in the project's &lt;code&gt;package.json&lt;/code&gt; file, ensuring consistency across different environments and team members.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unveiling npx's Power
&lt;/h2&gt;

&lt;p&gt;While npm handles package installation, npx focuses on package execution. With npx, developers can run binaries from packages without installing them globally or specifying their full path. This dynamic execution environment enhances the flexibility and portability of JavaScript applications.&lt;/p&gt;

&lt;p&gt;One of the noteworthy features of npx is its ability to run the latest version of a package, even if it's not installed globally. For example, running &lt;code&gt;npx create-react-app my-app&lt;/code&gt; initiates a new React application using the latest version of Create React App without the need to install it globally beforehand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Running Commands from Packages
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx eslint &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, npx is used to initialize ESLint in a project without the need for a global ESLint installation. The command fetches the latest version of ESLint and executes it with the &lt;code&gt;--init&lt;/code&gt; flag, guiding the user through the setup process.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Executing One-off Commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;npx serve&lt;/code&gt; runs a local development server using the 'serve' package without the necessity of installing 'serve' globally. This is particularly useful for ad-hoc tasks and quick development setups.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Trying Out New Tools
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-react-app my-new-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creating a new React application using Create React App is a common scenario. With npx, developers can try out the latest version of Create React App without installing it globally. This keeps the project's dependencies neatly scoped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;npm and npx, working hand in hand, provide a comprehensive solution for managing and executing JavaScript packages in modern development workflows. npm excels in package installation and version management, while npx adds a layer of convenience by facilitating the execution of packages without the need for global installs.&lt;/p&gt;

&lt;p&gt;As the JavaScript ecosystem continues to evolve, these tools remain crucial for developers seeking efficient and scalable package management solutions. Whether you're a seasoned developer or just starting your journey, understanding npm and npx is fundamental to harnessing the full potential of the JavaScript ecosystem.&lt;/p&gt;




&lt;p&gt;And that’s it!&lt;/p&gt;

&lt;p&gt;I hope you found this article a useful primer for getting started with npx, and as always, thanks for reading!&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;br&gt;
RK&lt;/p&gt;

</description>
      <category>node</category>
      <category>npm</category>
      <category>npx</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Introducing Github Dashboard: Open Source Project for Analytics and Data Visualisation</title>
      <dc:creator>Rajesh Kumaravel</dc:creator>
      <pubDate>Wed, 28 Jun 2023 06:00:51 +0000</pubDate>
      <link>https://dev.to/rajeshkumaravel/introducing-github-dashboard-open-source-project-for-analytics-and-data-visualisation-1b1g</link>
      <guid>https://dev.to/rajeshkumaravel/introducing-github-dashboard-open-source-project-for-analytics-and-data-visualisation-1b1g</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Today, I am thrilled to announce the release of GitHub Dashboard, an open source project built using Node JS, Angular, Vercel, and Nx. This project aims to provide a comprehensive and intuitive way to analyse and visualise data from GitHub repositories. With OAuth login for authentication, GitHub Dashboard enables users to fetch repository discussions and pull requests data, empowering them to gain valuable insights through high-level metrics, cards, and graphs&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication and Data Retrieval
&lt;/h2&gt;

&lt;p&gt;GitHub Dashboard leverages OAuth login for secure authentication, ensuring that only authorised users will be allowed to access the platform. By granting necessary permissions, users will be able to fetch discussions and pull requests data from public repositories. This feature allows developers, project managers, and data enthusiasts to explore and analyse repository activities effortlessly&lt;/p&gt;

&lt;h2&gt;
  
  
  Analytics and Data Visualisation
&lt;/h2&gt;

&lt;p&gt;One of the key highlights of GitHub Dashboard is its powerful analytics and data visualisation capabilities. The dashboard presents a user-friendly interface, displaying insightful cards and interactive graphs that provide a bird's-eye view of repository metrics. With just a glance, users can quickly assess crucial statistics such as the count of discussions, pull requests, contributors, and more. These visual representations make it easier to grasp the repository's overall health and engagement&lt;/p&gt;

&lt;h2&gt;
  
  
  Flexibility and Customisation
&lt;/h2&gt;

&lt;p&gt;GitHub Dashboard is designed to be highly flexible and customisable. Users can seamlessly navigate through different public repositories and switch between various projects of interest&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;GitHub Dashboard is built using a powerful combination of technologies, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js: A server-side JavaScript runtime environment, providing a scalable and efficient backend&lt;/li&gt;
&lt;li&gt;Angular: A popular frontend framework for building robust and interactive web applications&lt;/li&gt;
&lt;li&gt;Vercel: A cloud platform for static sites and serverless functions, ensuring reliable hosting and deployment&lt;/li&gt;
&lt;li&gt;Nx: A powerful extensible development framework for building monorepo-based applications, improving code sharing and maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgments
&lt;/h2&gt;

&lt;p&gt;Completing the GitHub Dashboard project wouldn't have been possible without the support and contributions of my amazing friends. Their dedication, expertise, and guidance have been instrumental in bringing this project to life.&lt;br&gt;
I want to express my heartfelt gratitude to Mathew Jose Pallan, Harshit T Rao, &lt;a href="https://github.com/darshannagesh"&gt;Darshan Nagesh&lt;/a&gt; and &lt;a href="https://github.com/Shreevas-Karanth"&gt;Shreevas Karanth&lt;/a&gt; for their valuable input, feedback, and encouragement throughout this journey&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With GitHub Dashboard, analysing and visualising data from public repositories has been made much easier and simpler. Be it a developer or a project manager or a data enthusiast, this open source project provides a powerful tool to gain actionable insights and understand the health and engagement of GitHub repositories.&lt;/p&gt;

&lt;p&gt;Thank you for your support, and I look forward to your feedback&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://openvizhub.vercel.app"&gt;Github Dashboard&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;RK&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>angular</category>
    </item>
    <item>
      <title>Angular Simple Slick without dependencies</title>
      <dc:creator>Rajesh Kumaravel</dc:creator>
      <pubDate>Tue, 28 Feb 2023 05:56:25 +0000</pubDate>
      <link>https://dev.to/rajeshkumaravel/angular-simple-slick-without-dependencies-2e57</link>
      <guid>https://dev.to/rajeshkumaravel/angular-simple-slick-without-dependencies-2e57</guid>
      <description>&lt;h2&gt;
  
  
  Before we begin…
&lt;/h2&gt;

&lt;p&gt;Let us understand why angular plugins developed using jQuery raises concern about compatibility and integration.&lt;/p&gt;

&lt;p&gt;jQuery and Angular are both JavaScript libraries that provide different approaches to building web applications, and as such, they can be hostile to each other when used together. Some of the reasons why jQuery is hostile with Angular include&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conflicting syntax&lt;/strong&gt;&lt;br&gt;
jQuery and Angular have different syntaxes and ways of doing things, which can lead to conflicts and errors. For example, Angular uses directives and data binding to update the DOM, while jQuery uses selectors and methods&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance overhead&lt;/strong&gt;&lt;br&gt;
Using jQuery along with Angular can result in performance overhead, as both libraries will be loaded and executed. This can impact the speed and efficiency of your application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incompatibility issues&lt;/strong&gt;&lt;br&gt;
jQuery was not designed to work with Angular, and using the two together can result in incompatibility issues. This can cause errors and unexpected behaviour, making it difficult to diagnose and fix problems&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintenance complexity&lt;/strong&gt;&lt;br&gt;
Using both libraries together can lead to code that is more complex and difficult to maintain. This can make it harder to make changes and updates to your codebase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Duplicate functionality&lt;/strong&gt;&lt;br&gt;
Many of the features and functionality provided by jQuery are already available in Angular. Using both libraries can result in duplicate functionality, which can increase the size and complexity of your codebase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Different approaches to DOM manipulation&lt;/strong&gt;&lt;br&gt;
jQuery is primarily a DOM manipulation library, while Angular provides a full-featured framework for building web applications. The different approaches to DOM manipulation can result in conflicts and inconsistencies when using both libraries together&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr9ekek8va99wbmienir.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr9ekek8va99wbmienir.gif" alt="code_issue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall, while it is possible to use jQuery with Angular, it is generally not recommended due to the conflicts and challenges that can arise. It's generally best to stick with Angular's built-in capabilities and avoid using jQuery unless absolutely necessary&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Angular Simple Slick&lt;/strong&gt; / &lt;code&gt;ngxslick&lt;/code&gt; is a lightweight and very complete Angular library for rendering simple slideshow of elements without any 3rd party dependencies&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supports dots and arrow navigation&lt;/li&gt;
&lt;li&gt;Custom styling&lt;/li&gt;
&lt;li&gt;Multi row support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://ngx-carousel-slick-demo.vercel.app" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/ngx-simple-slick" rel="noopener noreferrer"&gt;NPM Plugin&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;Import in Angular&lt;/li&gt;
&lt;li&gt;Options&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&lt;p&gt;$ npm i ngx-simple-slick --save&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Import in Angular&lt;br&gt;
&lt;/h3&gt;
&lt;br&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;span class="gp"&gt;import { BrowserModule } from '@angular/platform-browser';&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;import { NgModule } from '@angular/core';&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;import { NgxSlickModule } from 'ngx-simple-slick';&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="go"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;import { AppComponent } from './app.component';&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="go"&gt;&lt;br&gt;
@NgModule({&lt;br&gt;
  declarations: [&lt;br&gt;
    AppComponent&lt;br&gt;
  ],&lt;br&gt;
  imports: [&lt;br&gt;
    BrowserModule,&lt;br&gt;
    NgxSlickModule&lt;br&gt;
  ],&lt;br&gt;
  providers: [ ],&lt;br&gt;
  bootstrap: [ AppComponent ]&lt;br&gt;
})&lt;br&gt;
export class AppModule { }

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;p&gt;// demo.component.ts&lt;br&gt;
export class DemoComponent implements OnInit {&lt;br&gt;
&lt;/p&gt;&lt;/span&gt;&lt;span class="gp"&gt;  dataObj = new Array(10);&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="go"&gt;  constructor() { }

&lt;p&gt;ngOnInit(): void {&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;

&lt;p&gt;// demo.component.html&lt;br&gt;
&lt;/p&gt;&lt;/span&gt;&lt;span class="gp"&gt;&amp;lt;ngxslick [dots]=true [loadStatus]="'done'"&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;   &amp;lt;ngxslick [dots]=true [loadStatus]="'done'"&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;      &amp;lt;ng-container *ngFor="let card of dataObj;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;let &lt;/span&gt;i &lt;span class="o"&gt;=&lt;/span&gt; index&lt;span class="s2"&gt;"&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;        &amp;lt;div class="card"&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;          &amp;lt;figure&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;            &amp;lt;img src="&lt;a href="https://via.placeholder.com/150x150?text=NG%20Slick" rel="noopener noreferrer"&gt;https://via.placeholder.com/150x150?text=NG%20Slick&lt;/a&gt;" /&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;            &amp;lt;figcaption&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;Card {{ i + 1 }}&amp;lt;/figcaption&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;          &amp;lt;/figure&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;        &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;      &amp;lt;/ng-container&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;    &amp;lt;/ngxslick&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="gp"&gt;&amp;lt;/ngxslick&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;br&gt;
&lt;/span&gt;&lt;span class="go"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Options&lt;br&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Values&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;loadStatus&lt;/td&gt;
&lt;td&gt;@Input String&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Optional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;done / fetching&lt;/td&gt;
&lt;td&gt;Status whether data loading is complete or fetching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dots&lt;/td&gt;
&lt;td&gt;@Input Boolean&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Optional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;true / false&lt;/td&gt;
&lt;td&gt;Dots navigation enabled if true; default arrow navigation is enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;left&lt;/td&gt;
&lt;td&gt;@Input String&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Optional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Custom class for left navigation arrow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;right&lt;/td&gt;
&lt;td&gt;@Input String&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Optional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Custom class for right navigation arrow&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why jQuery is hostile with Angular ?&lt;/li&gt;
&lt;li&gt;Angular Simple Slick plugin without any dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s it!&lt;/p&gt;

&lt;p&gt;I hope you found this article a useful primer for getting started with ngxslick, and as always, thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check this out npm package for more reference &lt;a href="https://www.npmjs.com/package/ngx-simple-slick" rel="noopener noreferrer"&gt;NGX Slick&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;br&gt;
RK&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>angular</category>
      <category>npm</category>
    </item>
    <item>
      <title>How to write and publish your first NPM package</title>
      <dc:creator>Rajesh Kumaravel</dc:creator>
      <pubDate>Mon, 19 Oct 2020 05:56:16 +0000</pubDate>
      <link>https://dev.to/rajeshkumaravel/how-to-write-and-publish-your-first-npm-package-1p49</link>
      <guid>https://dev.to/rajeshkumaravel/how-to-write-and-publish-your-first-npm-package-1p49</guid>
      <description>&lt;h2&gt;
  
  
  Before we begin…
&lt;/h2&gt;

&lt;p&gt;Before we begin this, you should have the following things set up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.npmjs.com/downloading-and-installing-node-js-and-npm" rel="noopener noreferrer"&gt;NodeJS&lt;/a&gt; and npm installed&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com" rel="noopener noreferrer"&gt;npm account&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choosing a package name
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9q3h68fuyk8e3crvn2q9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9q3h68fuyk8e3crvn2q9.jpg" alt="npm package name"&gt;&lt;/a&gt;&lt;br&gt;
You need to check whether the name is available for the npm package. If you are publishing unscoped (public) package; the name of the package should be unique.&lt;/p&gt;

&lt;p&gt;However, if you are publishing a scoped (private) package then name does not have to be unique and name takes the format of &lt;strong&gt;@npm_username/package-name&lt;/strong&gt;&lt;br&gt;
Read more on&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/using-npm/scope.html" rel="noopener noreferrer"&gt;Scoped packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/package-name-guidelines" rel="noopener noreferrer"&gt;Package name guidelines&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Initializing the npm package
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new directory and initialize using &lt;code&gt;npm init&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Initializing package will ask you a few questions for setup.&lt;br&gt;
The default &lt;code&gt;package.json&lt;/code&gt; file will be created in your project directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "number-to-comma-format",
  "version": "1.0.0",
  "description": "Convert a number to comma separated format",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" &amp;amp;&amp;amp; exit 1"
  },
  "author": "RAJESH K",
  "license": "MIT"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more on &lt;a href="https://docs.npmjs.com/files/package.json" rel="noopener noreferrer"&gt;package.json&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the Node module
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; field in package.json defines the entry point of your package.&lt;/p&gt;

&lt;p&gt;Let's create &lt;code&gt;index.js&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ touch index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following code to &lt;code&gt;index.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'use strict'

const defaultOptions = {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
};

/**
 * @param  {Number} num - Number to be converted
 * @returns - Formatted number format
 */
function formatNumberToComma(num) {
  return Number(num).toLocaleString('en', defaultOptions);
}

module.exports = formatNumberToComma;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add a README
&lt;/h2&gt;

&lt;p&gt;It's a good idea to include documentation for your package so others know how to use it&lt;br&gt;
Generally, a README should cover&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description of what your package does&lt;/li&gt;
&lt;li&gt;Installation and usage instructions&lt;/li&gt;
&lt;li&gt;Example code&lt;/li&gt;
&lt;li&gt;Contribution guidelines&lt;/li&gt;
&lt;li&gt;License used by the package &lt;em&gt;&lt;a href="https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/licensing-a-repository" rel="noopener noreferrer"&gt;Choosing the right license&lt;/a&gt;&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Test your package locally
&lt;/h2&gt;

&lt;p&gt;It is recommended to test your package locally before publishing to npm&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create and initialize new project outside package directory&lt;/li&gt;
&lt;li&gt;Package can be installed by the following command
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install number-to-comma-format
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The problem with this is that your package is still not published yet so it isn't in npm. You need to reference your package locally while developing and testing it.&lt;br&gt;
You could install the package using an absolute path to the package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install /home/rajesh/dev/number-to-comma-format
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Initialize Git
&lt;/h2&gt;

&lt;p&gt;Create a new repository in github for your package and push the source code to git&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/rajeshkumaravel/numbertocommaformat.git
git push origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Publish the package to npm
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sign in to npm&lt;/li&gt;
&lt;li&gt;You'll be prompted to enter username, password and email address which was used while registering to npm
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Now you can publish your package to npm by
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;VOILA...! Your package is now published on npm.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initialize &lt;code&gt;npm init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add node module/source code&lt;/li&gt;
&lt;li&gt;Test your package locally&lt;/li&gt;
&lt;li&gt;git initialize&lt;/li&gt;
&lt;li&gt;Publish package &lt;code&gt;npm publish&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s it!&lt;/p&gt;

&lt;p&gt;I hope you found this article a useful primer for getting started with publishing on npm, and as always, thanks for reading!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check this out npm package for more reference &lt;a href="https://www.npmjs.com/package/node-express-req-id" rel="noopener noreferrer"&gt;Node express request id&lt;/a&gt;  &lt;a href="https://github.com/rajeshkumaravel/express-req-id" rel="noopener noreferrer"&gt;Source&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;br&gt;
RK&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>npm</category>
    </item>
    <item>
      <title>Google Firebase Functions : Setting and accessing environment variable</title>
      <dc:creator>Rajesh Kumaravel</dc:creator>
      <pubDate>Fri, 11 Sep 2020 05:18:31 +0000</pubDate>
      <link>https://dev.to/rajeshkumaravel/google-firebase-functions-setting-and-accessing-environment-variable-1gn2</link>
      <guid>https://dev.to/rajeshkumaravel/google-firebase-functions-setting-and-accessing-environment-variable-1gn2</guid>
      <description>&lt;p&gt;It's always a good idea to externalize application keys/secrets from code.&lt;br&gt;
Google Firebase Functions has a feature that allows you to specify environment variables of key/value pairs using &lt;a href="https://firebase.google.com/docs/cli"&gt;Firebase CLI&lt;/a&gt; and can be accessed by your code at runtime.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Set env variable&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firebase functions:config:set config.key="SECRET_KEY" config.pass="SECRET_PASS"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;NOTE: You must redeploy functions to make the new configuration available.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Deploy functions&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firebase deploy --only functions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Accessing env variables&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const secretKey  = firebase.config().config.key;
const secretPass = firebase.config().config.pass;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Retrieve all variables&lt;/strong&gt;
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firebase functions:config:get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "config": {
    "key": "SECRET_KEY",
    "pass": "SECRET_PASS"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Unset a variable&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firebase functions:config:unset config.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's consider using a file where we can keep all the environment variables.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;env.json&lt;/code&gt;, a file that will contain all our environment variables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "config": {
    "host": "domain",
    "key": "SECRET_KEY",
    "pass": "SECRET_PASS"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How to deploy the variables with the &lt;code&gt;env.json&lt;/code&gt; file?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;firebase functions:config:set env="$(cat env.json)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Great! Now we can make a bulk update of our variables and keep track of them.&lt;/p&gt;

</description>
      <category>node</category>
      <category>googlecloud</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
