npm基础知识和命令

记录汇总npm基础知识和命令,拯救我的鱼记忆

npm是什么?


npm全称Node Package Manager,是node.js的模块依赖管理工具,它有一个日益强大的对手叫yarn,yarn是Facebook发布的一款依赖管理工具。

npm的使用场景:

上传分享自己写的程序代码(包),下载别人写的程序代码(包)。

npm的组成:

  • npm官网(https://www.npmjs.com/),用来管理设置上面的代码程序包
  • 一个大数据库,大家分享的程序就放在那里
  • 命令行工具(CLI),我们通过CLI来与npm交流

npm怎么安装与升级


与NodeJs一起集成安装,安装NodeJS时安装npm。

查看npm版本

npm -v
#6.5.0

查看帮助

npm help 

升级npm

npm install npm -g
npm install npm@latest -g #升级到最新版本

包是什么?


npm的核心是包,npm将它管理的程序都叫包,每个包里有个package.json文件,位于包的根目录下,用于定义包的属性(配置信息),比如包的名称、版本、许可证等等。
在进行npm install命令时,就是根据这个配置文件,来自动下载这个包所需的模块,配置项目所需的运行和开发环境。

package.json

package.json是一个JSON对象,每一个键值对就是当面包的一个配置。
一个package.json常用字段:

{
    "name": "Hello World", //包名
    "version": "0.0.1",//包的版本号,主版本.次版本.补丁版本
    "author": "张三",//包的作者,格式设置:Your Name  (http://example.com)
    "description": "第一个node.js程序",//包的描述
    "keywords":["node.js","javascript"],//包的关键词
        "main":"index.js",//main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
    "repository": {// 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
        "type": "git",
        "url": "https://path/to/url"
    },
    "license":"MIT",//包的版权协议
    "engines": {"node": "0.10.x"},//该模块运行的平台,比如 Node 的某个版本或者浏览器
    "bugs":{"url":"http://path/to/bug","email":"[email protected]"},
    "contributors":[{"name":"李四","email":"[email protected]"}],//包的其他贡献者姓名
    "scripts": {//运行脚本命令的npm命令行缩写,执行命令:npm run <命令名>
        "start": "node index.js"
    },
        "config":{//添加命令行的环境变量
                "port":"8080"//可以在js中通过process.env.npm_package_config_port获取,可以通过npm config set <包名>:port 80修改
        },
        "browser": {//供浏览器使用的版本
                "tipso": "./node_modules/tipso/src/tipso.js"
        },
    "dependencies": {//项目运行依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 * node_module 目录下
        "express": "latest",
        "mongoose": "~3.8.3",
        "handlebars-runtime": "~1.0.12",
        "express3-handlebars": "~0.5.0",
        "MD5": "~1.2.0"
    },
    "devDependencies": {//项目开发依赖包列表
        "bower": "~1.2.8",
        "grunt": "~0.4.1",
        "grunt-contrib-concat": "~0.3.0",
        "grunt-contrib-jshint": "~0.7.2",
        "grunt-contrib-uglify": "~0.2.7",
        "grunt-contrib-clean": "~0.5.0",
        "browserify": "2.36.1",
        "grunt-browserify": "~1.3.0",
    }
}

依赖包版本格式:

  1. 指定:1.2.2
  2. ~+指定:~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2,小于1.3.x)
  3. ^ + 指定版本:^1.2.2,表示安装1.x.x的最新版本,(不低于1.2.2,小于2.x.x)
  4. latest:最新版本
    ## package.json生成方式:
  5. 手写
  6. 执行npm init生成

依赖包写入package.json

不在package.json的包要写入,使用--save 或者--save-dev

npm install express --save     # 将该模块写入dependencies属性
npm install express --save-dev   #将该模块写入devDependencies属性

下载安装、卸载、更新包


安装方式(全局安装与本地安装)

npm install express          # 本地安装
npm i express              #简写
npm install express -g   # 全局安装
  • 全局安装:安装包放在 /usr/local 下或者你 node 的安装目录,可以在命令行直接使用
  • 本地安装:安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),没有时会自动创建,通过 require() 来引入本地安装的包

引用下载的包

//var = require('');
var express = require('express');

卸载包

npm uninstall express   #删除node_modules目录下面的包
npm uninstall --save express      #删除node_modules的包和package.json中的运行时依赖
npm uninstall --save-dev express      #删除node_modules的包和package.json中的开发依赖
npm uninstall -g express #全局卸载

更新包

npm update express
npm update express -g # 更细全局包

查询包的信息


查看安装包信息

npm list    #查看本地安装包信息
npm list -g  #查看全局安装包信息
npm list express #查看某个安装包信息
npm ls    #npm list简写
image.png

提升下载包的速度

由于npm的包大多是在国外数据库,下载速度会受到影响,我们想快一点,可以使用国内的淘宝镜像。
淘宝NPM镜像是一个完成的npmjs.org镜像,基本与官网服务一致。

镜像地址

淘宝镜像:

  • 搜索地址:http://npm.taobao.org/
  • registry地址:http://registry.npm.taobao.org/
    官网镜像:
  • 搜索地址:https://www.npmjs.com/
  • registry地址:https://registry.npmjs.org/

使用淘宝镜像

临时使用淘宝镜像

#安装包时临时制定镜像地址
npm --registry https://registry.npm.taobao.org install express

持久使用淘宝镜像

先配置npm镜像,然后再安装包
配置镜像:

npm config set registry https://registry.npm.taobao.org  #设置成淘宝镜像
npm config set registry https://registry.npmjs.org/    #设置成官网的

监测是否设置成功

npm config get registry   #查询镜像地址
npm info express #查询镜像地址

使用cnpm来使用淘宝镜像

安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

使用cnpm安装包

cnpm install [name]

使用nrm来管理切换npm源

nrm专门用来管理和快速切换私人配置的registry。

安装

npm install -g nrm

列出可选源

nrm ls

切换源

nrm use taobao

增加源

nrm add <源名称> <源地址>   #比如企业或组织有自己的私有源(镜像)时

删除源

nrm del

测试源响应

nrm test   #测试所有源
nrm test npm  #测试npm官方源

如何创建和发布自己的包


创建模块

npm init

image.png

此时,生成了package.json配置文件

增加入口文件

默认的入口文件是根目录下的index.js,在根目录下创建index.js

//index.js
exports.printMsg = function() {
    console.log("This is a message from the demo package");
}

登录或注册npm账号

npm adduser  #注册npm账号
npm login #登录npm账号

发布包

发布包之前,我们需要做两步:

  1. 修改CHANGE.MD,这里记录了我们包发布的版本变化情况,格式自定
  2. 修改package.json中的version字段,表示这次发布的包的版本,如果不修改,发布会报错。
    发布包:
npm publish

撤销发布

撤销发布自己发布过的某个版本代码

npm unpublish @

发布成功之后,这个包就可以通过npm install命令来进行安装了。

管理包的版本

当我们下载和发布我们的包时,都会关注到包的版本号,npm使用语义版本号来管理包。
语义版本号组成:X.Y.Z

  • X代表主版本号,表示有大变动,向下不兼容
  • Y代表次版本号,表示新增功能,向下兼容
  • Z代表补丁版本号,表示修复BUG

参考资料:
官网:https://www.npmjs.com.cn/getting-started/installing-npm-packages-locally/
菜鸟教程:https://www.runoob.com/nodejs/nodejs-npm.html
npm脚本使用:http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
package.json说明:http://javascript.ruanyifeng.com/nodejs/packagejson.html

你可能感兴趣的:(npm基础知识和命令)