<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Yarn｜林鼎淵 Dean Lin</title>
    <link>https://deanlin.net/tags/yarn/</link>
    <image><url>https://deanlin.net/images/author_hu_aa256fc934e9a932.jpg</url><title>Yarn｜林鼎淵 Dean Lin</title><link>https://deanlin.net/tags/yarn/</link><width>144</width><height>144</height></image>
    <description>林鼎淵（Dean Lin）的部落格：生成式 AI 企業內訓講師、外商資安公司軟體專家、7 本書作者。400 多篇文章用白話分享生成式 AI 實戰、Claude Code 與 Vibe Coding 教學、團隊合作與職場成長。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <copyright>© 2020–2026 林鼎淵 Dean Lin</copyright>
    <lastBuildDate>Fri, 15 Jan 2021 11:21:18 +0800</lastBuildDate>
    <atom:link href="https://deanlin.net/tags/yarn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>工程師的開發環境大補帖：Node.js、NVM、git、yarn、VSCode</title>
      <link>https://deanlin.net/blog/202101/developer-environment-setup/</link>
      <pubDate>Fri, 15 Jan 2021 11:21:18 +0800</pubDate>
      <guid>https://deanlin.net/blog/202101/developer-environment-setup/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>技術教學</category>
      <description>工欲善其事，必先利其器</description>
      <media:content url="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-og_hu_47edff0bf094e58d.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-01.webp" width="1400" height="694" alt="工程師的開發環境大補帖：Node.js、NVM、git、yarn、VSCode（圖 1）" fetchpriority="high" decoding="async"></p>
