NPM安装使用,以及package.json解释

NPM 是什么?

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

1、下载安装Node.js

$ npm -v  //检查版本,出现版本提示表示成功
3.10.10

2、版本检查更新

$ sudo npm install npm -g

3、安装模块

$ npm install 模块名

以下实例,使用 npm 命令安装Node.js markdown转HTML模块markdown-it:

$ npm install markdown-it //从NPM中下载模块名为markdown-it
安装模块.png

安装好之后,markdown-it包就放在了工程目录下的 node_modules 目录中,在代码中只需要通require('markdown-it') 的方式就好。

var MarkdownIt = require('markdown-it')

当然每个模块的使用方法都有一点点区别,如markdown-it是这样的

markdown-it包使用.png

4、全局安装、本地安装

npm 的包安装分为本地安装、全局安装两种,从命令行来看,差别只是有没有-g而已,比如

npm install markdown-it      //本地安装
npm install markdown-it -g   //全局安装

本地安装

1、 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成node_modules 目录。
2、可以通过 require() 来引入本地安装的包。

全局安装

1、 将安装包放在 /usr/local 下或者你 node 的安装目录。
2、 可以直接在命令行里使用。

提高安装速度

运行
$ npm config set registry https://registry.npm.taobao.org/
---------------------------------------------------------
恢复原样
$ npm config delete registry

5、查看安装路径

$ npm root //查看当前包的安装路径
$ npm root -g //查看全局的包的安装路径
路径.png

6、查看安装信息

$ npm list -g 
所有全局安装的模块.png

7、使用 package.json

命令行方式创建package.json

$ npm init //生成一个package.json

这个命令采用互动方式,要求用户回答一些问题,然后在当前目录生成一个基本的package.json文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。

7.1、单独安装xxx模块(npm install)

$ npm install xxx --save //将该模块写入dependencies属性
$ npm install xxx --save-dev //将该模块写入devDependencies属性。

7.2、卸载本地包(npm uninstall)

$ npm uninstall xxx //你可以将node_modules目录下的某个依赖包移除
$ npm uninstall --save xxx //从dependencies(依赖)中移除
$ npm uninstall --save-dev xxx //从devDependencies中移除

7.3、完整的package.json

{
  "name": "Hello World",  //name属性就是你的模块名称
  "version": "0.0.1", //version必须可以被npm依赖的一个node-semver模块解析
  "author": "张三",  //"author"是一个码农
  "description": "第一个node.js程序", //一个描述,方便别人了解你的模块作用,搜索的时候也有用。
  "mian":"index.js", //main属性指定了程序的主入口文件.
  "keywords":["node.js","javascript"],  //一个字符串数组,方便别人搜索到本模块
  "repository": { //指定一个代码存放地址,对想要为你的项目贡献代码的人有帮助。
    "type": "git",
    "url": "https://path/to/url"
  },
  "license":"MIT", //你应该为你的模块制定一个协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制,如BSD-3-Clause 或 MIT之类的协议
  "engines": {"node": "0.10.x"},
  "bugs":{ //填写一个bug提交地址或者一个邮箱,被你的模块坑到的人可以通过这里吐槽
    "url":"https://github.com/luoshushu",
    "email":"bug@example.com"
    }, 
  "contributors":[{"name":"李四","email":"lisi@example.com"}], // "contributors"是一个码农数组。
  "scripts": { //指定了运行脚本命令的npm命令行缩写。比如:输入npm run start时,所要执行的命令是node index.js。
    "start": "node index.js"
  },
  "dependencies": { //指定了项目运行所依赖的模块
    "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",
  }
}

ps:package.json具体解释请看阮一峰的教程

7.4、.gitignore 文件

作用:

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。

这个文件每一行保存了一个匹配的规则例如:

# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
node_modules被忽略.png

上图:

1、上传某个项目到Github,在当前文件下新建文件.gitgnore,内容为node_modules。作用:不会把node_modules文件夹一起上传。
2、反之从Github上下载到本地,需要下载node_modules文件,直接在命令行输入:npm install 即可正常使用。

最后注意:中文命名就是个万年深坑。


参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容