您的位置:首页 > 产品设计 > 产品经理

npm包管理器和package.json入门_npm是什么_npm怎么用

2018-02-27 10:30 519 查看

一、  NPM 概念:

npm是nodeJS  package managent,nodejs的包(模块)管理器,nodejs中提供了这个很好的机制,解决的问题:当nodejs本身的不具备某个功能(如:链接数据库的mongodb),而第三方开发了这样的功能。那么nodejs可以使用npm把第三方的这个功能安装上并使用。把第三方的这个功能叫模块,也叫包。Npm的作用就是可以把第三方的包管理起来。在项目文件夹下利用npm安装模块 后,项目文件夹下就会多出文件夹node_modules和文件package.json。
以下给大家说一下,如何使用npm安装第三方的模块(包),先看一下安装后的结果

二、  node_modules文件夹:

存储着第三方模块的源代码



三、  package.json文件:

该文件保存着对该项目的描述
如:{
  "name": "day06express",
  "version": "0.0.0","keywords": [],
"author": "",
"license": "ISC",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
 
},
  "dependencies": {
    "body-parser": "~1.18.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "ejs": "~2.5.7",
    "morgan": "~1.9.0",
    "serve-favicon": "~2.4.5"
 
},
  "devDependencies": {
    "express": "^4.15.5"
 
}
}

四、  确保你本机安装了nodejs

因为,npm是nodejs的包管理器,所以,需要安装nodejs。
如果没有安装nodejs,那就装吧:
1)、在地址http://nodejs.cn/download/下载nodejs的安装包,在window操作系统下下一步,下一步就行了:



2)、测试一下:按window + r 输入cmd回车,然后输入node -v
         然后输入npm -v 
             如果都能打印出相应版本信息,那么说明没有问题。
如果提示“ 不是内部或外部命令,也不是可运行的程序或批处理文件“。那就配置环境变量(系统变量path中),这样你就可以在全局范围内去使用它了
我的路径是在c:\ProgramFiles\nodejs\node_modules\npm\bin,记得把它配置进去。

五、  全局安装第三方模块(包)

全局安装:即把该模块安装到操作系统,(配置好环境变量后)在该操作系统下的任何路径里都可以用命令的方式运行该模块
写法: 在命令行中运行以下命令:npm install 模块名 -g。
假如说你需要用gulp模块(包),那么就在命令行中运行:npm install gulp -g

六、  局部(本地)安装第三方模块(包)

1、        局部安装:

表示把该模块的源代码安装到本项目中的node_modules文件夹下,在本项目中就可以使用该模块的源代码,用require()函数引用该模块,使用该模块里的函数或者对象。

2、        局部安装的参数:

a)    无参数:   npm install 模块名
npm会把互联网服务器上该模块的源代码拷贝到你的项目中的node_modules文件夹下。当你为你的模块(项目)安装一个依赖模块时,正常情况下你得先安装他们(在模块根目录下npm install module-name),然后连同版本号手动将他们添加到模块配置文件package.json中的依赖里(dependencies)或者devDepandencies。
b)    --save:简写为-S
如: npm install 模块名 --save或者npm install 模块名  -S
该参数可以自动把模块名和版本号加入到package.json文件里的依赖选项(dependencies)下
dependencies:  项目依赖(即项目发布后还得依赖该模块)
c)    --save-dev: 简写为-D
如: npm install 模块名 --save-dev 或者npm install 模块名  -D
该参数可以自动把模块名和版本号加入到package.json文件里的开发依赖选项(devDepandencies)下。
devDepandencies:开发依赖(即开发过程中需要该模块)

七、        Package.json文件常见属性解释:

一般来说,如果你需要把你的项目也发布成模块供别人使用时,该文件就非常重要。
a)    "name": "02webpack"    项目名称
b)    "version": "1.0.0"    项目版本号
c)    "description": ""   项目描述
d)    "keywords": [] 一个字符串数组,方便别人搜索到本模块
e)    "author": "",作者,也叫码农。
f)     "license": "ISC",你应该为你的模块制定一个协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制。最简单的,例如你用BSD-3-Clause 或 MIT之类的协议,如下:{ "license" : "BSD-3-Clause" }
你可以在https://spdx.org/licenses/这个地址查阅协议列表 。
g)    "main": "index.js"  项目入口文件
main属性指定了程序的主入口文件。意思是,如果你的模块被命名为foo,用户安装了这个模块并通过require("foo")来使用这个模块,那么require返回的内容就是main属性指定的文件中 module.exports指向的对象。
它应该指向模块根目录下的一个文件。对大对数模块而言,这个属性更多的是让模块有一个主入口文件,然而很多模块并不写这个属性。
h)    "scripts": {
  "start": "node./bin/www"
},
scripts属性是一个对象,里边指定了项目的生命周期个各个环节需要执行的命令,是npm脚本。
如:npm start就相当于在命令行执行node ./bin/www。
注意:start命令比较特殊,直接是用npm运行,其它命令得用 npm run运行。
i)        "private": true, 如果这个属性被设置为true,npm将拒绝发布它,这是为了防止一个私有模块被无意间发布出去。
j)     dependencies是运行时依赖,
dependencies 下的模块,则是我们发布后还需要依赖的模块,譬如像jQuery库或者Angular框架类似的,我们在开发完后后肯定还要依赖它们,否则就运行不了。
k)    devDependencies是开发时的依赖。即devDependencies 下列出的模块,是我们开发时用的,比如 我们安装 js的压缩包gulp-uglify 时,我们采用的是 “npm install –save-dev gulp-uglify ”命令安装,因为我们在发布后用不到它,而只是在我们开发才用到它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息