饥人谷技术博客

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

2017-12-02  本文已影响428人  取个帅气的名字真好

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 即可正常使用。

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


参考:

上一篇下一篇

猜你喜欢

热点阅读