npm指令筆記

in javascript

Node.js 的套件搜尋機制:

當 require 一個套件的時候,Node.js 會搜尋當前目錄的 node_modules 子資料夾和 NODE_PATH 環境變數所設定的目錄。所以套件可以選擇安裝在全域,也就是 NODE_PATH 所指定的目錄,或當前目錄的 node_modules 子資料夾。npm 也因此分成兩種模式:全域模式 (Global Mode) 管理 NODE_PATH 所指定的目錄套件,及本地模式 (Local Mode) 管理當前目錄的 node_modules子資料夾內的套件。

如果安裝 Node.js 時沒有另外設定 prefix 參數,NODE_PATH 應設定為 /usr/local/lib/node_modules

npm 最大的優點可能也是最大的缺點,即透過冗餘安裝來解決套件相依性問題。如果要安裝套件 A 和套件 B,而兩者都相依於套件 C,則 npm 會在套件 A 和套件 B 的 node_modules 資料夾內同時安裝套件 C。換句話說,套件 C 被安裝了兩次。這種設計的好處是不會有相依性問題,但缺點就是同樣的套件會被安裝多次,當有需要編譯的套件被冗餘安裝多次時,更新會變得很緩慢,幸好絕大多數的套件都不需要編譯。

以上轉貼http://www.openfoundry.org/tw/tech-column/8537-npm-node-package-manager

指令

1
2
3
4
5
6
7
8
9
#以下指令預設為全域安裝,若想執行local安裝的話把-g拿掉即可
npm search [關鍵字]
npm install [套件名稱] -g
npm uninstall [套件名稱] -g
npm ls -g
npm uninstall [套件名稱] -g
npm outdated -g
npm update [套件名稱] -g
npm update -g

dependency管理

詳情可見https://docs.npmjs.com/files/package.json

package.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"name": "hexo-blog",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "3.1.1"
},
"dependencies": {
"hexo": "^3.1.0",
"hexo-deployer-git": "0.0.4",
"hexo-generator-archive": "^0.1.4",
"hexo-generator-category": "^0.1.2",
"hexo-generator-feed": "^1.0.3",
"hexo-generator-index": "^0.2.0",
"hexo-generator-sitemap": "^1.0.1",
"hexo-generator-tag": "^0.1.1",
"hexo-renderer-ejs": "^0.1.1",
"hexo-renderer-marked": "^0.2.8",
"hexo-renderer-org": "git+https://github.com/CodeFalling/hexo-renderer-org.git#emacs",
"hexo-renderer-stylus": "^0.3.0",
"hexo-server": "^0.1.3"
}
}

在安裝package時加上–safe表示安裝的同時自動更新package.json

1
2
npm install [套件名稱] --safe
npm update [套件名稱] --safe

Comment and share

nvm指令筆記

in javascript

簡介

可做到node.js的多版本環境切換,類似pyenv

安裝

1
brew install nvm

bash_profile加上

~/.bash_profile
1
2
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

以上設定會將node安裝在~/.nvm/versions/node/v4.2.2
npm的global library在~/.nvm/versions/node/v4.2.2/lib/node_modules/

指令

1
2
3
4
5
6
7
8
9
nvm ls-remote
nvm ls
nvm install v4.2.2
nvm deactivate
nvm current
nvm use v4.2.2
nvm use system
nvm alias default v4.2.2
nvm unalias default

Comment and share

git config筆記

in git

git config三層設定

1
2
3
4
5
6
7
8
9
10
11
git config --system
針對所有使用者
/etc/gitconfig
git config --global
針對特定user
~/.gitconfig
git config
針對特定專案
.git/config
1
2
3
4
5
6
7
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
#防止中文亂碼
git config --global core.quotepath false
git config --global core.editor emacs
git config --global commit.template $HOME/.gitmessage.txt
git config --global color.ui true

Comment and share

PyCharm > Preferences > Project > Project interpreter
choose the python interpreter which contains django

PyCharm > Preferences > Languages & Frameworks > Django
check the Enable Django Support
Django project root: project root path
Settings: project settings.py path
Manage script: manage.py

Comment and share

git指令筆記

in git

基本

上一版本:HEAD^, 上兩版本HEAD~2, 上三版本HEAD~3…etc

1
2
3
4
git add [file]
git add -A
git commit -m [comment]
git push

Continue reading

Github筆記

in git

Github New Repository

  1. 申請github帳號
  2. create a empty public repository
  3. 在欲上傳的folder執行以下指令

    1
    2
    3
    4
    5
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin https://github.com/cwza/gms.git
    git push -u origin master
  4. .gitignore筆記參考

  5. git筆記參考

  6. fetch remote branch and checkout it

    1
    2
    git fetch <remote> <rbranch>:<lbranch>
    git checkout <lbranch>

Update Github forked repository

1
2
3
4
5
6
7
git remote -v
git remote add upstream https://github.com/otheruser/repo.git
git fetch upstream
git branch -va
git checkout master
git merge upstream/master
git push

Comment and share

.gitignore筆記

in git

可將gitignore設定在以下三個地方,各代表不同意思

  • .gitignore

放在跟.git資料夾同一層
設定在這邊的代表此project需要忽略的,且此檔案會commit到git上,所以個人相關的不要放在這(ex: IDE產生的考慮放到下面那兩個)

.gitignore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# If you need to exclude files such as those generated by an IDE, use
# $GIT_DIR/info/exclude or the core.excludesFile configuration variable as
# described in https://git-scm.com/docs/gitignore
*.egg-info
*.pot
*.py[co]
__pycache__
MANIFEST
dist/
docs/_build/
docs/locale/
node_modules/
tests/coverage_html/
tests/.coverage
build/
tests/report/

  • $GIT_DIR/info/exclude
    $GIT_DIR通常就是.git folder
    設定在這邊的代表此project需要忽略的,不會被commit到git,專用來放個人相關的忽略

  • core.excludesFile
    全域忽略,所有project相關,在~/.gitconfig有此變數可設定

Comment and share

remove eclipse folder and folowings:
~/.eclipse (folder);
~/Library/Saved Application/org.eclipse.eclipse.savedState;
~/Library/Preferences/org.eclipse.eclipse.plist;
~/Library/Caches/org.eclipse.eclipse;
… and of course the eclipse install folder

Comment and share

Cwza

Hello everyone.
I’m cwza.
Welcome to my blog.


Software Engineer


Taiwan/Taipei