<blockquote>
<p><em>工欲善其事，必先利其器</em></p>
</blockquote>
<h2 id="為什麼寫這篇文章">為什麼寫這篇文章？<a class="h-anchor" href="#%e7%82%ba%e4%bb%80%e9%ba%bc%e5%af%ab%e9%80%99%e7%af%87%e6%96%87%e7%ab%a0" aria-label="這個段落的連結"></a></h2>
<p>因為我自己在<code>剛接觸程式時最痛恨的就是環境設定</code><br>不知道是我跟電腦不合還是怎樣，每次我學新東西的時候總是在環境設定這個環節卡的不要不要的<br>為了避免讀者在之後實戰的文章中一邊看一邊心理罵:「<strong>為什麼我們程式一模一樣但我的就是會錯?</strong>」這樣的憾事發生，所以我決定詳細的說明這個專案所需安裝的一切環境，並附上我本機安裝的工具版本，讓大家在日後的文章中可以順利操作與學習</p>
<blockquote>
<p><em>你們實際操作時通常都有新的版本了，如果最新版本有問題可以切換到筆者的版本來操作</em></p>
</blockquote>
<h2 id="需要安裝哪些工具">需要安裝哪些工具<a class="h-anchor" href="#%e9%9c%80%e8%a6%81%e5%ae%89%e8%a3%9d%e5%93%aa%e4%ba%9b%e5%b7%a5%e5%85%b7" aria-label="這個段落的連結"></a></h2>
<blockquote>
<p><code>說明包含 windows/mac 兩個系統的設定</code></p>
</blockquote>
<ol>
<li><a href="https://deanlin.net/blog/202101/developer-environment-setup/#e634">Node.js</a></li>
<li><a href="https://deanlin.net/blog/202101/developer-environment-setup/#8082">NVM</a></li>
<li><a href="https://deanlin.net/blog/202101/developer-environment-setup/#6dcd">git</a></li>
<li><a href="https://deanlin.net/blog/202101/developer-environment-setup/#bf69">yarn</a></li>
<li><a href="https://deanlin.net/blog/202101/developer-environment-setup/#d582">VSCode</a></li>
</ol>
<h2 id="開發環境介紹--設定">開發環境介紹 &amp; 設定<a class="h-anchor" href="#%e9%96%8b%e7%99%bc%e7%92%b0%e5%a2%83%e4%bb%8b%e7%b4%b9--%e8%a8%ad%e5%ae%9a" aria-label="這個段落的連結"></a></h2>
<h2 class="h-nomark" id="1-nodejs-官網">1. Node.js <a href="https://nodejs.org/en/about/">官網</a><a class="h-anchor" href="#1-nodejs-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-02.webp" width="119" height="73" alt="1. Node.js 官網（圖 2）" loading="lazy" decoding="async"></p>
<p>能夠在 server 端運行 JavaScript 的開放原始碼、跨平台 JavaScript 的執行環境。前端工程師的福音</p>
<blockquote>
<p><em>筆者安裝的版本：v16.19.1 (使用nvm安裝，後面會介紹)</em></p>
</blockquote>
<hr>
<h2 class="h-nomark" id="2-nvm-官網">2. nvm <a href="https://github.com/nvm-sh/nvm">官網</a><a class="h-anchor" href="#2-nvm-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p>由於 Node.js 更新速度是非常快的，而許多套件有 Node.js 版本的相依性，透過NVM你可以輕鬆切換 Node.js 版本來符合不同專案的使用環境</p>
<h3 id="-windows-安裝步驟">windows 安裝步驟<a class="h-anchor" href="#-windows-%e5%ae%89%e8%a3%9d%e6%ad%a5%e9%a9%9f" aria-label="這個段落的連結"></a></h3>
<ol>
<li>先進入<a href="https://github.com/coreybutler/nvm-windows/releases">windows下載頁面</a></li>
<li>選擇最新版本的下載 <strong>nvm-setup.zip</strong>(筆者版本為1.1.7，你看到這篇文章時可能有提供更新的版本)</li>
</ol>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-03.webp" width="1400" height="841" alt="windows 安裝步驟（圖 3）" loading="lazy" decoding="async"></p>
<p>3. 下載後一路瘋狂下一步即可</p>
<p>4. 安裝後開啟命令提示字元(CMD)</p>
<p>5. 在 CMD 輸入指令確認 nvm 是否安裝成功</p>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-04.webp" width="1200" height="591" alt="windows 安裝步驟（圖 4）" loading="lazy" decoding="async"></p>
<h3 id="-mac-安裝步驟">mac 安裝步驟<a class="h-anchor" href="#-mac-%e5%ae%89%e8%a3%9d%e6%ad%a5%e9%a9%9f" aria-label="這個段落的連結"></a></h3>
<ol>
<li>打開終端機(Terminal)，以下步驟皆在終端機操作</li>
<li>mac 建議先下載 Homebrew</li>
</ol>
<pre tabindex="0"><code>/bin/bash -c &#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)&#34;
</code></pre><p>3. 下載後安裝 nvm</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install nvm
</span></span></code></pre></div><p>4. 在終端機輸入指令確認 nvm 是否安裝成功</p>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-05.webp" width="1400" height="553" alt="mac 安裝步驟（圖 5）" loading="lazy" decoding="async"></p>
<h3 id="-用-nvm-安裝-nodejs">用 NVM 安裝 node.js<a class="h-anchor" href="#-%e7%94%a8-nvm-%e5%ae%89%e8%a3%9d-nodejs" aria-label="這個段落的連結"></a></h3>
<ul>
<li><code>指令：nvm install [version]</code></li>
<li>請切記要安裝一個 Node.js 版本(請選用<a href="https://nodejs.org/en/">LTS版本</a>)，不然你寫的程式會沒有可以運行的環境</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm install 16.19.1
</span></span></code></pre></div><blockquote>
<p>筆者nvm安裝版本：0.39.3</p>
</blockquote>
<hr>
<h2 class="h-nomark" id="3-git-官網">3. git <a href="https://git-scm.com/">官網</a><a class="h-anchor" href="#3-git-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-06.webp" width="200" height="84" alt="3. git 官網（圖 6）" loading="lazy" decoding="async"></p>
<p>這是對於程式版本控制的工具，透過他你可以輕鬆回到過去，並且在多人協作時也能有效管控<br><a href="https://git-scm.com/download/win">windows下載頁面</a>、<a href="https://git-scm.com/download/mac">mac下載頁面</a></p>
<blockquote>
<p><em>我有朋友使用 windows 怎麼樣都無法正常安裝 git，如果你也遇到了這個不幸，你還是有<a href="https://desktop.github.com/">Git桌面板</a>可以選擇的</em></p>
</blockquote>
<h3 id="常用指令">常用指令<a class="h-anchor" href="#%e5%b8%b8%e7%94%a8%e6%8c%87%e4%bb%a4" aria-label="這個段落的連結"></a></h3>
<ul>
<li>抓取遠端數據庫(僅確認有什麼更新，不合併)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git fetch
</span></span></code></pre></div><ul>
<li>抓取遠端數據庫更新</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git pull
</span></span></code></pre></div><ul>
<li>更新遠端數據庫</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git push
</span></span></code></pre></div><blockquote>
<p><em>筆者windows git安裝版本：2.27.0.windows.1</em></p>
</blockquote>
<hr>
<h2 class="h-nomark" id="4-yarn">4. yarn<a class="h-anchor" href="#4-yarn" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-07.webp" width="160" height="84" alt="4. yarn（圖 7）" loading="lazy" decoding="async"></p>
<p>這是專門安裝套件的軟體，站在巨人的肩膀上你才能看得更遠，妥善運用別人提供的套件，程式的路能走得更遠<br><a href="https://classic.yarnpkg.com/lang/en/">下載頁面</a></p>
<h3 id="常用指令-1">常用指令<a class="h-anchor" href="#%e5%b8%b8%e7%94%a8%e6%8c%87%e4%bb%a4-1" aria-label="這個段落的連結"></a></h3>
<ul>
<li>依據 package.json 安裝所有套件</li>
</ul>
<pre tabindex="0"><code>yarn
</code></pre><ul>
<li>安裝到 dependencies</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div><ul>
<li>安裝到 devDependencies</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span> –save-dev
</span></span></code></pre></div><ul>
<li>全域安裝套件(使該套件可在電腦任何位置被呼叫)</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn global add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div><blockquote>
<p><em>筆者yarn安裝版本：1.19.2</em></p>
</blockquote>
<hr>
<h2 class="h-nomark" id="5-vscode-官網">5. VScode <a href="https://code.visualstudio.com/">官網</a><a class="h-anchor" href="#5-vscode-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202101/developer-environment-setup/images/developer-environment-setup-08.webp" width="80" height="80" alt="5. VScode 官網（圖 8）" loading="lazy" decoding="async"></p>
<p>現在已經過了用記事本在打程式的年代了，透過 IDE(整合開發環境)可以大幅增加你撰寫程式的速度<br><a href="https://code.visualstudio.com/">VScode下載頁面</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>【Day5】用yarn安裝及控管套件 &amp; 善用關鍵字讓全世界的大神幫你一把</title>
      <link>https://deanlin.net/blog/202009/fb-ig-crawler-day-05/</link>
      <pubDate>Sun, 20 Sep 2020 10:52:25 +0800</pubDate>
      <guid>https://deanlin.net/blog/202009/fb-ig-crawler-day-05/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>技術教學</category>
      <description>我周圍有些人在面對需求時很喜歡寫一些市面上已經提供的套件而不是直接使用它，而且他們寫出來的套件 bug 通常比原版多很多...</description>
      <media:content url="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/cover_hu_cc6c4b450dea49b6.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<blockquote>
