- 简介
- 常用命令
- 安装第三方包
- 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目录中,即是在线上环境并不会进行安装。
关于依赖版本前面符号说明如下:
- ^表示第一位版本号不变,后面两位取最新的
- ~表示前两位不变,最后一个取最新
- *表示全部取最新