使用NPM
使用NPM
先安裝Node.js
以下為基本指令
npm install
npm install -g (使用後可在cmd的任何路徑輸入package名稱執行,但如果是想在js檔內直接使用require的話,要再把環境變數加上才行)(如此即可不用在每個專案資料夾個別安裝package)) (記得名稱要是NODE_PATH)
所以共有兩個環境變數:
一個是NODE_PATH => 安裝全域包後給js檔案require用
NODE_PATH
C:\Program Files\nodejs\node_modulesMac 使用 require global package 可用 export NODE_PATH=/usr/local/lib/node_modules
如果不知道路徑是什麼可以先試著安裝-g 模組 然後看一下他print出來的安裝路徑
2.另一個是C:\Users\Jason\AppData\Roaming\npm給在cmd直接輸入module名稱用
PATH
C:\Users\Jason\AppData\Roaming\npm預設 安裝Node.js會自動幫你加上
npm install --save
npm uninstall
npm search
npm ls -g
npm ls -gl
npm ls -l
npm update -g
npm updateNPM CI
npm version 6 後的功能,通常會在 ci 流程中使用,跟 npm install 相似,但具有 dependency version 依賴檢查功能,安裝套件的同時不會自動幫你更新套件版本,提供更穩定的特性 。
npm ciDependency Resolution: It installs the exact versions of dependencies as specified in the
package-lock.jsonornpm-shrinkwrap.jsonfile, ignoring thepackage.jsonif there are any differences. This ensures that every install results in the exact same file structure innode_modulesacross all machines.Speed: It can be faster than
npm installbecause it skips certain user-oriented features. It is more efficient as it bypasses the package version resolution step since the exact dependency tree is already defined.Clean Slate: Before installing the new dependencies,
npm ciwill delete the existingnode_modulesfolder, ensuring that there are no leftover artifacts from previous installations.Strictness: If there are discrepancies between the
package-lock.jsonand thepackage.json,npm ciwill throw an error and stop the installation process. This strictness ensures that thepackage-lock.jsonis up to date and has not been tampered with.Non-Interactive: It does not write to the
package.jsonorpackage-lock.jsonfiles; any updates to dependencies must be done explicitly by the developer.
https://docs.npmjs.com/cli/v8/commands/npm-ci
為了避免部屬後環境module過大,可不必安裝dev用的module
一開始開發時將套件安裝到devDependencies
npm install --save-dev //記得save跟dev要用-連再一起部屬時安裝
npm install --production當npm install出現一些版本錯誤,而無法安裝,這是記得先更新本地端
npm install -g(更新global的package) 更多可參考 https://docs.npmjs.com/
package.json教學
"main"表示require('模組名稱')所預設加載的文件。
2.如下的寫法可用npm run start輸入此即會執行node index.js
"scripts": {
"start": "node index.js"
},config用來設定環境變量,如下
"config": { "port" : "8080" }可在程式中使用
process.env.npm_package_config_port讀取到
比較常用設定環境變量的方法為
console.log(process.env.PORT)然後執行
PORT=8000 node test1.js //macwindows如果不行可以使用git bash來執行
nodemon可用類似如下
set PORT=8080 && nodemon test.js# 控制版本
使用shrinkwrap
http://syshen.cc/post/18425250521/npm-shrinkwrap-解決-nodejs-套件複雜的關連性問題
更新npm
npm install npm@latest -g發佈npm package
npm adduser
npm publish記得輸入npm publish時要在package.json的同層目錄下
每次更新記得要更改package.json的版本號
發佈為npm global package
可以直接在Terminal輸入指令的package
和之前一樣先npm adduser
然後確認package名字沒重複
1.記得將index.js檔案加上
#!/usr/bin/env node
.....2.之後因為是global所以加入bin的欄位到package.json檔案裏面
"bin": {
"gendoc": "./index.js"
},之後別人使用-g安裝即可使用gendoc 指令
npm link 也可在發布前直接把他加到Local環境變數進行測試,但在windows會沒作用
範例:
robot.js
#!/usr/bin/env node
const robot = require("robotjs");
// Speed up the mouse.
robot.setMouseDelay(2);
while (true) {
var twoPI = Math.PI * 2.0;
var screenSize = robot.getScreenSize();
var height = (screenSize.height / 2) - 10;
var width = screenSize.width;
for (var x = 0; x < width; x++) {
y = height * Math.sin((twoPI * x) / width) + height;
robot.moveMouse(x, y);
}
}package.json
{
"name": "custom-toolkit",
"version": "1.0.0",
"description": "An awesome custom global module",
"main": "./lib/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"bin": {
"s": "./robot.js"
},
"dependencies": {
"robotjs": "^0.6.0"
},
"preferGlobal": true,
"author": "Eason",
"license": "MIT"
}之後 npm install -g ~/資料夾名稱 即可直接在 terminal 輸入 s ,會執行 robot.js 內容。
更新或復原npm版本
(把數字改為你要的版本即可)
npm install npm@4.6.1切換版本
n
n use <version>nvm
(windows可能無法使用n,所以可以用nvm安裝檔)
下載點:https://github.com/coreybutler/nvm-windows/releases
然後
nvm install <version>
nvm use <version>查看套件以前發布過的版本
npm view <套件名稱>GitHub registry
可以發布 npm 包到 github host 的 registry,相較於預設的 npm registry 差別在於可以直接從 github 發布套件,並且集成 github action。

安裝套件前要先登入:
password 記得使用 github 創建的 personal access token
npm login --registry=https://npm.pkg.github.com常見問題
1.node-gyp error
有時如果安裝的套件是使用C++然後用node-gyp編譯的話,需要預先安裝如下
npm install -g node-gyp如果是ubuntu還需要安裝build-essential
sudo apt-get install build-essential
Last updated
Was this helpful?