npm详解
一、npm介绍及安装
对于npm,大家多多少少都用过,作为一门技术,我想写篇博客记录一下,一起分享,一起学习。
npm,是Node Package Manager的缩写,node的模块管理器,它是随同NodeJS一起安装的包管理和分发工具。通过npm可以实现JavaScript资源的下载、共享、发布,npm聚集了丰富大量的JavaScript资源包。如果你有GitHub的使用经验,其实npm的性质跟github有点类似,npm是JavaScript的资源管理平台,只不过npm有自己的发布和下载规范。
对于npm的安装,其实新版本的nodeJS已经集成了npm,所以只要你安装了nodejs,其也一并装好了。

二、如何使用淘宝镜像
像介绍所说的,npm拥有大量JavaScript资源包,而资源包服务器是在国外的,通过命令下载资源包的时候,因地域网速而异,国内相对会比较慢,在这里,我介绍一下使用淘宝镜像加载npm中的JavaScript资源包。你也可以访问https://npm.taobao.org/自行操作。
打开命令行,输入指令:npm install -g cnpm --registry=https://registry.npm.taobao.org,回车即可,待加载完:

由于是全局安装,保存目录在全局中,如下:

那就成功了。之后使用cnpm代替npm就可以了。
比如:npm install 用 cnpm install 代替。
三、初始化package.json
package.json 位于项目的根目录下面,用于定义包的属性,记录所有安装模块的名字。package.json有项目开发及发布中所有的依赖包,在团队开发中,只需要把package.json文件共享,其它开发者只需要通过 npm install 命令安装package.json文件中记录的资源就可以了,无需把所有的资源包发送给其他开发者。下面我们来看一下如何初始化package.json。
1、在项目根目录打开命令行窗口,可以按shift键,点鼠标右键,选择在此处打开窗口命令,或者cd 到当前项目目录
2、输入 npm init 回车

