<?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: longlongago</title>
    <description>The latest articles on DEV Community by longlongago (@longlongago).</description>
    <link>https://dev.to/longlongago</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%2F692362%2Fa709d843-1861-4a2e-b31d-e66d5e05a89c.png</url>
      <title>DEV Community: longlongago</title>
      <link>https://dev.to/longlongago</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/longlongago"/>
    <language>en</language>
    <item>
      <title>Command line tools for deploying based on node.js</title>
      <dc:creator>longlongago</dc:creator>
      <pubDate>Tue, 16 Jul 2024 02:51:45 +0000</pubDate>
      <link>https://dev.to/longlongago/command-line-tools-for-deploying-based-on-nodejs-3nng</link>
      <guid>https://dev.to/longlongago/command-line-tools-for-deploying-based-on-nodejs-3nng</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13hjt2tnbxwxfvfk036a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13hjt2tnbxwxfvfk036a.png" alt="Image description" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  @nebulae-cli/deploy
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Command line tools for deploying, github: &lt;a href="https://github.com/longlongago2/deploy-cli" rel="noopener noreferrer"&gt;https://github.com/longlongago2/deploy-cli&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Since my native language is Chinese, please forgive me for the language of the CLI tool, you can modify it after forking&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🪄 Support multiple configuration file formats, such as &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;yaml&lt;/code&gt;, &lt;code&gt;js&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🚩 Supports configuring multiple tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;⚡ Supports individual step execution, such as &lt;code&gt;connect&lt;/code&gt;, &lt;code&gt;clean&lt;/code&gt;, &lt;code&gt;backup&lt;/code&gt;, &lt;code&gt;upload&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌍 Support global configuration&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Translations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//./docs/README.zh.md"&gt;简体中文&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Global install
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @nebulae-cli/deploy &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;test &lt;code&gt;deploy --version&lt;/code&gt;, If the version number is successfully displayed, it means the installation is successful&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project install
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @nebulae-cli/deploy &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If you did not install globally, the command should be invoked using &lt;code&gt;./node_modules/.bin/deploy --version&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;How to use command line tools?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. Generate deploy config file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deploy init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: deploy init|generate &lt;span class="o"&gt;[&lt;/span&gt;options]

init&lt;span class="o"&gt;(&lt;/span&gt;generate&lt;span class="o"&gt;)&lt;/span&gt; deploy config file

Options:
  &lt;span class="nt"&gt;-t&lt;/span&gt;, &lt;span class="nt"&gt;--type&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;      file &lt;span class="nb"&gt;type&lt;/span&gt;: &lt;span class="s2"&gt;"json"&lt;/span&gt; | &lt;span class="s2"&gt;"yaml"&lt;/span&gt; | &lt;span class="s2"&gt;"javascript"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;default: &lt;span class="s2"&gt;"javascript"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
  &lt;span class="nt"&gt;-m&lt;/span&gt;, &lt;span class="nt"&gt;--module&lt;/span&gt; &amp;lt;module&amp;gt;  javascript module &lt;span class="nb"&gt;type&lt;/span&gt;: &lt;span class="s2"&gt;"commonjs"&lt;/span&gt; | &lt;span class="s2"&gt;"cjs"&lt;/span&gt; | &lt;span class="s2"&gt;"esm"&lt;/span&gt; | &lt;span class="s2"&gt;"mjs"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;default: &lt;span class="s2"&gt;"cjs"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
  &lt;span class="nt"&gt;-g&lt;/span&gt;, &lt;span class="nt"&gt;--global&lt;/span&gt;           generate global config file
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--help&lt;/span&gt;             display &lt;span class="nb"&gt;help &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;command&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Modify the configuration file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** @type {import("@nebulae-cli/deploy").ConfigOptions} */&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;xxx.xx.xxx.x&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;server_ssh_name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// password: '',&lt;/span&gt;
  &lt;span class="c1"&gt;// privateKey: '',&lt;/span&gt;
  &lt;span class="c1"&gt;// autoBackup: true,&lt;/span&gt;
  &lt;span class="c1"&gt;// autoClean: false, // If the task attribute does not exist, it will take effect&lt;/span&gt;
  &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;task name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;disabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your/dist/path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;remoteDir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/your/server/path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;autoBackup&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;autoClean&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// All attributes support upward merging. For example, configuration common to all tasks can be configured on the root property&lt;/span&gt;
      &lt;span class="c1"&gt;// backupDir: '',&lt;/span&gt;
      &lt;span class="c1"&gt;// deployedCommands: [], // Remote commands executed after deployment, such as ['cd/var/applications', 'java - jar xxx. jar'], will use &amp;amp;&amp;amp; to merge multiple commands&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Test the connection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deploy connect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: deploy connect &lt;span class="o"&gt;[&lt;/span&gt;options]

