Oct1a

Npm包管理

CommonJS包规范是理论,NPM (Node Package Manager) 是其中一种实践。对于Node而言,NPM帮助其完成了第三方模块的发布、安装和依赖等。借助NPMNode与第三方模块之间形成了很好的一个生态系统。

## 查看版本
    • npm –v
## 帮助说明
    • npm
## 查看所有模块的版本
    • npm version
## 搜索模块包
    • npm search 包名
## 下载当前项目所依赖的包
    • npm install
## 在当前目录安装包
    • npm install 包名
## 全局模式安装包(全局安装的包一般都是一些工具)
    • npm install 包名 –g
## 安装包并指定版本
    • npm install 包名@1    |-这里会下1.几版本的最新版本,也可以指定详细版本1.2.4....-|
## 安装包并添加到生产依赖中(dependencies)
    • npm install 包名 –save 简写:-S
## 安装包并添加到开发依赖中(devDependencies)
    • npm install 包名 –save-dev 简写:-D
## 删除一个模块
    • npm remove 包名
## 从本地安装
    • npm install 文件路径
## 从镜像源安装
    • npm install 包名 –registry=地址
## 设置镜像源
    • npm config set registry 地址
## 初始化项目
    • npm init
## 用户登录 (本机第一次发布包)
    • npm adduser
## 用户登录 (非第一次发布项目)
    • npm login
## 上传该项目
    • npm publish

NPM 包的引入机制


通过npm下载的包,直接通过包名引入即可。node在使用模块名称来引入模块时,它会先在当前目录的node_modules中寻找是否含有该模块。如果有则直接使用,如果没有则去上一级目录的node_modules中寻找,如果有则直接使用,如果没有则再去上一级目录寻找,直到找到磁盘的根目录,如果依然没有,则报错。

NPM 本地仓库地址配置


  1. 配置本地仓库地址 在指定目录创建node_globalnode_cache

  2. 运行配置指令

npm config set prefix "D:\nodejs\node_global"
npm config set cache "D:\nodejs\node_cache"

NPM 基本配置命令


  1. 检测本地仓库 npm list -global

  2. 配置镜像站 npm install -g cnpm --registry=https://registry.npm.taobao.org npm config set registry https://registry.npm.taobao.org

    npm config set registry http://registry.npmjs.org

  3. 查看c盘配置文件仓库地址 C:\Users\Administrator\.npmrc

  4. 添加新的环境变量 环境变量NODE_PATH内容是:D:\nodejs\node_global\node_modules

  5. 编辑环境变量PATH D:\nodejs\node_global

package 文件代码解析


{
  "scripts":{}, // 包命令
  "name": "myName",    // 包的名字
  "version": "1.x.1",    // 包的版本
  "description": "description",    // 包的描述
    "homepage": "www.xxx.com",    // 包的官网url
  "dependencies": {...},    // 生产依赖环境
  "devDependencies": {...},    // 开发s依赖环境
  "repository": {...}, // 包代码的Repo信息
  "main":"./...",    // main 字段指定了程序的主入口文件
  "keywords":"xx" // 关键字
}

JS 中引入NPM 包


// node.js语法:require('包名')
var math = require('math')
console.log(math.add(123,456))
// ES6语法:import xxx from '包名'
var xxx from 'math'

开发 npm 命令行工具


# 初始化项目
npm init

# 修改 package.json 中bin字段
"bin": {
    "open-dev": "./index.js"
}

# 新建 index.js
#!/usr/bin/env node
console.log('open-dev')
# `#!/usr/bin/env node` 的意思是让系统自己去找node的执行程序,该行必不可少。

# 执行 npm link
npm link

# 运行脚手架工具
git-tool

# index.js 中 process.argv 可用来获取命令行参数
#!/usr/bin/env node
console.log('open-dev')
console.log(process.argv) # ['...', '...', ....]

commander.js 的使用


完整的 node.js (opens new window) 命令行解决方案,可以用于开发脚手架工具的使用。

命令行指令基本使用

#!/usr/bin/env node
const program = require('commander')
// 配置命令
program.option('-d, --debug', '开启调试模式')
// 读取命令行参数
program.parse(process.argv)
// 判断命令行参数
if (program.debug) {
    console.log('已开启调试模式....')
}
// 命令行运行 `open-dev -d`

命令行指令携带参数

#!/usr/bin/env node
// 配置命令, 携带值 <type>
program.option('-r, --run <type>', '开启微信开发者工具')
// 读取命令行参数
program.parse(process.argv);
// 判断命令行参数
if (program.run) {
  // 读取传入值
  const type = program.opts().run
  console.log(type)
}

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。