详解Nodejs之npm&package.json


Posted in NodeJs onJune 15, 2017

一直以来,作为前端开发,在公司都是先写好页面,然后再跟后端合作,将数据填入前端页面中,但是偶尔自己闲来无事,也会看一些框架什么的,然后利用框架做个单页面应用啊,app什么的,这时候页面的数据总是一些假数据,而关于数据请求的部分就没办法做(因为没有后台嘛)。所以我感觉是时候学习一下node了,这对于我以后要学的webpack,前端工程化等也有一定帮助。
作为前端,因为经常用到gulp,webpack等工具,所以我们最常见到的是npm和package.json,所以先总结一下它们俩。

npm

初始化

$ npm init
or
$ npm init --y

在做前端开发的时候,我们经常会用到构建工具,例如gulp,webpack等,为了让别人也可以参与进来,我们需要告诉别人项目有些什么依赖包,然后让别人也安装同样的依赖包,而npm init产生的package.json就是用来记录我们项目中的依赖的,同样的,在做node开发的时候,也会用刀依赖包,同样需要package.json记录。

在终端输入npm init会询问package.json的各种信息,从而确认。如果全部使用默认值,可以直接在终端输入npm init --y快速生成package.json。

安装依赖包

$ npm install <package name> <package name> ...

$ npm install <package name> -g

$ npm install <package name> --save

$ npm install <package name> --save-dev

$ npm install <pacakage name> --O //--save-optional -B: --save-bundle -E: --save-exact

npm install <package name> -g 表示全局安装,需要注意的是全局模式并不是将一个模块安装包安装为一个全局包的意思,它并不意味着可以从任何地方通过require()来引用,-g的含义是将一个包安装为全局可用的可执行命令。这意味着,所有通过-g安装的包都可以在终端以命令方式运行,例如gulp,webpack等。

--save--save-dev的区别在于前者是生产环境中项目运行需要的依赖,安装后被记录在package.json中的dependencies关键字下;而后者是开发时候需要的依赖,安装后被记录在devDependencies关键字下。

同样--O/B/E分别会被记录到对应的关键字下。

更新依赖包

$ npm update

$ npm update -g

$ npm outdated

$ npm outdated -g

在项目目录下运行npm update可以升级项目中所用依赖到最新版本,而npm update -g则可以升级全局安装的依赖包到最新版。

npm outdated用于检查模块是否过时并列出。

卸载依赖

$ npm uninstall <package name> <package name> ...

$ npm uninstall <package name> -g

$ npm uninstall <package name> --save

$ npm uninstall <package name> --save-dev

使用npm uninstall可以卸载依赖,但是卸载后,在package.json中的纪录并不会被删除,要想在卸载依赖的同时删除在package.json中的纪录,需要在卸载的时候使用安装时的所有的选项,例如,如果安装时候使用了npm install <package name> --save则卸载的时候,同样使用npm uninstall <pacakage name> --save,而如果使用了--save-dev,卸载时候也需要加相同的选项。

使用自定义npm命令

在package.json中,有一个scripts关键字,只需要在该关键字内写入自定义命令以及对应执行的实际命令即可。

"scripts":{
  "test": "nonde ./test.js",
  "dev": "gulp --gulpfile gulpfile-dev.js",
  "build": "gulp --gulpfile gulpfile-build.js"
}

上面的配置中,只要我们在终端运行npm dev就是运行了gulp --gulpfile gulpfile-dev.js,这样就省去了我们在终端输入很长的一段命令,非常方便。

其他

npm view <pacakage name>可以查看包的package.json文件,如果只是看包的某个特性,在后面加上相应的key即可,例如npm v zepto version就是查看当前安装的zepto的版本,v是view的简写。

npm ls可以分析出当前当前项目下能够通过模块路径找到的所有包,并生成依赖树。

npm doc <package name>可以打开该依赖包的官网,其实就是打开了package.json中的homepage。

package.json文件

在运行npm init后会生成package.json文件,该文件用于记录项目中所用到的依赖以及项目的配置信息(比如名称、版本、许可证等)。npm install命令根据这个配置文件自动下载项目运行和开发所需要的依赖。

一个比较完整的package.json文件如下:

{
  "name": "project",
  "version": "1.0.0",
  "author": "张三",
  "description": "第一个node.js程序",
  "keywords":["node.js","javascript"],
  "repository": {
    "type": "git",
    "url": "https://path/to/url"
  },
  "license":"MIT",
  "engines": {"node": "0.10.x"},
  "bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
  "contributors":[{"name":"李四","email":"lisi@example.com"}],
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "latest",
    "mongoose": "~3.8.3"
  },
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-concat": "~0.3.0"
  }
}

在package.json中一些关键字的含义:

1.name:包名

2.version:版本号

3.description:包的描述

4.homepage:包的官网url

5.autor:包的作者名字

6.contributors:包的其他贡献者

7.dependencies:依赖包的列表,使用npm install可以安装依赖包到node_medule目录下

8.repository:包代码存放的地方,可以是git或者svn

9.keywords:关键字

10.scripts:脚本说明对象。它主要被包管理器用来安装、编译、测试和卸载包,示例如下:

"scripts":{

  “install”:"install.js",

  "test":"test.js"

}

11.main:模块引入方法require()在引入包时,会优先检查这个字段,并将其作为包中其余模块的入口,如果该字段不存在,则node会检查目录下的index.js,index.node,index.json作为默认入口。

12.devDependencies:一些模块只在开发时需要依赖,配置这个属性,可以提示包的后续开发者安装依赖包

以上就是关于node中npm和package.json的总结。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
详解nodejs模板引擎制作
Jun 14 #NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 #NodeJs
nodeJS实现路由功能实例代码
Jun 08 #NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 #NodeJs
详解nodejs异步I/O和事件循环
Jun 07 #NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 #NodeJs
nodejs mysql 实现分页的方法
Jun 06 #NodeJs
You might like
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
Python中强大的命令行库click入门教程
2016/12/26 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python读写LMDB文件的方法
2018/07/02 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
房屋出租协议书
2014/04/10 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
JavaScript分页组件使用方法详解
2021/07/26 Javascript
Java 在线考试云平台的实现
2021/11/23 Java/Android
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技