<p>如果屠龍刀是系統贈送的武器，你為什麼要自己打造一個破鐵刀?</p>
</blockquote>
<h2 id="為什麼寫這篇文章">為什麼寫這篇文章？<a class="h-anchor" href="#%e7%82%ba%e4%bb%80%e9%ba%bc%e5%af%ab%e9%80%99%e7%af%87%e6%96%87%e7%ab%a0" aria-label="這個段落的連結"></a></h2>
<p>我周圍有些人在面對需求時很喜歡寫一些市面上已經提供的套件而不是直接使用它，而且他們寫出來的套件 bug 通常比原版多很多&hellip;</p>
<p>以個人的開發經驗來說，有 97% 以上的套件我是看過說明文檔就去使用，只有 3% 會去看這份套件到底怎麼寫，<mark>會去看他怎麼寫的套件通常不是因為他寫的太好，而是他寫的很爛</mark>，因為 bug 影響到功能導致使用者需要去修正或者評估使用其他解法</p>
<p><strong>請不要重複造輪子</strong>，人類的進步，大部分是繼承前人的知識繼續發展</p>
<p>EX：你需要了解怎麼使用電腦，但你不需要買材料自己做出一台電腦</p>
<hr>
<h2 id="這篇文章除了套件安裝跟版控外我還能學到什麼">這篇文章除了套件安裝跟版控外，我還能學到什麼?<a class="h-anchor" href="#%e9%80%99%e7%af%87%e6%96%87%e7%ab%a0%e9%99%a4%e4%ba%86%e5%a5%97%e4%bb%b6%e5%ae%89%e8%a3%9d%e8%b7%9f%e7%89%88%e6%8e%a7%e5%a4%96%e6%88%91%e9%82%84%e8%83%bd%e5%ad%b8%e5%88%b0%e4%bb%80%e9%ba%bc" aria-label="這個段落的連結"></a></h2>
<p>我們身處在一個開源工具大爆炸的時代，每天都有無數個程式大神寫好套件公開在網路平台供大家使用，所以當我們想要做某些功能的時候我們可以先找找看有沒有好心的前輩們幫我們完成這些功能了</p>
<p>但同時正因為開源工具爆炸，我們面對的不是沒有工具而是工具太多不知道怎麼選，所以在<mark>了解套件的重要性後，更重要的是知道如何找出適合的套件</mark></p>
<hr>
<h2 id="今日目標">今日目標<a class="h-anchor" href="#%e4%bb%8a%e6%97%a5%e7%9b%ae%e6%a8%99" aria-label="這個段落的連結"></a></h2>
<ol>
<li>了解套件對專案幫助有多大</li>
<li>如何找出適合的套件</li>
<li>學會安裝套件，觀察安裝後目錄結構的變化</li>
<li>學會控制套件版本範圍</li>
<li>知道如何下關鍵字找工具</li>
</ol>
<hr>
<h2 class="h-nomark" id="1-套件對專案的幫助">1. 套件對專案的幫助<a class="h-anchor" href="#1-%e5%a5%97%e4%bb%b6%e5%b0%8d%e5%b0%88%e6%a1%88%e7%9a%84%e5%b9%ab%e5%8a%a9" aria-label="這個段落的連結"></a></h2>
<p>身為一個工程師，<mark>比起撰寫一個新功能，我更多的時間在研究如何使用一個套件</mark>，下面舉例說明套件對於專案的幫助：</p>
<ol>
<li>能夠快速評估專案功能的可行性</li>
<li>可以更準確預估每個功能的完成時間</li>
<li>節省大量自己重頭寫功能的時間</li>
<li>你可以更專心地維護自己寫的程式邏輯</li>
<li>避免專案主程式肥大</li>
</ol>
<hr>
<h2 class="h-nomark" id="2-如何找出適合的套件">2. 如何找出適合的套件<a class="h-anchor" href="#2-%e5%a6%82%e4%bd%95%e6%89%be%e5%87%ba%e9%81%a9%e5%90%88%e7%9a%84%e5%a5%97%e4%bb%b6" aria-label="這個段落的連結"></a></h2>
<p>由於套件的資源實在是太多了，不管是大神還是新手都可以發布套件，這造成了套件本身的良莠不齊，我這裡提供幾個幫助你<mark>判斷套件是否符合需求以及套件品質</mark>的方法：</p>
<ol>
<li>我會先用下面幾個最基礎的指標來做判斷
<ul>
<li><strong>套件最後發布時間</strong>：太久沒維護的套件請謹慎選用</li>
<li><strong>每週下載次數</strong>：越多人下載的套件穩定性越高</li>
<li><strong>版本</strong>：一般來說 1.0.0 以前的版本通常穩定性上有疑慮，盡可能避免使用</li>
</ul>
</li>
<li>有時候你需要的功能有很多個套件可以完成，這時上面的指標便可成為我們選用的依據
<ul>
<li>
<p>我們在提供 <a href="https://www.npmjs.com/search?q=env">npm 套件的網頁搜尋 env</a> 就出現了<strong>高達149頁</strong>的套件資源</p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-01.webp" width="1024" height="509" alt="2. 如何找出適合的套件（圖 1）" fetchpriority="high" decoding="async"></p>
</li>
<li>
<p>我們點開前兩個套件：<a href="https://www.npmjs.com/package/env">env</a>、<a href="https://www.npmjs.com/package/dotenv">dotenv</a>來做比較，你就很清楚選哪個是比較有保障的了</p>
<table>
  <thead>
      <tr>
          <th>套件</th>
          <th>env</th>
          <th>dotenv</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>最後發布時間</td>
          <td>9 years ago</td>
          <td>10 months ago</td>
      </tr>
      <tr>
          <td>每週下載次數</td>
          <td>2,171</td>
          <td>11,326,358</td>
      </tr>
      <tr>
          <td>版本</td>
          <td>0.0.2</td>
          <td>8.2.0</td>
      </tr>
  </tbody>
