• -S,–save 安装包信息将加到dependencies(生产阶段的依赖)
  1. npm install --save
  2. npm install -S
  • -D, –save-dev 安装包信息将加到devDependencies(开发阶段的依赖),所以开发阶段一般使用它
  1. npm install --save-dev
  2. npm install -D
  • -O, –save-optional 安装包信息将加入到optionalDependencies(可选阶段的依赖)
  1. npm install jquery --save-optional
  2. npm install jquery -O
  3.  
  4. 以安装jquery为例,pack.json的文件中optionalDependencies字段有以下代码
  5. "optionalDependencies": {
  6. "jquery": "^3.9.1"
  7. }
  • -E, –save-exact 精确安装指定模块版本
  1. npm install jquery --save-exact
  2. npm install jquery -E
  3.  
  4. 如果输入命令为
  5. npm install jquery -ES
  6.  
  7. 留意package.json 文件的 dependencies 字段,以看出版本号中的^消失了
  8. "dependencies": {
  9. "jquery": "3.2.1"
  10. }
  • 模块的依赖都被写入了package.json文件后,他人打开项目的根目录(项目开源、内部团队合作),使用npm install命令可以根据dependencies配置安装所有的依赖包
  1. npm install
  2. 输入该命令后,package.jsondevDependencies字段里的插件会被自动安装到node_modules
  • npm uninstall 卸载模块
  1. npm uninstall jquery --save-optional//卸载可选阶段的依赖里的jquery`

npm目前支持一下几种依赖包管理:

  1. depedencies
  2. devDependencies
  3. peerDependencies
  4. optionalDependencies
  5. bundledDependencies / bundleDependencies
  1. depedencies:指定应用依赖的外部包,这些依赖是应用正常发布后正常执行所需要的,但不包含测试时和本地打包时所使用的包
  2.  
  3. devDependencies:它里面的包只用于开发环境,不用于生产环境,这些包通常是单元测试或者打包工具等,例如gulp, grunt, webpack, moca, coffee
  4.  
  5. peerDependencies:同等依赖,或者叫同伴依赖,用于指定当前包(也就是你写的包)兼容的宿主版本。如何理解呢? 试想一下,我们编写一个gulp的插件,而gulp却有多个主版本,我们只想兼容最新的版本,此时就可以用同等依赖(peerDependencies)来指定:
  6. {
  7. "name": "gulp-my-plugin",
  8. "version": "0.0.1",
  9. "peerDependencies": {
  10. "gulp": "3.x"
  11. }
  12. }
  13. 当别人使用我们的插件时,peerDependencies就会告诉明确告诉使用方,你需要安装该插件哪个宿主版本。
  14. 通常情况下,我们会在一个项目里使用一个宿主(比如gulp)的很多插件,如果相互之间存在宿主不兼容,在执行npm install时,cli会抛出错误信息来告诉我们,比如:
  1. npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements!
  2. npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9
  3. npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0

运行命令npm install gulp-my-plugin –save-dev来安装我们插件,我们来看下依赖图谱: 
├── gulp-my-plugin@0.0.1 
└── gulp@3.9.1

    • optionalDependencies:可选依赖,如果有一些依赖包即使安装失败,项目仍然能够运行或者希望npm继续运行,就可以使用optionalDependencies。另外optionalDependencies会覆盖dependencies中的同名依赖包,所以不要在两个地方都写。
    • bundledDependencies / bundleDependencies:打包依赖,bundledDependencies是一个包含依赖包名的数组对象,在发布时会将这个对象中的包打包到最终的发布包里。
  1. {
  2. "name": "fe-weekly",
  3. "description": "ELSE 周刊",
  4. "version": "1.0.0",
  5. "main": "index.js",
  6. "devDependencies": {
  7. "fw2": "^0.3.2",
  8. "grunt": "^1.0.1",
  9. "webpack": "^3.6.0"
  10. },
  11. "dependencies": {
  12. "gulp": "^3.9.1",
  13. "hello-else": "^1.0.0"
  14. },
  15. "bundledDependencies": [
  16. "fw2",
  17. "hello-else"
  18. ]
  19. }
  1. 执行打包命令npm pack, 在生成的fe-weekly-1.0.0.tgz包中,将包含fw2hello-else 但是值得注意的是,这两个包必须先在devDependenciesdependencies声明过,否则打包会报错。

