npm简介

维基百科中npm定义

npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发。

艾萨克表示自己意识到“模块管理很糟糕”的问题,并看到了PHP的PEAR与Perl的CPAN等软件的缺点,于是编写了npm。

npm可以管理本地项目的所需模块并自动维护依赖情况,也可以管理全局安装的JavaScript工具。

如果一个项目中存在package.json文件,那么用户可以直接使用npm install命令自动安装和维护当前项目所需的所有模块。

在package.json文件中,开发者可以指定每个依赖项的版本范围,这样既可以保证模块自动更新,又不会因为所需模块功能大幅变化导致项目出现问题。开发者也可以选择将模块固定在某个版本之上。

简言之,npm是node package management,是一款包管理工具。

安装npm

Node.js安装包中包括npm,下载地址https://nodejs.org/en/download/releases/

下载node.js,例如10.11.0

安装一个包

如何使用npm进行包管理呢?

本地安装

使用如下命令,可以安装一个包

# npm install <package name>

会在当前目录下创建node-modules,将要安装的包放置在这个目录下。

并在package.json文件依赖选项中添加相应的包。

npm install 如果不带任何参数,会从package.json获取要安装的依赖包和版本,并进行安装。

全局安装

如果你想将其作为一个命令行工具,那么你应该将其安装到全局。这种安装方式后可以让你在任何目录下使用这个包。比如 grunt 就应该以这种方式安装。

# npm install -g <package name>

例如

npm install -g jshint

package.json文件

在本地目录中如果没有 package.json 这个文件的话,那么最新版本的包会被安装。

如果存在 package.json 文件,则会在 package.json 文件中查找针对这个包所约定的语义化版本规则,然后安装符合此规则的最新版本。

文件内容格式example

{
"name": "my-awesome-package",
"version": "1.0.0"
}

创建package.json文件

执行命令,创建package.json文件

执行过程中,会进行配置项的选择。

# mkdir my-vue-proj
# cd my-vue-proj
# npm init This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields
and exactly what they do. Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file. Press ^C at any time to quit.
package name: (my-vue-proj)
version: (1.0.0)
description: npm test example
entry point: (index.js)
test command:
git repository:
keywords:
author: lanyang
license: (ISC)
About to write to /Users/zhangyunyang/workspace/my-vue-proj/package.json: {
"name": "my-vue-proj",
"version": "1.0.0",
"description": "npm test example",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "lanyang",
"license": "ISC"
} Is this ok? (yes) yes

查看当前目录

# ls
package.json

可以看到已经创建了package.json文件

也可以直接执行命令,创建一个默认的package.json

# npm init --yes

文件各个选项的含义

  • name: the current directory name
  • version: always 1.0.0
  • description: info from the readme, or an empty string ""
  • main: always index.js
  • scripts: by default creates an empty test script

    可以这样使用: # npm test or npm run test
  • keywords: empty
  • author: empty
  • license: ISC

package.json文件中的Dependencies

两种类型的依赖

  • "dependencies": These packages are required by your application in production.
  • "devDependencies": These packages are only needed for development and testing.

一个是针对生产环境的,另一个是针对测试环境。

安装一个包后,package.json文件的变化

例如

# npm install lodash

安装包后package.json文件内容如下

{
"name": "my-vue-proj",
"version": "1.0.0",
"description": "npm test example",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zyy",
"license": "ISC",
"dependencies": {
"lodash": "^4.17.11"
}
}

如何更新安装的包

本地安装包

执行以下两个步骤:

  • 在 package.json 文件所在的目录中执行 npm update 命令
  • 执行 npm outdated 命令,不应该有任何输出。

全局安装包

对于全局安装包,更新执行如下命令:

npm update -g <package>

例如,

npm update -g jshint

查找哪些全局包需要更新:

# npm outdated -g --depth=0.

更新所有全局的包:

npm update -g.

如何卸载安装的包

本地安装包

如需删除 node_modules 目录下面的包(package),请执行:

