iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

一個月的後端學習之旅系列 第 26

【DAY26】 modules(二)

  • 分享至 

  • xImage
  •  

網路上第三方製作的 modules

可以透過 npm (node package manager)下載來使用

NPM

NPM JS

NPM 是 Node Package Manager,是 Node.js 預設的套件管理系統,會隨著 Node.js 自動安裝

透過 npm,我們可以在 CLI (Command-Line Interface)下指令,命令電腦從網路上下載別的開發者發佈到網路上的 node packages

Module 是指具有一些功能的單個 JavaScript 文件,Package 是一個資料夾,其中包含一個或多個 modules

若我們希望目前的 work directory 可以使用 npm 來下載別的開發者發佈到網路上的 node packages,並且管理這些 packages,需要先做指令npm init (initialize 初始化),所有 npm 管理的 packages 可以在 package.json 的文件中找到名稱以及版本

在 CMD 下指令

C:\Users\Lo yuan>cd Desktop

C:\Users\Lo yuan\Desktop>cd Udemy全端

C:\Users\Lo yuan\Desktop\Udemy全端>cd JS_basics

C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics>cd node_practice

C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice>npm init
This utility will walk you through creating a package.json file. (npm init的功能就是幫你製作package.json的文件)
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (node_practice) (1. 製作package name)
version: (1.0.0)
description: "this is a simple node practice folder"
entry point: (myFile.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice\package.json:

{
  "name": "node_practice",
  "version": "1.0.0",
  "description": "this is a simple node practice folder",
  "main": "myFile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this OK? (yes) "yes"
安裝指令(只裝在 work directory 中)

指令的語法是:

npm install <package>
// 也可以寫 npm i <package>

若要安裝特定版本的 package,指令的語法是:

npm install <package>@<version>

// 舉例
C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice>npm install cowsay@1.5.0

added 41 packages, and audited 42 packages in 4s

3 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice>

以上 npm 安裝語法,都只會將 package 安裝在 work directory 中,名為node_modules的資料夾中

可以去package.json確認依賴那些套件

"dependencies": {
   "cowsay": "^1.5.0"
}
安裝指令(放到作業系統內部)

將 package 放到作業系統內部,我們可以在任何的 work directory 內部使用這個 package

指令的語法是:

npm install –g <package> // –g 代表 global

-g補充

-g安裝的package,其二進制的文件會被放入電腦的PATH 環境變量中 (作業系統知道的某個地方)

因此,這種package可以在shell被直接使用,在Windows的CMD當中,或是Mac的terminal當中,都可以直接透過shell使用套件

如果是資料夾內需要用require()所取得的package,則一定要在本地透過npm install <package>的指令安裝

只有像nodemon這種透過shell執行的package適合使用-g做全域安裝

cowsay 練習

cowsay npm

const cowsay = require("cowsay");

console.log(
  cowsay.say({
    text: "I'm a moooodule",
    e: "oO",
    T: "U ",
  })
);

// node myFile.js
/* 輸出結果
 _________________
 < I'm a moooodule >
  -----------------
         \   ^__^
          \  (oO)\_______
             (__)\       )\/\
              U  ||----w |
                 ||     ||
/*

nodemon 使用 (以 cowsay 更改程式碼為例)

nodemon npm

nodemon is a tool that helps develop Node.js based applications by automatically restarting the node application when file changes in the directory are detected.

nodemon 是 Node.js 的製作輔助工具,功能是當他偵測到 directory 文件(程式碼)改變,會自動去把 node 要求做重啟

// 先在CMD安裝
C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice>npm install -g nodemon // 安裝在作業系統內部

added 33 packages in 2s

3 packages are looking for funding
  run `npm fund` for details

// 到VS Code
C:\Users\Lo yuan\Desktop\Udemy全端\JS_basics\node_practice> nodemon myFile.js
/* 輸出結果
[nodemon] 3.0.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node myFile.js`
 _________________
< I'm a moooodule >
 -----------------
        \   ^__^
         \  (oO)\_______
            (__)\       )\/\
             U  ||----w |
                ||     ||
[nodemon] clean exit - waiting for changes before restart
*/

// 隨意更改程式碼
const cowsay = require("cowsay");

console.log(
  cowsay.say({
    text: "我是一隻牛",
    e: "oO",
    T: "U ",
  })
);

// 按儲存後,TERMINAL就會自動更改

/*輸出結果
[nodemon] clean exit - waiting for changes before restart
[nodemon] restarting due to changes...
[nodemon] starting `node myFile.js`
 ____________
< 我是一隻牛 >
 ------------
        \   ^__^
         \  (oO)\_______
            (__)\       )\/\
             U  ||----w |
                ||     ||
[nodemon] clean exit - waiting for changes before restart
/*

下一篇文章學習IP、DNS、Port、Request and Response。


上一篇
【DAY25】modules(一)
下一篇
【DAY27】 IP、DNS、Port、Request and Response
系列文
一個月的後端學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言