</table>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-02.webp" width="1024" height="408" alt="2. 如何找出適合的套件（圖 2）" loading="lazy" decoding="async"></p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-03.webp" width="1024" height="486" alt="2. 如何找出適合的套件（圖 3）" loading="lazy" decoding="async"></p>
</li>
</ul>
</li>
<li>你同時要<mark>關心該套件的 issues 數量</mark>，如果太多建議你點進去看看 open issues，因為有些套件很久沒維護了
<ul>
<li>
<p>點擊 issues 的數字便可跳到 github 的頁面來看 <strong>open issues</strong> 與 <strong>closed issues</strong> 的數量</p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-04.webp" width="1024" height="486" alt="2. 如何找出適合的套件（圖 4）" loading="lazy" decoding="async"></p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-05.webp" width="1024" height="503" alt="2. 如何找出適合的套件（圖 5）" loading="lazy" decoding="async"></p>
</li>
</ul>
</li>
<li>先透過<mark>閱讀套件的文件來確認是否有你想要的功能</mark>
<ul>
<li>
<p>通常在 npm 網頁裡面就會有套件的說明，<strong>但部分套件因為使用上相對複雜，詳細的使用方法會放在 Homepage 的連結</strong>，點擊後會導向更詳細的說明文件(也可能是套件官網)</p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-06.webp" width="1024" height="464" alt="2. 如何找出適合的套件（圖 6）" loading="lazy" decoding="async"></p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-07.webp" width="1024" height="500" alt="2. 如何找出適合的套件（圖 7）" loading="lazy" decoding="async"></p>
</li>
</ul>
</li>
<li>大部分的套件都有提供 sample code，<mark>建議把套件加入專案前先用 sample code 測試來確認這個套件是否符合你的需求</mark></li>
</ol>
<hr>
<h2 class="h-nomark" id="3-安裝套件觀察安裝後目錄結構的變化">3. 安裝套件，觀察安裝後目錄結構的變化<a class="h-anchor" href="#3-%e5%ae%89%e8%a3%9d%e5%a5%97%e4%bb%b6%e8%a7%80%e5%af%9f%e5%ae%89%e8%a3%9d%e5%be%8c%e7%9b%ae%e9%8c%84%e7%b5%90%e6%a7%8b%e7%9a%84%e8%ae%8a%e5%8c%96" aria-label="這個段落的連結"></a></h2>
<p>在這裡我們以明天要講的主題 <strong>環境變數</strong> 為範例，在 Node.js 專案要讀取 .env 的資料需要安裝一個 <strong>dotenv</strong> 的套件來抓 .env 的資料，安裝套件時請輸入指令</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn add dotenv
</span></span></code></pre></div><p>安裝完後你會發現專案目錄下多了一些東西</p>
<ul>
<li>
<p><strong>node_modules</strong> 資料夾：他會儲存你所安裝的套件</p>
</li>
<li>
<p><strong>yarn.lock</strong> 檔案：為了保證在不同機器上能得到一樣的結果，所以需要這個檔案儲存每個相依性所安裝的確切的版本</p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-08.webp" width="194" height="242" alt="Imgur" loading="lazy" decoding="async"></p>
</li>
<li>
<p>同時 <strong>package.json</strong> 檔案內容也有變化</p>
<ul>
<li>
<p>你會發現在 <strong>dependencies</strong> 中多了你剛剛安裝的套件 <strong>dotenv</strong> 版本為 <strong>&quot;^8.2.0&quot;</strong></p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-09.webp" width="370" height="351" alt="Imgur" loading="lazy" decoding="async"></p>
</li>
</ul>
</li>
</ul>
<hr>
<h2 class="h-nomark" id="4-套件不是安裝完就沒事了你得學會控制套件版本範圍">4. 套件不是安裝完就沒事了，你得學會控制套件版本範圍<a class="h-anchor" href="#4-%e5%a5%97%e4%bb%b6%e4%b8%8d%e6%98%af%e5%ae%89%e8%a3%9d%e5%ae%8c%e5%b0%b1%e6%b2%92%e4%ba%8b%e4%ba%86%e4%bd%a0%e5%be%97%e5%ad%b8%e6%9c%83%e6%8e%a7%e5%88%b6%e5%a5%97%e4%bb%b6%e7%89%88%e6%9c%ac%e7%af%84%e5%9c%8d" aria-label="這個段落的連結"></a></h2>
<p><strong>因為部分套件有版本相依性，所以你需要學會如何控制套件的版本</strong>，常見狀況如下：</p>
<ul>
<li>套件更新到最新版本後壞掉是常有的事</li>
<li>有些套件甚至是在某個框架下只有某幾個版本能用</li>
</ul>
<p><strong>所以我們需要了解如何<mark>透過版號控制專案下的套件版本</mark></strong></p>
<ol>
<li><strong>控制 package.json 裡面套件的版本</strong><br><strong>版本格式</strong>：<mark>主版號.次版號.修訂號</mark>
<ul>
<li>1.0.0.
<ul>
<li><mark>指定版本</mark>，限定只使用 1.0.0 版本</li>
</ul>
</li>
<li>^1.0.0
<ul>
<li>可使用 &gt;=1.0.0 且 &lt;(1+1).0.0 的版本</li>
<li>範例：
<ul>
<li>^1.2.3 版本範圍 &gt;=1.2.3 &lt;2.0.0</li>
<li>^0.2.3 版本範圍 &gt;=0.2.3 &lt;0.3.0</li>
</ul>
</li>
</ul>
</li>
<li>latest
<ul>
<li><mark>當前發布的版本，使用 npm install 所安裝的套件就是標記 latest 的版本</mark></li>
</ul>
</li>
<li>~0.1.1
<ul>
<li>可使用 &gt;=0.1.1 且 &lt;0.(1+1).0 的版本</li>
<li>範例：
<ul>
<li>~1.2.3 版本範圍 &gt;=1.2.3 &lt;1.3.0</li>
<li>~0.2 版本範圍 &gt;=0.2.0 &lt;0.3.0</li>
</ul>
</li>
</ul>
</li>
<li>git://github.com/user/project.git#commit-ish
<ul>
<li><mark>直接使用 Git URL 的套件</mark></li>
</ul>
</li>
</ul>
</li>
<li><strong>練習控制套件版本</strong>
<ol>
<li>打開專案 <strong>package.json</strong>，調整套件版本</li>
<li>在專案資料夾的終端機(Terminal)執行指令 <strong>yarn</strong> 安裝套件</li>
<li>在 <strong>yarn.lock</strong> 檔案觀察下載的套件版本是否正確</li>
</ol>
</li>
</ol>
<hr>
<h2 class="h-nomark" id="5-如何下關鍵字找工具">5. 如何下關鍵字找工具<a class="h-anchor" href="#5-%e5%a6%82%e4%bd%95%e4%b8%8b%e9%97%9c%e9%8d%b5%e5%ad%97%e6%89%be%e5%b7%a5%e5%85%b7" aria-label="這個段落的連結"></a></h2>
<p>我個人的找資料的方向是：</p>
<ul>
<li><strong>查官方資源提供的方法</strong>：因為通常資料及提供的方法最齊全</li>
<li><strong>看網路資源</strong>：是否有前輩做過相同的事情並提供範例</li>
<li><strong>查詢 npm 套件</strong>：有人已經將他的經驗無私的打包成套件讓大家直接使用了</li>
</ul>
<p>在這我以本次的專案功能為例，我是以下面這些關鍵字來找需要的資源，<mark>通常用英文搜尋比較容易找到</mark>：</p>
<ol>
<li><strong>FB、IG爬蟲</strong>
<ul>
<li>官方資源：FB api、IG api</li>
<li>網路經驗：FB crawler、IG crawler</li>
<li>換成更廣義的方式找工具：網頁爬蟲、web crawler</li>
</ul>
</li>
<li><strong>excel處理</strong>
<ul>
<li>官方資源：excel api、google sheet api</li>
<li>套件資源：excel npm、google sheet npm</li>
</ul>
</li>
<li><strong>排程</strong>
<ul>
<li>套件資源：cron npm</li>
</ul>
</li>
<li><strong>LINE通知</strong>
<ul>
<li>官方資源：LINE api</li>
<li>套件資源：LINE npm</li>
</ul>
</li>
</ol>
<p>基本上靠著這些關鍵字就能找出你所需要的資源了，我會先測試過些工具提供的 sample code 符合我的需求後才會正式接案，雖然多花了一份工，但卻可以保證你結案的穩定性；歡迎大家在下方留言分享自己找工具的方法喔～</p>
<hr>
<h3 id="參考資源">參考資源<a class="h-anchor" href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%ba%90" aria-label="這個段落的連結"></a></h3>
<ol>
<li><a href="https://classic.yarnpkg.com/en/docs/yarn-lock">yarn.lock</a></li>
<li><a href="https://blog.poychang.net/package-json-version/">package.json 套件版本控制</a></li>
<li><a href="https://docs.npmjs.com/cli/v6/using-npm/semver">npm-semver</a></li>
</ol>
<hr>
<blockquote>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-05/images/fb-ig-crawler-day-05-10.webp" width="1024" height="233" alt="參考資源（圖 10）" loading="lazy" decoding="async"></p>
<p><strong>在許多人的幫助下，本系列文章已出版成書，並添加了新的篇章與細節補充：</strong></p>
<ul>
<li>加入更多實務經驗，用完整的開發流程讓讀者了解專案每個階段要注意的事項</li>
<li>將爬蟲的步驟與技巧做更詳細的說明，讓讀者可以輕鬆入門</li>
<li>調整專案架構
<ul>
<li>優化爬蟲程式，以更廣的視角來擷取網頁資訊</li>
<li>增加資料驗證、錯誤通知等功能，讓爬蟲執行遇到問題時可以第一時間通知使用者</li>
<li>排程部分改用 node-schedule &amp; pm2 的組合，讓讀者可以輕鬆管理專案程序並獲得更精確的 log 資訊</li>
</ul>
</li>
</ul>
<p><strong>有興趣的朋友可以到天瓏書局選購，感謝大家的支持。</strong></p>
<p><strong>購書連結</strong>：<a href="https://www.tenlong.com.tw/products/9789864348008">https://www.tenlong.com.tw/products/9789864348008</a></p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>【Day2】開發環境大補帖 - Node.js、NVM、git、yarn、VSCode</title>
      <link>https://deanlin.net/blog/202009/fb-ig-crawler-day-02/</link>
      <pubDate>Thu, 17 Sep 2020 08:45:35 +0800</pubDate>
      <guid>https://deanlin.net/blog/202009/fb-ig-crawler-day-02/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>技術教學</category>
      <description>因為我自己在剛接觸程式時最痛恨的就是環境設定 不知道是我跟電腦不合還是怎樣，每次我學新東西的時候總是在環境設定這個環節卡的不要不要的 為了避免讀者在之後實戰的文章中一邊看一邊心理罵:「為什麼我們程式一模一樣但我的就是會錯?」這樣的憾事發生，所以我決定詳細的說明這個專案所需安裝的一…</description>
      <media:content url="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/cover_hu_465e72a912eb2f9.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<blockquote>
