node package manager
什么是npm
npm(node package manager),通常称为node包管理器。顾名思义它的主要功能就是管理node包。它可以让开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单,不过有的时候项目依赖过多,造成路径过深,超过了操作系统的文件深度限制。因此npm3对此做了很大改进。简单的来说将传统的嵌套结构改为了平铺结构
npm的安装
安装node后,npm会自动被安装
安装完成后,在终端输入 node -v
查看node版本,输入 npm -v
查看npm版本
npm版本应该大于2.1.8,输入 sudo npm install npm -g
可更新npm的版本。
npm包管理
node包的安装分两种: 本地安装、全局安装,两者的区别如下:
- 本地安装: package会被下载到当前所在目录,也只能在当前目录下使用
- 全局安装: package会被下载到特定的系统目录下安装的package能够在所有目录下使用。
node_module查找依赖的路线是:先从本地目录下寻找,不存在就依次向上级目录中查询,直到系统根目录。node全局安装在系统根目录下,所以全局安装后可在所有目录下使用。
另外,如果你需要用到别人的包,你可以去npm官网去搜索你需要的包名,使用方法都会在上面,你只需要在你的 终端输入 npm install <app name>
就可以下载到你的目录下,然后就可以通过require去使用模块,你也可以注册登录npm,在这上面分享你的代码供其他人使用。
npm install --save app
:安装的是项目运行所依赖的模块,依赖名称会存到package.json里的"dependencies"字段里;npm install --save-dev app
:安装的是项目开发所需要的模块,依赖名称会存到package.json里的"devDependencies"字段里
二者之间的区别在于:比如类似于grunt,babel这类工具,是开发时使用的,就用--save-dev;
而类似于jquery这种是给用户使用的,就用--save。
而如果你需要在npm上发布了一个包,其中有两个文件是必不可少的,README.md , package.json 。
README :你对发布你的包的介绍信息(使用方法,安装方法等)
package.json :每个项目的根目录下面,一般都有一个package.json文件,用于定义项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需要的模块,配置项目所需的运行和开发环境,npm init
指令可以帮你生成一个package.json,你只需要填入信息即可。
npm script
npm script 允许在 package.json 中使用 script 字段定义脚本命令。通过设置npm script可以方便的实现前端工作流,举例来说,如果我们在package中添加下面在这段脚本
"scripts": {
"start": "node index.js",
}
此时,我们在npm 输入 npm run start
,就相当于执行了node index.js
。
npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。
比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。
这意味着,当前目录的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。比如,当前项目的依赖里面有 Mocha,只要直接写mocha test就可以了。
关于 npm script ,推荐大家去看看阮一峰的这篇博客:npm script 的使用
上一篇: Debian Package Manager - dpkg
下一篇: box
推荐阅读
-
Android向node.js编写的服务器发送数据并接收请求
-
iOS中定位(location manager )出现log日志的解决办法
-
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
-
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
-
Starting MySQL.Manager of pid-file quit without updating file.[FAILED]的解决方法
-
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
-
Node.js中.pfx后缀文件的处理方法
-
基于Node.js的WebSocket通信实现
-
node.js发送邮件email的方法详解
-
深入Node之初识