3、按照项目填写相关信息,具体属性参数如下:
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm会自动将依赖包安装在node_module 目录下。
repository - 包代码存放的地方的类型,可以是git 或 svn,git 可在 Github 上。
main - main 字段是一个模块ID,它是一个指向你程序的主要项目。
keywords - 关键字
最后点击yes就可以生成package.json文件。
这里我就随便敲了,格式如下:
{
"name": "npm",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
四、npm安装模块
安装指令如下:npm install <Module Name>@<?>
<Module Name>是资源模块名称,例如:jquery,@<?>是版本号,可以省略,也可以指定版本号,省略默认最新版本。
安装分全局安装和本地安装,指令区别是全局多了个'-g',如 npm install jquery -g 或npm install -g jquery
两者还是有区别的:
1、安装位置会不一样。全局安装会安装到全局环境里面,路径可以通过指令npm root -g查到,一般在 \Users\用户名\AppData\Roaming\npm\node_modules目录下。

本地安装就直接在项目路劲的node_modules下。
2、调用方式不一样
全局安装会生成cmd文件,供命令行使用。

本地安装可以直接通过require()的方式引入项目中node_modules目录下的模块
var jq = require('jquery');
document.write('<h1>Hello World!!!</h1>');
alert(jq('h1').length);
npm还提供了开发依赖安装(devDependencies)与生产依赖安装(dependencies),安装指令稍微有些不一样,举个安装jquery的例子:
生产依赖:npm install jquery --save 或 npm install --save jquery
开发依赖:npm install jquery --save-dev 或 npm install --save-dev jquery
使用--save 和--save-dev标识符,还会在package.json文件的dependencies字段和devDependencies字段添加该package的名称和版本号:

(提示:1、此处可以使用淘宝镜像下载,比如cnpm install jquery --save-dev,会提高加载速度;2、版本号前面的'^'表示版本向上取最新的,比如说如果JQ出了个4版本,就会去到4版本)
五、整理npm常见的指令
除了上述所讲的指令,npm还有很多指令,下面整理列出:
1、版本检查:npm -v
2、安装指令:npm install [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [--dry-run]
3、卸载指令:npm uninstall jquery --save 或者 npm uninstall jquery(加 --save 会自动把package.json中dependencies属性中的jquery删除,不加则不删除)
4、更新指令:npm update jquery
5、搜索指令:npm search express
6、帮助指令:npm help
7、查看模块:npm ls(全局npm ls -g)
8、查看包的安装路径:npm root [-g]
9、管理npm配置:npm config
npm config set <key> <value> [-g|--global]
npm config get <key>
npm config delete <key>
npm config list
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]
10、更新npm:npm install npm -g
11、注册用户:npm adduser
12、发布模块:npm publish
还有更多的指令待大家探索,分享就到这里,欢迎转载,请注明出处!
npm详解的更多相关文章
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
- node.js的npm详解
一.什么是npm呢 npm(Node Package Manager,node包管理器)是node的包管理器,他允许开发人员在node.js应用程序中创建,共享并重用模块.模块就是可以在不同的项目中重 ...
- nodeJs中npm详解
npm 是 Node.js 的模块依赖管理工具.作为开发者使用的工具,主要解决开发 node.js 时会遇到的问题.如同 RubyGems 对于 Ruby 开发者和 Maven 对于 Java 开发者 ...
- NPM使用详解(下)
NPM使用详解(下) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
- Angular Npm Package.Json文件详解
Angular7 Npm Package.Json文件详解 近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...
- npm安装vue详细教程(图片详解)
npm安装vue详细教程(图片详解) 一.总结 一句话总结:整个安装流程照着教程来,注意系统环境变量的配置,注意一下npm的本地仓库和缓存位置 教程 系统环境变量 仓库 缓存 1.什么情况下最适合用n ...
- 详解npm的模块安装机制
详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm ...
- 源映射(Source Map)详解
一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...
- Cordova 打包 Android release app 过程详解
Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...
随机推荐
- java线程学习(一)
1.简介 java基础知识部分线程创建的三种方式.线程执行的样例. 代码地址:http://git.oschina.net/blue_phantom/javaj 包位置:package com.blu ...
- Maven settings.xml配置解读
本文对${maven.home}\conf\settings.xml的官方文档作个简单的解读,请确保自己的maven环境安装成功,具体安装流程详见Maven安装 第一步:看settings.xml的内 ...
- 1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
- 面向对象的全套“企业微信”api接口的代码实现,网上太多“面向过程”微信api接口的代码,这个开源给需要的人用
有段时间没有写文章了. 一直以来,微信的热门是看得到的,很多人都需要与微信的api对接. 今天我这里就分享全套的企业微信api接口的代码. 关于微信api,网上已经有很多实现的了. 但是我今天之所以还 ...
- JavaWeb---javabean
1.javabean 1.1--javabean的创建方法 1.2-javabean可以使用跟java一样的方法创建javabean实例 创建一个普通类Users(1.共有类 2.私有属性 3.无参构 ...
- HTML5初步了解
一.使用HTML5的十大原因 你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不好使,或者你就是喜欢写比较严格的XHTML代码.HTML5是w ...
- ###服务(Service)
Start服务开启方式 1) 创建服务 public class MyService extends Service 2) 添加注册表 <service android:name=&qu ...
- LinkedHashSet的概述和使用
LinkedHashSet的特点: 可以保证怎么存就怎么取 package online.msym.set; import java.util.LinkedHashSet; public class ...
- netsh导入导出IPSec配置策略
首先提一句: ipsec规则中,filter action为允许的比拒绝的优先级要高,其它的没有顺序关系,经测试验证! 参考:http://tech.techweb.com.cn/thread-354 ...
- memcached参数解释及常用命令
一.执行 memcached -h 会显示所有的参数项,对应的中文解释如下: -p <num> 监听的TCP端口(默认: 11211) -U <num> 监 ...