&lt;span class="nb"&gt;test &lt;/span&gt;the connection to server

Options:
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--host&lt;/span&gt; &amp;lt;host&amp;gt;              ssh server address
  &lt;span class="nt"&gt;-p&lt;/span&gt;, &lt;span class="nt"&gt;--port&lt;/span&gt; &amp;lt;port&amp;gt;              ssh server port &lt;span class="o"&gt;(&lt;/span&gt;default: &lt;span class="s2"&gt;"22"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
  &lt;span class="nt"&gt;-u&lt;/span&gt;, &lt;span class="nt"&gt;--username&lt;/span&gt; &amp;lt;username&amp;gt;      ssh server username
  &lt;span class="nt"&gt;-w&lt;/span&gt;, &lt;span class="nt"&gt;--password&lt;/span&gt; &amp;lt;password&amp;gt;      ssh server password
  &lt;span class="nt"&gt;-k&lt;/span&gt;, &lt;span class="nt"&gt;--privateKey&lt;/span&gt; &amp;lt;privateKey&amp;gt;  ssh private key path
  &lt;span class="nt"&gt;-c&lt;/span&gt;, &lt;span class="nt"&gt;--config&lt;/span&gt; &amp;lt;config&amp;gt;          config file path
  &lt;span class="nt"&gt;--help&lt;/span&gt;                         display &lt;span class="nb"&gt;help &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;command&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Deploy
&lt;/h3&gt;



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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: deploy &lt;span class="o"&gt;[&lt;/span&gt;options] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

CLI &lt;span class="k"&gt;for &lt;/span&gt;deploy project to server

Options:
  &lt;span class="nt"&gt;-V&lt;/span&gt;, &lt;span class="nt"&gt;--version&lt;/span&gt;            output the version number
  &lt;span class="nt"&gt;-c&lt;/span&gt;, &lt;span class="nt"&gt;--config&lt;/span&gt;             config file path
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--help&lt;/span&gt;               display &lt;span class="nb"&gt;help &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;command

&lt;/span&gt;Commands:
  init|generate &lt;span class="o"&gt;[&lt;/span&gt;options]  init&lt;span class="o"&gt;(&lt;/span&gt;generate&lt;span class="o"&gt;)&lt;/span&gt; deploy config file
  connect &lt;span class="o"&gt;[&lt;/span&gt;options]        &lt;span class="nb"&gt;test &lt;/span&gt;the connection to server
  backup &lt;span class="o"&gt;[&lt;/span&gt;options]         backup remote project from server to &lt;span class="nb"&gt;local
  &lt;/span&gt;clean &lt;span class="o"&gt;[&lt;/span&gt;options]          clean server directory
  upload &lt;span class="o"&gt;[&lt;/span&gt;options]         upload &lt;span class="nb"&gt;local &lt;/span&gt;project dist to ssh server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can add scripts to &lt;strong&gt;package.json&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deploy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"deploy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then, use &lt;code&gt;npm run deploy&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Other commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deploy view config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: deploy view &lt;span class="o"&gt;[&lt;/span&gt;options] &amp;lt;config&amp;gt;

view deploy config file info

Options:
  &lt;span class="nt"&gt;-c&lt;/span&gt;, &lt;span class="nt"&gt;--config&lt;/span&gt; &amp;lt;config&amp;gt;  config file path
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--help&lt;/span&gt;             display &lt;span class="nb"&gt;help &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;command&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>node</category>
      <category>javascript</category>
      <category>devops</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
