2018-11-2 node.js4-npm

  • 简介
  • 常用命令
  • 安装第三方包
  • Trouble shooting-package.json丢失和说明

【简介】

node.js除了它提供的核心模块外,还可以使用第三方的模块。。Nodejs中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理。

在node.js中是通过npm来下载安装第三方的模块,,这些模块(或者说包)我们可以在https://www.npmjs.com找到。

npm的全称:Node Package Manager。它原本是Node的包的一个管理工具,但是随着JS的发展,现在的npm已经成了几乎所有跟JS相关的工具和包的管理工具。

【常用命令】

常用npm命令有:

npm -v,看npm版本
npm install [pkg],下载并安装包
npm install [pkg@version],下载并安装指定版本包
npm update [pkg],升级安装包
npm uninstall/rm [pkg],卸载安装包。可以指定卸载包的版本号 
npm list,查看当前目录下安装的包
npm info [pkg],查看模块版本信息

如果是通过代理服务器下载安装包,可以使用以下命令来设置

C:\>npm config set https-proxy http://username:password@ipaddress:port

如果npm安装包速度很慢,可以改用淘宝的npm镜像,先执行以下命令

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

然后再用cnpm命令替代npm命令执行安装就行了。

【安装第三方包】

例1,下载第三方模块使用

执行以下命令下载

C:\node.js>npm i silly-datetime
npm WARN saveError ENOENT: no such file or directory, open 'C:\node.js\
package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN enoent ENOENT: no such file or directory, open 'C:\node.js\pac
kage.json'
npm WARN node.js No description
npm WARN node.js No repository field.
npm WARN node.js No README data
npm WARN node.js No license field.

+ silly-datetime@0.1.2
added 1 package from 1 contributor in 4.852s

下载完后,可以发现在node_modules目录下增加了一个silly_datetime目录。

调用下载的第三方模块silly-datetime

var sd = require('silly-datetime');  //引入安装好的第三方模块。  
var d=sd.format(new Date(), 'YYYY-MM-DD HH:mm');
console.log(d);

执行结果

2018-11-02 14:36
[Finished in 0.3s]

【Trouble shooting-package.json丢失和说明】

今天在执行npm install安装第三方包时候报错,尝试了网上的各种方法都没有用。

npm ERR! code ETARGET

后来无意中进目录中查看一下,发现只有package-lock.json,没有package.json文件。

于是重新执行一下下面命令创建package.json文件,再执行npm安装就成功了。

npm init --yes

package.json的文件非常重要,记录了程序需要的依赖包。如果别人把开发的js程序发送你,只需要有package.json,直接执行下面命令,npm会根据package.json文件,把所有依赖包都下载到node_modules目录,这样就能确保js程序的正常运行。

npm install

执行npm安装包后,package.json文件会显示如下信息

{
  "name": "node.js",
  "version": "1.0.0",
  "description": "",
  "main": "1.js",
  "dependencies": {
    "md5-node": "^1.0.1",
    "silly-datetime": "^0.1.2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

dependencies中就包含了程序依赖的包名称。

如果安装包时候加入了–save-dev参数,那么就会写入devDependencies中

npm install express --save-dev

结果如下

{
  "name": "node.js",
  "version": "1.0.0",
  "description": "",
  "main": "1.js",
  "dependencies": {
    "md5-node": "^1.0.1",
    "silly-datetime": "^0.1.2"
  },
  "devDependencies": {
    "express": "^4.16.4"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

查了网上的说明,关于devDependencies和dependencies区别就是:

  • dependencies是运行时依赖,而devDependencies是开发时的依赖用。-
  • 之后运行npm install –production或者注明NODE_ENV变量值为production时,devDependencies不会自动安装msbuild到node_modules目录中,即是在线上环境并不会进行安装。

关于依赖版本前面符号说明如下:

  • ^表示第一位版本号不变,后面两位取最新的
  • ~表示前两位不变,最后一个取最新
  • *表示全部取最新
    原文作者:没人不认识我
    原文地址: https://zhuanlan.zhihu.com/p/48313125
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