转:https://blog.csdn.net/u013496115/article/details/78611418

npm install命令详解的更多相关文章

  1. 【原】npm 常用命令详解

    今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...

  2. npm 常用命令详解[转]

    npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm ...

  3. npm 常用命令详解

    本文以Windows平台上做测试,以gulp为示例做教程,出自作者白树,转载请声明出处! 目录 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm updat ...

  4. npm 常用命令详解(转载)

    学习gulp的使用时,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块的朋友不可错过这 ...

  5. npm常用命令详解

    ~~~https://www.npmjs.org/有比较全的api文档 NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的 ...

  6. ./config\make\make install命令详解

    这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤 一.基本信息 1../configure 是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不 ...

  7. pssh系列命令详解

    安装 pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可 ...

  8. [转载]Linux 命令详解:./configure、make、make install 命令

    [转载]Linux 命令详解:./configure.make.make install 命令 来源:https://www.cnblogs.com/tinywan/p/7230039.html 这些 ...

  9. Hexo系列(三) 常用命令详解

    Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...

随机推荐

  1. [Kubernetes]关于 Kubernetes ,你想要的,都在这儿了

    陆陆续续,关于 Kubernetes 写了有 20+ 篇文章了. 今天这篇文章来一个整合,从实践到理论,可以按需查看(我是按照博客发表时间来排序的,如果后续有想要更新的内容,也会及时更新到这篇文章中) ...

  2. django-form字段form 和插件widgets

    26)django-form字段和插件widgets 创建Form类时,主要涉及到 [字段] 和 [插件],字段用于对用户请求数据的验证,插件用于自动生成HTML 一:常用字段 1.Django中Fo ...

  3. 用JDBC连接SQL Server2017数据库

    用JDBC连接SQL Server2017数据库 2018年03月26日 17:40:47 yasinzhang 阅读数:8346 安装完SQL server2017之后,选择SQL 身份验证登录,可 ...

  4. Django组件-Forms组件

    Django的Forms组件主要有以下几大功能: 页面初始化,生成HTML标签 校验用户数据(显示错误信息) HTML Form提交保留上次提交数据 一.小试牛刀 1.定义Form类 from dja ...

  5. CollectionUtils工具类的常用方法

    集合判断:  例1: 判断集合是否为空: CollectionUtils.isEmpty(null): true CollectionUtils.isEmpty(new ArrayList()): t ...

  6. html网页引用中文字体,解决加载缓慢办法

    [ttf 压缩]html网页引用中文字体,文件过大,加载缓慢的解决办法[字蛛][web font] [字蛛]http://font-spider.org/ 先安装好 NodeJS,然后执行: npm ...

  7. Python3——坦克大战

    # coding=utf-8 # Version:python3.6.1 __date__ = '2018/9/20 18:51' __author__ = 'Lgsp_Harold' import ...

  8. requests补充

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中,POST 一般用来向服务端提交数据,本文 ...

  9. elasticsearch 学习

    docker run -p : -d elasticsearch #直接拉取运行 #指定条件搜索curl --request GET \ --url 'http://localhost:9200/im ...

  10. ubuntu16.04安装opencv3.4.0

    老实说这篇记录可能拖了有8个月了,早在去年6月份我应该是第一遍安装opencv.当时懒得记录,以为自己什么都能记得住.后来由于电脑各种原因,需要重装opencv,装的时候发现啥都记不住了.然后又得去找 ...