一、什么是npmhtml
Npm(Node Package Manager) 是node的包管理工具,每一个包都是一个模块,因此也能够说npm是node的模块管理工具。vue
二、下载html5
淘宝镜像地址:http://npm.taobao.org/node
三、复制文件存放路径jquery
四、配置变量webpack
系统属性 - 高级 - 环境变量 - Pathweb
五、npm安装完成npm
六、安装cnpmjson
npm install -g cnpm --registry=https://registry.npm.taobao.org
babel安装完后查看版本
cnpm -v
成功后会有版本信息返回
七、永久替换为cnpm
npm config set registry https://registry.npm.taobao.org
切换为npm
npm config set registry https://registry.npmjs.org
Cnpm 支持 npm 除了 publish 以外的全部命令,使用时只要在npm前面加上一个c便可,其余不变。
八、更新cnpm或npm
cnpm update -g
九、使用npm/cnpm安装包的两种方式
本地安装
cnpm install(i)
模块名
如cnpm install jquery, install能够缩写为i
本地安装安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块,供项目require()进行使用。
安装模块如不指定版本号 默认会安装最新的版本,
全局安装
cnpm install jquery -g
在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。全局的安装是供命令行使用的。
安装指定版本
npm install sax@0.1.1
若是想要安装指定版本,能够在库名称后加 @版本号:
卸载包
npm uninstall moudleName
【须要一个package.json文件】
更新包
npm update moudleName
【须要一个package.json文件】
其余命令
查看包地址
npm view moduleName repository.url
查看帮助信息
npm help
发布一个npm包的时候,须要检验某个包名是否已存在
npm search packageName
十、Package.json
package.json是一个描述文件,描述了你项目中各个包之间的关系
一个 package.json 文件能够有如下几点做用:
做为一个描述文件,描述了你的项目依赖哪些包
容许咱们使用 “语义化版本规则”(后面介绍)指明你项目依赖包的版本
让你的构建更好地与其余开发者分享,便于重复使用
package.json如何建立
使用 npm init 便可在当前目录建立一个 package.json 文件:
输入 npm init 后会弹出一堆问题,咱们能够输入对应内容,也可使用默认值。在回答一堆问题后输入 yes就会生成 package.json 文件。
若是嫌回答这一大堆问题麻烦,能够直接输入 npm init --yes 跳过回答问题步骤,直接生成默认值的 package.json 文件
package.json内容
package.json 文件至少要有两部份内容:
“name”
· 所有小写,没有空格,可使用下划线或者横线
“version”
· x.x.x 的格式
· 符合“语义化版本规则”
好比:
{ "name":"shixinzhang-demo-package"},"version:"1.0.0"
description:描述信息,有助于搜索
main: 入口文件,通常都是 index.js
scripts:支持的脚本,默认是一个空的 test
keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
author:做者信息
license:默认是 MIT/ISC
bugs:当前项目的一些错误信息,若是有的话
咱们能够为 init 命令设置一些默认值,好比:
npm set init.author.email "shixinzhang2016@gmail.com"
npm set init.author.name "shixinzhang"
npm set init.license "MIT"
注意: 若是 package.json 中没有 description 信息,npm 使用项目中的 README.md 的第一行做为描述信息。这个描述信息有助于别人搜索你的项目,所以建议好好写 description 信息。
十一、指定依赖的包
咱们须要在 package.json 文件中指定项目依赖的包,这样别人在拿到这个项目时才可使用 npm install 下载。
包有两种依赖方式:
dependencies:在生产环境中须要用到的依赖
devDependencies:在开发、测试环境中用到的依赖
举个例子:
{
"name": "my-weex-demo",
"version": "1.0.0",
"description": "a weex project",
"main": "index.js",
"scripts": {
"build": "weex-builder src dist",
"build_plugin": "webpack --config ./tools/webpack.config.plugin.js --color",
"dev": "weex-builder src dist -w",
"serve": "serve -p 8080"
},
"keywords": [
"weex"
],
"author": "fkysly@gmail.com",
"license": "MIT",
"devDependencies": {
"babel-core": "^6.14.0",
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.18.0",
"vue-loader": "^10.0.2",
"eslint": "^3.5.0",
"serve": "^1.4.0",
"webpack": "^1.13.2",
"weex-loader": "^0.3.3",
"weex-builder": "^0.2.6"
},
"dependencies": {
"weex-html5": "^0.3.2",
"weex-components": "*"
}}
十二、语义化版本规则
https://docs.npmjs.com/getting-started/semantic-versioning
dependencies 的内容,以 "weex-html5": "^0.3.2" 为例,咱们知道 key 是依赖的包名称,value 是这个包的版本。那版本前面的 ^ 或者版本直接是一个 * 是什么意思呢?
这就是 npm 的 “Semantic versioning”,简称”Semver”,中文含义即“语义化版本规则”。
在安卓开发中咱们有过这样的经验:有时候依赖的包升级后大改版,以前提供的接口不见了,这对使用者的项目可能形成极大的影响。
所以咱们在声明对某个包的依赖时须要指明是否容许 update 到新版本,什么状况下容许更新。
这就须要先了解 npm 包提供者应该注意的版本号规范。
若是一个项目打算与别人分享,应该从 1.0.0 版本开始。之后要升级版本应该遵循如下标准:
补丁版本:解决了 Bug 或者一些较小的更改,增长最后一位数字,好比 1.0.1
小版本:增长了新特性,同时不会影响以前的版本,增长中间一位数字,好比 1.1.0
大版本:大改版,没法兼容以前的,增长第一位数字,好比 2.0.0
了解了提供者的版本规范后, npm 包使用者就能够针对本身的须要填写依赖包的版本规则。
小结一下:总共三种版本变化类型,接受依赖包哪一种类型的更新,就把版本号准确写到前一位。
十二、根据package.json安装依赖包
npm install 默认会安装 package.json 中 dependencies 和 devDependencies 里的全部模块。
若是想只安装 dependencies 中的内容,可使用 --production 字段:
npm install --production
安装参数 --save(-S) 和 --save-dev(-D)
npm install <package_name> --save
使用下载好的包
下载后 node_modules 文件夹中有要使用的包,咱们就可使用其中的代码了。
好比在 Node.js 项目中,咱们能够用 require(XXX) 引入它。
1三、如何建立本身的包并进行发布
第一次发布
npm adduser
提示输入帐号,密码和邮箱,而后将提示建立成功
非第一次发布
npm login
而后输入你建立的帐号和密码,和邮箱,登录
【注意】npm adduser成功的时候默认你已经登录了,因此不须要再接着npm login
1四、如何撤销本身发布的包
这里要说一点,取消发布包可能并不像你想象得那么容易,这种操做是受到诸多限制的,撤销发布的包被认为是一种很差的行为
(试想一下你撤销了发布的包[假设它已经在社区内有了必定程度的影响],这对那些已经深度使用并依赖你发布的包的团队是件多么崩溃的事情!)
示例:
我如今将以前发布的包penghuwanapp撤销掉:输入npm unpublish 包名
【吐槽】注意看红框框住的字,你就知道npm官方撤销已发布的包对这种行为的态度了....
【注意】若是报权限方面的错,加上--force
可参考地址:http://www.javashuo.com/article/p-blhgnlaa-cg.html
1根据规范,只有在发包的24小时内才容许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours)
2即便你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,由于这二者构成的惟一标识已经被“占用”了)
例如我在撤销包后尝试再发布同一名称+同一版本的包:
报错,并建议我修改包的版本
npm unpublish的推荐替代命令:npm deprecate <pkg>[@<version>] <message>
使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候获得警告
例如:npm deprecate penghuwanapp '这个包我已经再也不维护了哟~'
1四、npm更新发布后的包
事实上npm更新包和发布包的命令是同样的,都是npm publish,不一样之处在于,你须要修改包的版本
因此步骤是:
1.修改包的版本(package.json里的version字段)
2.npm publish
关于修改版本的细节请看下面:
1五、查看npm的配置
npm config list //查看基本配置
npm config list -l //查看全部配置
npm本地安装与全局安装有什么区别?
npm install grunt
// 本地安装,则是将模块下载到当前命令行所在目录。 npm install -g grunt
//全局安装,模块将被下载安装到【全局目录】中;
npm如何获取全局安装的默认目录?
npm config get prefix
npm如何设置全局安装的默认目录?
npm config set prefix “directory”