npm uninstall

# npm uninstall <package>
// 例如
# npm uninstall lodash

如需从 package.json 文件中删除依赖,需要在命令后添加参数 --save:

npm uninstall --save lodash

注意:如果你将安装的包作为 "devDependency"(也就是通过 --save-dev 参数保存的),那么 --save 无法将其从 package.json 文件中删除。所以必须通过 --save-dev 参数可以将其卸载。

全局的安装包

通过如下命令将包(package)安装到全局:

# npm uninstall -g <package>

例如安装 jshint 包到全局,使用如下命令:

# npm uninstall -g jshint

package和module区别

  • A package is a file or directory that is described by a package.json. This can happen in a bunch of different ways! For more info, see "What is a package?, below.
  • A module is any file or directory that can be loaded by Node.js' require(). Again, there are several configurations that allow this to happen. For more info, see "What is a module?", below.

参考

npm中文文档

npm是什么的更多相关文章

  1. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  2. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  3. NPM (node package manager) 入门 - 基础使用

    什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...

  4. Npm包的开发

    个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │   ...

  5. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  6. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  7. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  8. 升级npm

    查看npm的所有版本 运行命令: npm view npm versions 命令运行后,会输出到目前为止npm的所有版本. [ '1.1.25', '1.1.70', '1.1.71', '1.2. ...

  9. NPM如何更新到最新版

    参考文章--npm更新到最新版本的方法 其实我们可以这样,随便新建一个文件夹例如:F:\test.按着"shift"键,右键该文件夹,选择"在此处打开命令窗口(W)&qu ...

  10. npm源切换

    版权声明:欢迎转载,请附加转载来源:一路博客(http://www.16boke.com)   目录(?)[+] 安装 使用 列出可选的源 切换 增加源 删除源 测试速度 许可 项目主页   我们介绍 ...

随机推荐

  1. 移动端与PC端的触屏事件

    由于移动端是触摸事件,所以要用到H5的属性touchstart/touchmove/touched,但是PC端只支持鼠标事件,所以此时可以这样转换 var touchEvents = { touchs ...

  2. swiper 组件的高度设置问题

    1.swiper组件直接运用时, .content>swiper{height:100%} 是不起作用的. 正确的做法是: swiper{ height: 100vh; } // 或者 < ...

  3. JAVA中的Set

    Set中存放的是没有重复的数据,下说记录一下使用中的小细节. 1.HashSet 区分大小写: Set<String> set1 = new HashSet<String>() ...

  4. Eclipse下SpringBoot没有自动加载application.properties文件

    Eclipse内创建SpringBoot项目,在java/main/resources文件夹下面创建application.properties配置文件,SpringApplication.run后发 ...

  5. mybatis-generator eclipse插件 使用方法

    mybatis-generator eclipse插件离线安装包 网址:http://download.csdn.net/download/gxl442172663/7624747 云盘地址:http ...

  6. 拿到iframe页面里面的变量及元素的方法

    先严重差评一下,用这种方法window.parent.document.frames['layui-layer-iframe1']不行!而且frames方法存在浏览器不兼容问题(貌似火狐不行) 页面d ...

  7. POWER BI报表服务器混合云初了解

    Power BI报表服务器 购买Power BI Premium时,你可以获取2个产品,一个是Power BI Service另外一个是Power BI Report Server. Power BI ...

  8. 2017常见的50道java基础面试题整理(附答案)

    1.作用域public,private,protected,以及不写时的区别 答: 区别如下: 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是 ...

  9. 【转载】 996,谁的ICU?

    原文地址: https://baijiahao.baidu.com/s?id=1629803937354992525&wfr=spider&for=pc --------------- ...

  10. Insert插入不同的列数量,统计信息对比

    一.实验目的: Insert插入表中相同的行数量,不同的列数量,通过10046 和autotrace工具对比查看逻辑读.物理读.time数据,并得出相应结论 二.测试 2.1测试流程: =>[为 ...