<p>工欲善其事，必先利其器</p>
</blockquote>
<h2 id="為什麼寫這篇文章">為什麼寫這篇文章？<a class="h-anchor" href="#%e7%82%ba%e4%bb%80%e9%ba%bc%e5%af%ab%e9%80%99%e7%af%87%e6%96%87%e7%ab%a0" aria-label="這個段落的連結"></a></h2>
<p>因為我自己在<mark>剛接觸程式時最痛恨的就是環境設定</mark></p>
<p>不知道是我跟電腦不合還是怎樣，每次我學新東西的時候總是在環境設定這個環節卡的不要不要的</p>
<p>為了避免讀者在之後實戰的文章中一邊看一邊心理罵:「<strong>為什麼我們程式一模一樣但我的就是會錯?</strong>」這樣的憾事發生，所以我決定詳細的說明這個專案所需安裝的一切環境，並附上我本機安裝的工具版本，讓大家在日後的文章中可以順利操作與學習</p>
<blockquote>
<p>你們實際操作時通常都有新的版本了，如果最新版本有問題可以切換到筆者的版本來操作</p>
</blockquote>
<h2 id="今日目標">今日目標<a class="h-anchor" href="#%e4%bb%8a%e6%97%a5%e7%9b%ae%e6%a8%99" aria-label="這個段落的連結"></a></h2>
<ol>
<li>了解使用工具的重要性 &amp; 為什麼選擇他</li>
<li>完成開發前環境設定</li>
</ol>
<h2 id="使用什麼工具完成">使用什麼工具完成<a class="h-anchor" href="#%e4%bd%bf%e7%94%a8%e4%bb%80%e9%ba%bc%e5%b7%a5%e5%85%b7%e5%ae%8c%e6%88%90" aria-label="這個段落的連結"></a></h2>
<p>說到爬蟲，我想絕大多數的人第一個想到的一定是 python，python 是一個很好的語言，但很可惜我對他的鑽研不夠深入，如果這份外包<strong>使用一個自己不夠熟悉的語言來撰寫那是一個不負責任的行為</strong>，所以在這裡我選擇的語言是 javacscript</p>
<p>另外我會<strong>詳細說明前置環境的設定</strong>，如果每個人的環境設置都不一樣，那麼我文章的程式可能在許多電腦上都是無法執行的，所以<code>說明包含 windows/mac 兩個系統的設定</code>，讓你們了解到為什麼叫使用這些工具</p>
<ol>
<li>Node.js</li>
<li>NVM</li>
<li>git</li>
<li>yarn</li>
<li>VSCode</li>
</ol>
<h2 id="開發環境介紹--設定">開發環境介紹 &amp; 設定<a class="h-anchor" href="#%e9%96%8b%e7%99%bc%e7%92%b0%e5%a2%83%e4%bb%8b%e7%b4%b9--%e8%a8%ad%e5%ae%9a" aria-label="這個段落的連結"></a></h2>
<h2 class="h-nomark" id="1-nodejs-官網">1. Node.js <a href="https://nodejs.org/en/about/">官網</a><a class="h-anchor" href="#1-nodejs-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-01.webp" width="119" height="73" alt="Imgur" fetchpriority="high" decoding="async"></p>
<p>能夠在 server 端運行 JavaScript 的開放原始碼、跨平台 JavaScript 的執行環境。前端工程師的福音</p>
<blockquote>
<p>筆者安裝的版本：v12.19.0</p>
</blockquote>
<hr>
<h2 class="h-nomark" id="2-nvm-官網">2. nvm <a href="https://github.com/nvm-sh/nvm">官網</a><a class="h-anchor" href="#2-nvm-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p>由於 Node.js 更新速度是非常快的，而許多套件有 Node.js 版本的相依性，透過NVM你可以輕鬆切換 Node.js 版本來符合不同專案的使用環境</p>
<ul>
<li>
<p><strong>windows 安裝步驟</strong></p>
<ol>
<li>
<p>先進入<a href="https://github.com/coreybutler/nvm-windows/releases">windows下載頁面</a></p>
</li>
<li>
<p>選擇最新版本的下載 <strong>nvm-setup.zip</strong>(筆者版本為1.1.7，你看到這篇文章時可能有提供更新的版本)</p>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-02.webp" width="1400" height="841" alt="Imgur" loading="lazy" decoding="async"></p>
</li>
<li>
<p>下載後一路瘋狂下一步即可</p>
</li>
<li>
<p>安裝後開啟命令提示字元(CMD)</p>
</li>
<li>
<p>在 CMD 輸入指令確認 nvm 是否安裝成功</p>
<pre tabindex="0"><code>nvm
</code></pre><blockquote>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-03.webp" width="1200" height="591" alt="Imgur" loading="lazy" decoding="async"></p>
</blockquote>
</li>
</ol>
</li>
<li>
<p><strong>mac 安裝步驟</strong></p>
<ol>
<li>
<p>打開終端機(Terminal)，以下步驟皆在終端機操作</p>
</li>
<li>
<p>mac 建議先下載 Homebrew</p>
<pre tabindex="0"><code>/bin/bash -c &#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)&#34;
</code></pre></li>
<li>
<p>下載後安裝 nvm</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>brew install nvm
</span></span></code></pre></div></li>
<li>
<p>確認 nvm 是否安裝成功</p>
<pre tabindex="0"><code>nvm
</code></pre><blockquote>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-04.webp" width="1400" height="553" alt="Imgur" loading="lazy" decoding="async"></p>
</blockquote>
</li>
</ol>
</li>
<li>
<p><strong>常用指令</strong></p>
<ul>
<li>
<p>安裝特定 Node.js 版本</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm install <span style="color:#ff7b72;font-weight:bold">[</span>version<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div><p>請切記要安裝一個 Node.js 版本(請選用<a href="https://nodejs.org/en/">LTS版本</a>)，不然你寫的程式會沒有可以運行的環境</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm install 12.19.0
</span></span></code></pre></div></li>
<li>
<p>切換 Node.js 版本</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm use <span style="color:#ff7b72;font-weight:bold">[</span>version<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div></li>
<li>
<p>列出本機(local)已經安裝好的 Node.js 版本</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm list
</span></span></code></pre></div></li>
<li>
<p>顯示當下 Node.js 版本</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>nvm current
</span></span></code></pre></div></li>
</ul>
<blockquote>
<p>筆者安裝版本：1.1.7</p>
</blockquote>
</li>
</ul>
<hr>
<h2 class="h-nomark" id="3-git-官網">3. git <a href="https://git-scm.com/">官網</a><a class="h-anchor" href="#3-git-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-05.webp" width="200" height="84" alt="Imgur" loading="lazy" decoding="async"></p>
<p>這是對於程式版本控制的工具，透過他你可以輕鬆回到過去，並且在多人協作時也能有效管控</p>
<p><a href="https://git-scm.com/download/win">windows下載頁面</a>、<a href="https://git-scm.com/download/mac">mac下載頁面</a></p>
<blockquote>
<p>我有朋友使用 windows 怎麼樣都無法正常安裝 git，如果你也遇到了這個不幸，你還是有<a href="https://desktop.github.com/">Git桌面板</a>可以選擇的</p>
</blockquote>
<h3 id="常用指令">常用指令<a class="h-anchor" href="#%e5%b8%b8%e7%94%a8%e6%8c%87%e4%bb%a4" aria-label="這個段落的連結"></a></h3>
<ul>
<li>
<p>抓取遠端數據庫(僅確認有什麼更新，不合併)</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git fetch
</span></span></code></pre></div></li>
<li>
<p>抓取遠端數據庫更新</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git pull
</span></span></code></pre></div></li>
<li>
<p>更新遠端數據庫</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git push
</span></span></code></pre></div></li>
</ul>
<blockquote>
<p>筆者windows安裝版本：2.27.0.windows.1</p>
</blockquote>
<hr>
<h2 class="h-nomark" id="4-yarn-官網">4. yarn <a href="https://classic.yarnpkg.com/en/">官網</a><a class="h-anchor" href="#4-yarn-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-06.webp" width="160" height="84" alt="Imgur" loading="lazy" decoding="async"></p>
<p>這是專門安裝套件的軟體，站在巨人的肩膀上你才能看得更遠，妥善運用別人提供的套件，程式的路能走得更遠</p>
<p><a href="https://classic.yarnpkg.com/en/docs/install#windows-stable">windows下載頁面</a>、<a href="https://classic.yarnpkg.com/en/docs/install#mac-stable">mac下載頁面</a></p>
<h3 id="常用指令-1">常用指令<a class="h-anchor" href="#%e5%b8%b8%e7%94%a8%e6%8c%87%e4%bb%a4-1" aria-label="這個段落的連結"></a></h3>
<ul>
<li>
<p>依據 package.json 安裝所有套件</p>
<pre tabindex="0"><code>yarn
</code></pre></li>
<li>
<p>安裝到 dependencies</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div></li>
<li>
<p>安裝到 devDependencies</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span> –save-dev
</span></span></code></pre></div></li>
<li>
<p>全域安裝套件(使該套件可在電腦任何位置被呼叫)</p>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>yarn global add <span style="color:#ff7b72;font-weight:bold">[</span>package<span style="color:#ff7b72;font-weight:bold">]</span>
</span></span></code></pre></div></li>
</ul>
<blockquote>
<p>筆者安裝版本：1.19.2</p>
</blockquote>
<hr>
<h2 class="h-nomark" id="5-vscode-官網">5. VScode <a href="https://code.visualstudio.com/">官網</a><a class="h-anchor" href="#5-vscode-%e5%ae%98%e7%b6%b2" aria-label="這個段落的連結"></a></h2>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-07.webp" width="80" height="80" alt="Imgur" loading="lazy" decoding="async"></p>
<p>現在已經過了用記事本在打程式的年代了，透過 IDE(整合開發環境)可以大幅增加你撰寫程式的速度</p>
<p><a href="https://code.visualstudio.com/">VScode下載頁面</a></p>
<h3 id="優點">優點<a class="h-anchor" href="#%e5%84%aa%e9%bb%9e" aria-label="這個段落的連結"></a></h3>
<ol>
<li>適合新手：不需在終端機(Terminal)安裝及設定各種前置作業，能節省建立開發環境的成本，並加速對開發環境的了解。</li>
<li>執行程式：可以在 IDE 內直接執行一段程式碼，不需離開編輯器。</li>
<li>程式碼高亮：將原始碼以不同顏色顯現，讓我們閱讀更方便。</li>
<li>程式碼自動格式化：當輸入 if 或 while 時，他會自動縮排。</li>
<li>版本控制方便：git add、git commit 有 GUI 可以操作，並且有 work tree 讓你比對自己更改了哪些地方</li>
<li>功能擴充方便：能透過 Extentions 來安裝所需要的擴充的套件</li>
</ol>
<h3 id="常用快捷鍵">常用快捷鍵<a class="h-anchor" href="#%e5%b8%b8%e7%94%a8%e5%bf%ab%e6%8d%b7%e9%8d%b5" aria-label="這個段落的連結"></a></h3>
<blockquote>
<p>以下為 mac 快捷鍵，windows 按鍵請自行轉換：cmd = ctrl, option = alt</p>
</blockquote>
<ul>
<li>區塊註解 cmd + k + c</li>
<li>區塊取消註解 cmd + k + u</li>
<li>區塊縮退 cmd + [</li>
<li>區塊縮進 cmd + ]</li>
<li>自動整理程式碼 option + shift + f</li>
</ul>
<p>今天對於專案的前置環境說明到這裡，如果環境設定上有什麼問題的話實屬正常，畢竟每個電腦的環境都有些許不同，可以先用 google 查詢看看喔～進入工程師的世界後<a href="http://stackoverflow.com/">stackoverflow</a>會是你最好的朋友</p>
<hr>
<blockquote>
<p><strong>筆者碎碎念</strong></p>
<p>在文章的最後分享一個心態，無論是面對工作還是外包都一樣</p>
<p>在面試工作或是談外包時要先衡量一下自己的實力</p>
<p>如果你即將要面對的工作(外包)已經遠遠超過了你的能力範圍</p>
<p>強烈建議你拒絕這個機會，不要把工作(外包)當成是一個給你練習基礎的地方</p>
<p>你的同事跟業主會恨你的</p>
<p>尤其是外包，如果你的基礎不穩，運氣好你可能會做出一個貌似可以用的專案</p>
<p>但實際上這個專案充滿著你所不知道的漏洞</p>
<p>這塊我想只有實際在業界磨練過一段時間才能比較感同身受</p>
</blockquote>
<h3 id="參考資源">參考資源<a class="h-anchor" href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%ba%90" aria-label="這個段落的連結"></a></h3>
<ol>
<li><a href="https://ithelp.ithome.com.tw/articles/10217858">nvm：快速安裝、切換不同版本的 Node.js</a></li>
<li><a href="https://backlog.com/git-tutorial/tw/intro/intro1_1.html">連猴子都懂的Git入門指南</a></li>
<li><a href="https://hsiangfeng.github.io/nodejs/20200107/3738078915/">Windows 10 安裝並使用 nvm 切換 NodeJS 版本</a></li>
<li><a href="https://docs.f5ezcode.in/cs-basic/di-ba-zhang-gong-cheng-de-gong-ju/8.1-zheng-he-jing-ide">一應俱全的整合開發環境IDE</a></li>
<li><a href="https://ithelp.ithome.com.tw/articles/10191745">用Yarn取代npm加速開發</a></li>
</ol>
<hr>
<blockquote>
<p><img src="https://deanlin.net/blog/202009/fb-ig-crawler-day-02/images/fb-ig-crawler-day-02-08.webp" width="1024" height="233" alt="參考資源（圖 8）" loading="lazy" decoding="async"></p>
<p><strong>在許多人的幫助下，本系列文章已出版成書，並添加了新的篇章與細節補充：</strong></p>
<ul>
<li>加入更多實務經驗，用完整的開發流程讓讀者了解專案每個階段要注意的事項</li>
<li>將爬蟲的步驟與技巧做更詳細的說明，讓讀者可以輕鬆入門</li>
<li>調整專案架構
<ul>
<li>優化爬蟲程式，以更廣的視角來擷取網頁資訊</li>
<li>增加資料驗證、錯誤通知等功能，讓爬蟲執行遇到問題時可以第一時間通知使用者</li>
<li>排程部分改用 node-schedule &amp; pm2 的組合，讓讀者可以輕鬆管理專案程序並獲得更精確的 log 資訊</li>
</ul>
</li>
</ul>
<p><strong>有興趣的朋友可以到天瓏書局選購，感謝大家的支持。</strong></p>
<p><strong>購書連結</strong>：<a href="https://www.tenlong.com.tw/products/9789864348008">https://www.tenlong.com.tw/products/9789864348008</a></p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
