资讯专栏INFORMATION COLUMN

Nodejs之npm&package.json

atinosun / 869人阅读

摘要:在终端输入会询问的各种信息,从而确认。这意味着,所有通过安装的包都可以在终端以命令方式运行,例如,等。用于检查模块是否过时并列出。文件在运行后会生成文件,该文件用于记录项目中所用到的依赖以及项目的配置信息比如名称版本许可证等。

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

如何开始学习node

首先介绍几个我入门的教程:

七天学会nodejs:https://nqdeng.github.io/7-days-nodejs/

菜鸟教程-nodejs教程:http://www.runoob.com/nodejs/nodejs-tutorial.html

这两个教程相对比较简单,所以看完这两个教程后,对nodejs就会也只会有一个大致的了解

然后可以看看止水大神的node教程(需梯子还在更新中...)

node.js高级编程:https://www.youtube.com/watch?v=5YpYvrvVJ6Y&list=PLsdWTv8SAAr7_ufM68jgykoOc5WvK97kb

当初我问很多人如何开始学习nodejs,很多人推荐朴灵的《深入浅出Node.js》,不过说实话,这本书并不适合入门看,难度还是有的,因为这本书会讲到node的很多原理,比较细,所以个人觉得可以配合着看。因为目前我自己也在摸索着学习,所以关于学习node先说到这里。

作为前端,因为经常用到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   ...

$ npm install  -g

$ npm install  --save

$ npm install  --save-dev

$ npm install   --O //--save-optional  -B: --save-bundle  -E: --save-exact

npm install -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   ...

$ npm uninstall  -g

$ npm uninstall  --save

$ npm uninstall  --save-dev

使用npm uninstall可以卸载依赖,但是卸载后,在package.json中的纪录并不会被删除,要想在卸载依赖的同时删除在package.json中的纪录,需要在卸载的时候使用安装时的所有的选项,例如,如果安装时候使用了npm install --save则卸载的时候,同样使用npm uninstall --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 可以查看包的package.json文件,如果只是看包的某个特性,在后面加上相应的key即可,例如npm v zepto version就是查看当前安装的zepto的版本,v是view的简写。

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

npm doc 可以打开该依赖包的官网,其实就是打开了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的总结。最后在写本文的时候发现阮一峰老师的一个关于js的教程JavaScript 标准参考教程,应该是阮一峰老师最新的关于js的教程,里面有关于node的讲解,可以看看。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81074.html

相关文章

  • 前端构建工具(2) -- npm&yarn

    摘要:如果使用了代表代表,则跳过提问阶段,直接生成一个新的文件。 前言 简介:node的包管理器,它随nodejs一起安装,即你安装了nodejs就可以用npm进行包管理,通过npm可以从npm服务器下载别人上传的第三方库,下载并安装别人上传的命令行程序,上传自己写的第三方库和命令行程序可用npm -v查看npm版本号确定npm是否可用,如果npm版本过低,可以使用npm -install ...

    zhangke3016 评论0 收藏0
  • NodeJS打造多人在线聊天室(NodeJS & SocketIO & Expre

    摘要:技术栈项目背景这个项目主要是为了玩玩,项目的方向大概是做出类似的在线聊天系统。项目使用进行部署和管理,功能在不断的迭代开发中。首页用户列表用户中心注册登陆注销用户资料指定聊天室开始安装使用之前,请在中修改的安装路径。 技术栈:NodeJS & SocketIO & Express & EJS & MongoDB & Gulp 项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概...

    codecook 评论0 收藏0
  • NodeJS打造多人在线聊天室(NodeJS & SocketIO & Expre

    摘要:技术栈项目背景这个项目主要是为了玩玩,项目的方向大概是做出类似的在线聊天系统。项目使用进行部署和管理,功能在不断的迭代开发中。首页用户列表用户中心注册登陆注销用户资料指定聊天室开始安装使用之前,请在中修改的安装路径。 技术栈:NodeJS & SocketIO & Express & EJS & MongoDB & Gulp 项目背景 这个项目主要是为了玩玩NodeJS,项目的方向大概...

    Astrian 评论0 收藏0
  • 从零开始构建 Wijmo & Angular 2 小应用

    摘要:中秋之际,团队发布正式版,当天宣布支持。其实从开始,到之后版本和版本,一直紧随其后。现在就开始在中使用的第一个应用吧。这些警告表示包里没有,这些仅仅用于一些包信息。好了,现在的准备工作已经完成了,您可以开始创建的应用了。 中秋之际,Angular 团队发布 Angular 2 正式版,Wijmo 当天宣布支持 。其实从Angular Alpha开始,到之后 Beta版本 和 RC 版本...

    glumes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<