npm理解
NPM就是一个下载器,通过它可以下载到几乎所有你需要的代码资源。它的成功,包括如下几个方面:
- 海量资源:NPM背后有数以万计的开源免费模块。
- 高效利用:作为开发者,只需要敲几个简单的命令就可以将这些开源模块引入到自己的项目中来。虽然这些模块大部分都可以在github上找到,但当模块数量巨大的时候,一个个去github上下载还是非常困难的。再考虑到版本依赖问题,就更加复杂。但有了NPM,一个命令搞定。
- 鼓励共享:通过NPM提供的
npm adduser,npm publish两个简单的命令,就能把自己写的模块贡献到NPM社区。超低的发布成本无疑为NPM的发扬光大带来了无疑估量的贡献。
NPM管理的是Node模块。理解一个Node模块(my_module),最核心的是要理解下面三大部分:
- 模块本身的代码逻辑
- 模块本身的代码逻辑,自然是通过代码来体现的;
- 模块依赖的第三方组件
- 模块依赖的第三方组件,通过模块的package.json配置文件中dependences字段指定,模块的使用者在安装模块时会根据package.json文件自动下载这些组件(他们其实也是一个个的模块)
- 模块依赖的文档测试工具
- 模块依赖的文档测试工具也是通过package.json配置文件来指定,对应的字段是devDependencies,对于这一部分,模块的使用者有两种选择:不准备了解模块细节,没必要安装这些工具,此时使用者可以通过
npm install my_module --save命令来安装模块;准备对模块进行一些定制,定制后还需要利用模块的测试工具进行系统的测试,此时使用者可以通过npm install my_module --save-dev命令来安装模块,npm会自动将devDependencies指定的工具一起下载下来。
- 模块依赖的文档测试工具也是通过package.json配置文件来指定,对应的字段是devDependencies,对于这一部分,模块的使用者有两种选择:不准备了解模块细节,没必要安装这些工具,此时使用者可以通过
由此可见,模块 = 代码 + 依赖 = 代码 + package.json。我们只需要通过npm把代码和package.json文件下载下来,就能获得使用这个模块所需的一切。
npm理解的更多相关文章
- 01 node.js,npm,es6入门
Node.js安装 1.下载对应你系统的Node.js版本: https://nodejs.org/en/download/ 命令提示符下输入命令 node -v 会显示当前node的版本 快速入门 ...
- NPM一Node包管理和分发工具
NPM 全称 Node Package Manager Node包管理和分发工具,可以把NPM理解为前端的Maven 我们通过npm可以很方便地下载js库,管理前端工程 最近版本的node.js已经集 ...
- NPM 包管理工具详解,使用教程
NPM 包管理工具 1.1 定义:什么是 NPM NPM 全称 Node Package Manager,它是 JavaScript 的包管理工具, 并且是 Node.js 平台的默认包管理工具.通过 ...
- npm的下载与安装
1.Node (1)什么是Node.js Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. (2)Node ...
- Appium安卓真机环境搭建
说明 步骤可能比较简洁,因为手头上有安卓测试机,所以需要配置虚拟机的童鞋请去虫师博客园,因为我也是从那儿学的,哈哈.点我飞到虫师那儿 但是如果你要搭建真机测试环境的话,本教程将是最简单实用的. 1. ...
- Angular2入门学习
最近项目使用angular2,1和2版本变化大变样.下面总结一些学习网址及安装步骤. 中文官网(必看): https://angular.cn 懒人学习: http://www.imooc.com/l ...
- npm的理解
一 概念方面 npm的全称是node package manger ,是一个nodejs包管理工具,已经成为非官方的发布node模块包的标准.有了npm可以很快速的找到特定服务器要使用的包,进行下载, ...
- 从npm 角度理解 mvn 的 pom.xml
从npm 角度理解 mvn 的 pom.xml pom -- project object model. 用于描述项目的配置: 基础说明 依赖 如何构建运行 类似 node.js 的 package. ...
- 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI
本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...
随机推荐
- 高亮代码 SyntaxHighlighter
SyntaxHighlighter: http://alexgorbatchev.com/SyntaxHighlighter/download/ demo <!DOCTYPE html PUBL ...
- babel 不能统编译Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise的问题
Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator.Set.Maps.Proxy.Reflect.Symbol.Promis ...
- MySQL时间戳、时间
MySQL中: now():获取当前时间:例:SELECT now(); // 结果:2018-07-03 13:40:14 unix_timestamp():将时间转换为时间戳:例: SELECT ...
- 简单了解,使用oracle中的索引,表分区
索引的分类 如下: 物理分类 逻辑分类 分区或非分区索引 单列或组合索引 B树索引(标准索引) 唯一或非唯一索引 正常或反向键索引 基于函数索引 位图索引 B树索引 b树索引通常也称为标准索引,索 ...
- C语言进阶——类型转换04
C语言内可以进行类型转换: 强制类型转换 隐式类型转换 强制类型转换的语法: (tpye)value (type)value_name 强制类型转换的结果: 目标类型可以容纳目标值:结果不变 目标值不 ...
- [KMP][BZOJ1355][Baltic2009]Radio Transmission
题面 Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,\(1 < L ...
- Apache服务配置
Apache 1.安装Apache服务 第1步:把光盘设备中的系统镜像挂载到/media/cdrom目录. [root@zhangjh ~]# mkdir -p /media/cdrom/ [root ...
- 自定义注解不能拦截controller层
1,首先在springMVC的配置文件中,webapp/WEB-INF/servlet.xml,加上AOP的相关内容: <beans xmlns="http://www.springf ...
- PHP.14-图片处理类
图片处理类 test.php <?php include "images.class.php"; $image=new Image("./images/" ...
- Android 快捷方式的创建与查询 快捷方式问题大全 获取快捷方式在Launcher数据库中的信息 Failed to find provider info for com.android.la
/** * 创建添加快捷方式 * 其中需要设置的有: * 1. 快捷方式的标题 * 2. 快捷方式的图标 * 3. 点击快捷方式后的跳转 */ public static void createSho ...