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包使用.png4、全局安装、本地安装
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 即可正常使用。
最后注意:中文命名就是个万年深坑。
参考: