#根據當下最新版本
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash
#將以下放到自己的 ~/.zshrc or ~/.bashrc or .bash_profile 下面(預設會自動放好,但還是去確定一下)
export NVM_DIR="/Users/leon/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm%
#重新載入 Shell
. ~/.nvm/nvm.sh or source ~/.zshrc
# 安裝穩定版本的 NodeJS
nvm install stable
#顯示目前可以安裝的版本
nvm ls-remote
#安裝 NodeJS
nvm install <version>
#安裝穩定版本的 NodeJS
nvm install stable
#使用版本,只有在當下,重新開新tab就會消失
nvm use stable
#設定預設版本,永久
nvm alias default stable
#看目前安裝所有版本
ls -a ~/.nvm/versions/node
#安裝套件並儲存在 package.json 中
npm install <package name> --save #用於上線時必要的套件(react, bootstrap…),會更新到package.json裡的Dependencies(上線依賴)
npm install <package name> --save-dev #用來安裝開發時用的工具(ex babel, webpack, webpack-dev-server…),會更新到package.json裡的devDependencies(開發依賴)

package.json

#自動產生 package.json
npm init
  "name": "leon",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  "author": "",
  "license": "ISC",
  "dependencies":{#套件相依
  "devDependencies": {#開發套件相依
    "lodash": "^4.15.0" #示範加上去的

Bower

Bower 由 Twitter 團隊開發的前端套件管理工具,用來管理或安裝 Web 開發所需要的 Package,像是 CSS 和 JavaScript,也可以依據套件的相依性來安裝

簡單來說,開發者不用再去煩惱套件相依性問題

主要用來做前端資源依賴管理,跟npm很像,區別在於:npm管理的是node模組的依賴,bower管理的是前端資源的依賴,如css、javascript文件等。

  • 快速管理與安裝網頁前端套件。
  • 易於檢視專案的套件相依性,僅需檢查 bower.json 即可知道專案使用了哪些套件及版本。
  • 一鍵佈署或更新網站所需要使用的套件。
  • npm install -g bower --save-dev
    bower install desandro/masonry
    # Git endpoint
    bower install git://github.com/user/package.git
    # URL
    bower install http://example.com/script.js
    

    Grunt

    The JavaScript Task Runner,可以透過一些設定讓你輕鬆完成一些例行性的任務,例如壓縮檔案,編譯 coffee less,搬移到目標目錄,單元測試等等。(類似 Ruby 中的 rake)

    建構工具,主要用來運行各種任務,比如文件壓縮、合併、打包等

    在新專案使用Grunt,必須要先有兩個檔案

  • package.json
  • Gruntfile
  • 在package.json中,Grunt 和Grunt 任務會用的到外掛,都會列在devDependencies 中。

    npm install -g grunt-cli --save-dev
    
  • 最小化(Minification)、醜化(Uglify)
  • 合併檔案 (Concatenation)
  • 套用格式轉換 (Less, Sass, TypeScript, Babel, … ) • 套用 Vendor prefixes
  • 自動注入 JS/CSS 引用到 HTML 之中 • 更新套件版本
  • 快取HTML範本
  • 單元測試、整合測試、連續性整合
  • npm install -g gulp --save-dev
    

    主要是寫在 gulpfile.js

  • Gulp-自動化的好幫手
  • gulp 學習筆記
  • gulp 入門指南
  • yeoman

    用來自動產生網站骨架或程式碼的工具

    包含以下三套工具,分別說明如下:

  • yo - scaffolding tool from Yeoman 用來自動產生網站骨架或程式碼的工具
  • bower - 用來管理特定網站下所使用的各式前端套件,如: jQuery
  • grunt - 用來執行一些網站的自動化工作,例如單元測試、最小化、執行批次命令
  • npm install -g yo --save-dev
    

    Yeoman自動建構js項目

  • bower - 用來做前端資源依賴管理,跟npm很像,區別在於

  • npm管理的是node模組的依賴
  • bower管理的是前端資源的依賴,如css、javascript文件等,之後就不需要手動下載和管理你的腳本文件。
  • grunt/gulp - 一個幫助我們自動管理和運行JavaScript的任務之執行工具,可以用了檢查程式碼語法是否正確,壓縮程式碼,合併文件,透過Grunt可以簡化我們的工作流程。

  • Yeoman - 一個 Web 應用的架構(scaffolding)工具。它提供了非常多的樣板,用來生成不同類型的 Web 應用。這些樣板稱為生成器(generator)。

  • 參考文件:

  • 從零開始nodejs系列文章
  • 比較grunt,npm,gulp
  • 透過例子對比grunt和gulp
  • 30 天學習 30 種新技術系列
  • Browserify

    允許用 nodejs 的程式碼風格來定義模組,並使用在瀏覽器上,可以完全跟nodejs後端模組通用,保持單個功能模組的重用性.

  • module.exports 來匯出模組功能
  • require 來請求某個模組
  • npm install -g browserify --save-dev