资讯专栏INFORMATION COLUMN

npm-参考手册

chnmagnus / 1272人阅读

摘要:索引权限组织成员管理包访问控制用户登录注销所有者管理查看用户信息包仓储仓储查找包发布取消发布弃用我喜欢的包喜欢取消喜欢包本地初始化安装删除清除重复包标签管理更新包的版本信息运行安装链接列出包更新并安装遗漏的包检测过期打包文件清理外来包锁

索引

权限

t/team 组织成员管理

access 包访问控制

adduser/login 用户登录

logout 注销

owner 所有者管理

whoami 查看用户信息

包仓储

s/se/search 仓储查找包

publish 发布

unpublish 取消发布

deprecate 弃用

stars 我喜欢的包

star 喜欢

unstar 取消喜欢

包本地

init 初始化package.json

i/install 安装

un/uninstall 删除

dedupe/ddp 清除重复包

dist-tags 标签管理

version 更新包的版本信息

it/install-test 运行npm install && npm test

ln/link 安装链接

ls/list 列出包

update/up 更新并安装遗漏的包

outdated 检测过期

pack 打包tarball文件

prune 清理外来包

shrinkwrap 锁定依赖包版本

cache 缓存管理

脚本

run/run-script 运行脚本

start 运行start脚本

stop 运行stop脚本

tst/test 运行test脚本

rb/rebuild 重新编译本地包

restart 顺序执行重启相关的一系列脚本

配置

c/config 配置管理

get 列出配置

set 设置配置

查看

root 包根目录

prefix 打印prefix配置

v/view 查看仓储信息

bin 查看bin目录

bugs/issue 浏览器查看bugs

docs/home 浏览器查看帮助文档

repo 浏览器查看仓储

help 查看帮助

help-search 帮助中搜索关键字

其他

completion shell插补

doctor 环境检测

edit 进入包目录并启动编辑器

explore 进入包目录并运行命令

ping 检查仓储是否可用

权限

npm允许通过scope组织私有包,通过team细化权限控制.

npm官方仓储有两种类型的包,普通包和scope包

普通包特征:

只能公有,谁都可以下载使用

仅可以通过所有者(owner)进行权限控制,如果要允许某个用户修改或发布包,必须将该用户添加到包的所有者列表。添加到包所有者列表的用户具备所有的权限.

scope包特征:

包名有两部组成,@scope/name, @后的为scope名,/后的才是具体的包名

可以控制公有和私有

细化的权限控制,比如可以创建团队,并赋予团队对包只读/修改的权限

owner
npm owner add  [<@scope>/] # 将用户添加到包的所有者列表
npm owner rm  [<@scope>/] # 从包的所有这列表中删除用户
npm owner ls [<@scope>/] # 列出包的所有者

成为包的所有者的用户,将能够修改元数据(如标记弃用),发布新版本,添加其他用户到包的所有者列表

t/team
npm team create  # 创建团队
npm team destroy  # 删除团队

npm team add   # 添加用户到团队
npm team rm   # 从团队中移除用户 

npm team ls | 列出团队/成员

npm team edit   用编辑器编辑团队信息
access
npm access public []  # 设置包开放
npm access restricted [] # 设置包私有

npm access grant   [] # 设置团队对包可以只读/允许修改
npm access revoke  [] # 从团队中收回包权限

npm access ls-packages [||]  # 列出用户/域/团队能够访问的包
npm access ls-collaborators [ []] # 列出包的权限信息
npm access edit [] # 用编辑器编辑包权限
adduser/login
npm adduser [--registry=url] [--scope=@orgname] [--always-auth]

提示输入username, password, email,进行登录校验,返回token保存到.npmrc

logout
npm logout [--registry=] [--scope=<@scope>]

请求仓储服务将当前token失效

whoami
npm whoami [--registry ]

列出用户在npmjs.org上的用户名

包仓储 s/se/search
npm search [-l|--long] [--json] [--parseable] [--no-description] [search terms ...]

-l|--long: 展示出全部的DESCRIPTION栏信息

--no-description: 不显示DESCRIPTION栏信息

publish
npm publish [|] [--tag ] [--access ]

--tag: 带上tag信息发布,之后包可以通过npm install @安装

--access: 仅适用于scope包,默认为restricted

unpublish
npm unpublish [<@scope>/][@]

从仓储中删除包,该操作会破坏依赖,不推荐适用,如果是为了鼓励用户适用新版本,可以使用deprecate命令

deprecate
npm deprecate [@] 

标记包弃用,用户在安装时npm会有警告

stars
npm stars []

查看用户喜欢的包

star/unstart
npm star [...]
npm unstar [...]

标记喜欢/取消喜欢标记

包本地 init
npm init [-f|--force|-y|--yes]

初始化package.json, 默认会有很多输入提示,可以通过-f|--force|-y|--yes选项创建默认配置的package.json
已经存在package.json后再次运行npm init不会破坏已有配置,只会变更你真正改动的部分

i/install
npm install (with no args, in package dir) # 读取package.json安装
npm install [<@scope>/] # 默认安装标签为latest
npm install [<@scope>/]@ # 指定标签
npm install [<@scope>/]@ # 指定版本
npm install [<@scope>/]@ # 指定版本范围
npm install   # 通过tarball文件安装
npm install  # 通过tarball文件url链接安装
npm install  # 通过git安装包, url格式为://[[:]@][:][:][/][#]
npm install  通过包所在的文件夹安装

--registry: 从指定仓储中下载安装包

-S/--save: 安装并保存包信息到package.json的dependencies区

-D/--save-dev: 安装并保存包信息到package.json的devDependencies区

--tag: 优先根据标签而不是版本安装包

--dry-run: 报告安装状况而不真的安装

-f/--force: 安装时跳过缓存直接从远程下载

-g/--global: 安装到全局

--link: 链接全局安装的包的本地

--no-shrinkwrap: 安装时忽略shrinkwrap

un/uninstall
npm uninstall [<@scope>/][@]... [-S|--save|-D|--save-dev]

-S/--save: 删除包并移除包在package.json的dependencies区的信息

-D/--save-dev: 删除包并移除包在package.json的devDependencies区的信息

ddp/dedupe
npm dedupe

npm检查包依赖树并清除不要的包

dist-tags
npm dist-tag add @ [] # 添加标签
npm dist-tag rm   # 移除标签
npm dist-tag ls [] # 列出包所包含的标签

常见标签有latest, next, lts等

可以在发布和下载包是带上标签

npm publish # 默认标签latest
npm publish --tag next  # 发布next标签 
npm install npm # 默认标签latest
npm install npm@next  
npm install --tag next

--registry: 发布包到指定仓储

v/version
npm version [ | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]

该命令执行步骤

检查git工作目录

运行preversion脚本, 可以写些触发测试的脚本

结合当前包当前版本信息和patch, minor, major等,生成新版本号,更新package.json中version字段

patch 1.0.0 => 1.0.1

prepatch 1.0.0 => 1.0.1-0

minor 1.0.0 => 1.1.0

preminor 1.0.0 => 1.1.0-0

major 1.0.0 => 2.0.0

premajor 1.0.0 => 2.0.0-0

prerelease 1.0.0-0 => 1.0.0-1

from-git 从git获取版本信息

运行version脚本

git提交并打标签

运行postversion脚本

it/install-test
npm it
npm install-test

相当于运行npm install && npm test

ln/link
npm link  # 在全局node_modules下创建当前文件夹的超链接
npm link [<@scope>/][@] # 将全局安装的包链接到本地node_modules中
ls/list
npm ls [[<@scope>/] ...]

打印依赖树

--json: 已json格式输出

--long: 展示更多信息

--parseable: 显示展平的目录而不是依赖树

--global: 显示全局安装的包的依赖树

--depth: 树层级,从0开始

--prod/production: 仅显示package.json里dependencies包的依赖

--dev: 仅显示package.json里devDependencies包的依赖

up/update
npm update [-g] [...]

更新包到包的semver所允许的最新版本, 并安装遗漏的包

--save: 更新并保存更新到package.json

--dev: 同时更新devDependencies中的包

--depth: 默认情况下仅更新顶层(--depth=0)为0的包,如果想更新所有包,可以指定--depth=9999

outdated
npm outdated [[<@scope>/] ...]

.e.g

Package        Current  Wanted  Latest  Location
ajv              4.8.2  4.11.8   5.0.1  example
async            2.1.2   2.4.0   2.4.0  example
body-parser     1.15.2  1.17.1  1.17.1  example

列表栏

Current: 当前版本

Wanted: smever允许的最高版本

Latest: 仓储中最新版本

Location: 依赖树中的位置

命令选项

--json: 已json格式输出

--long: 展示更多信息

--parseable: 平铺展示

--global: 显示全局安装的包的依赖树

--depth: 树层级,默认0

pack
npm pack [[<@scope>/]...]

从包生成名为-.tgz的tarball,并缓存

prune
npm prune [[<@scope>/]...] [--production]

清理不在package.json生成的依赖树中的包

--production: 移除devDependencies中的包

shrinkwrap
npm shrinkwrap

shrinkwrap用来锁定依赖包的版本

包A的package.json

{
    "name": "A",
    "version": "0.1.0",
    "dependencies": {
        "B": "<0.1.0"
    }
}

包A的依赖树

 A@0.1.0
    `-- B@0.0.1
        `-- C@0.0.1

当B有新版本0.0.2发布, B@0.0.2满足<0.1.0, 所以npm install A安装成功后依赖树

 A@0.1.0
    `-- B@0.0.2
        `-- C@0.0.1

我们希望包A依赖的B版本保持在B@0.0.1, 可以运行

npm shrinkwrap

该命令会生成npm-shrinkwrap.json, 其内容如下

{
  "name": "A",
  "version": "0.1.0",
  "dependencies": {
    "B": {
      "version": "0.0.1",
      "from": "B@^0.0.1",
      "resolved": "https://registry.npmjs.org/B/-/B-0.0.1.tgz",
      "dependencies": {
        "C": {
          "version": "0.0.1",
          "from": "org/C#v0.0.1",
          "resolved": "git://github.com/org/C.git#5c380ae319fc4efe9e7f2d9c78b0faa588fd99b4"
        }
      }
    }
  }
}

运行npm install时如果存在npm-shrinkwrap.json, npm在安装包时会根据shrinkwrap.json锁定依赖包的版本

cache
npm cache add  # 添加到缓存
npm cache add 
npm cache add 
npm cache add @ 

npm cache ls []  # 缓存明细

npm cache clean [] # 清除缓存

缓存路径可以通过npm config get cache获取

脚本

package.json的scripts区可以用来定义自定义脚本

run/run-script
npm run  [-- ...]

运行package.json的scripts中定义的命令

npm run会自动将node_modules/.bin添加到环境变量PATH中。如果本地安装过mocha, 可以这样编写"scripts": {"test": "mocha test/*.js"}而不需要"scripts": {"test": "node_modules/.bin/tap test/*.js"}

start
npm start [-- ]

等同与npm run start [-- ]

stop
npm stop [-- ]

等同与npm run stop [-- ]

tst/test
npm test [-- ]

等同与npm run test [-- ]

rb/rebuild
npm rebuild [[<@scope>/]...]

运行指定包中的build脚本,适用于更新node版本后,重新编译C++包

restart
npm restart [-- ]

循序执行1. prerestart 2. prestop 3. stop 4. poststop 5. restart 6. prestart 7. start 8. poststart 9. postrestart

配置 c/config
npm config set   [-g|--global] # 添加或更新
npm config get  # 获取
npm config delete  # 删除
npm config list #  配置明细
npm config edit # 编辑器编辑

--global: 全局配置

get
npm get  # 同npm config get
set
npm set   [-g|--global] #同npm config set 
查看 root
npm root # 打印本地node_modules目录
npm root -g # 打印全局node_modules目录
prefix
npm prefix # 打印包含package.json最近父目录
npm prefix -g # 打印全局配置prefix的值
view
npm view [<@scope>/][@] [[.]...]

查看仓储信息

npm view compact


#  打印
{ name: "compact",
  description: "A JavaScript compacting middleware for express",
  "dist-tags": { latest: "0.1.2" },
  maintainers: [ "serby " ],
  time: 
   { modified: "2017-03-28T12:49:48.000Z",
     created: "2012-02-06T01:39:50.261Z",
     "0.1.2": "2012-09-04T11:19:17.618Z",
     "0.1.1": "2012-08-29T08:18:12.345Z",
     "0.1.0": "2012-07-09T14:40:56.751Z",
     "0.0.7": "2012-07-04T17:14:01.593Z",
     "0.0.6": "2012-06-29T14:29:04.847Z",
     "0.0.5": "2012-05-23T10:10:15.010Z",
     "0.0.4": "2012-03-31T09:05:40.450Z",
     "0.0.3": "2012-03-23T15:25:18.289Z",
     "0.0.2": "2012-03-21T18:15:24.718Z",
     "0.0.1": "2012-02-06T01:39:50.261Z" },
  users: { serby: true },
  author: "Paul Serby ",
  repository: { type: "git", url: "git://github.com/serby/compact.git" },
  versions: 
   [ "0.0.1",
     "0.0.2",
     "0.0.3",
     "0.0.4",
     "0.0.5",
     "0.0.6",
     "0.0.7",
     "0.1.0",
     "0.1.1",
     "0.1.2" ],
  version: "0.1.2",
  main: "./lib/compact.js",
  scripts: { test: "mocha -r should -R spec" },
  engines: { node: ">=0.8" },
  dependencies: 
   { lodash: "~0.3",
     async: "~0.1",
     "uglify-js": "~1.3",
     mkdirp: "~0.3" },
  devDependencies: { mocha: "*", should: "~1.1", async: "~0.1", asyncjs: "~0.0" },
  optionalDependencies: {},
  dist: 
   { shasum: "66361e17108185bf261d42aff6a91b925e473139",
     size: 7603,
     noattachment: false,
     tarball: "http://registry.npm.taobao.org/compact/download/compact-0.1.2.tgz" },
  directories: {},
  publish_time: 1346757557618 }
npm view compact@0.1.2 dependencies

# 打印
{ lodash: "~0.3",
  async: "~0.1",
  "uglify-js": "~1.3",
  mkdirp: "~0.3" }
bin
npm bin # 打印包含npm bin目录, 通常为node_modules/.bin/
npm prefix -g # 打印全局npm bin目录
bugs/issue
npm bugs []

打开包bug追踪url

npm bugs npm # 浏览器打开https://github.com/npm/npm/issues
docs/home
npm docs [ [ ...]]
npm docs .
npm home [ [ ...]]
npm home .

打开文档url

npm docs npm #浏览器打开https://docs.npmjs.com/
repo
npm repo []

打开git url

npm repo npm #浏览器打开https://github.com/npm/npm
help
npm help  []

打印特定术语或命令的帮助

help-search
npm help-search 

从npm官方markdown文档中搜索词条

其他 completion
npm completion >> ~/.bashrc

npm命令插补脚本

doctor
npm doctor

环境检测

npm能调用node和git命令

registry能够访问

本地和全局node_modules可写

缓存存在且tarball文件健全

edit
npm edit [@]

进入包目录并启动编辑器

explore
npm explore  [-- ]

进入包目录并运行命令

npm explore connect -- ls

# 打印
HISTORY.md  index.js  LICENSE  node_modules  package.json  README.md
ping
npm ping [--registry ]
npm ping --registry https://registry.npmjs.org

检查仓储是否可用

更多文章的目录在这里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82875.html

相关文章

  • 学习笔记 - Sass的安装与使用手册

    摘要:现在将学习笔记整理在这里,供大家参考。的安装的编辑器安装方法有很多,大致能分为两种应用程序和命令行界面。如果已经安装过,也可以使用指令如果提示权限不足,在命令行前加上即可。参考网页编辑器的使用的使用很简单,记住两条指令即可。 最近因为工作需要,自学了Sass。现在将学习笔记整理在这里,供大家参考。 1. Sass的安装 Sass的编辑器安装方法有很多,大致能分为两种:应用程序(appl...

    Jeff 评论0 收藏0
  • 文章3:webpack(3)

    摘要:中的会自动的替换中的,也即最后生成的文件叫做。基础路径后面介绍。都需要依赖模块,我也装啦。我将完整的复制一份,当我在打开的时候,它又让我重新在装,以及,后来我全局安装。 备注:说明(第一次写的文章还没有写好就提交啦,这里我接着上篇文章继续写))上编文章说道安装webpack的顺序不能改变 下面继续: 一:webpack的目录结构 附上本人webpackdemo01的代码 下面介...

    RyanQ 评论0 收藏0
  • webpack入门学习手记(二)

    摘要:例如现在的入门学习手记系列。收到粉丝留言和打赏的喜悦。安装上一篇入门学习手记一,主要是介绍了的核心概念,是整个学习过程的基础知识。新生成的类似如下入门学习手记因为生成的内容过多,我直接省略掉了。 showImg(https://segmentfault.com/img/bVbk5Nd?w=1150&h=599); 本人微信公众号:前端修炼之路,欢迎关注。 最近开始想要维护一个个人的公众...

    Joyven 评论0 收藏0
  • 教你用Vue渐进式搭建聊天室,从JavaScript=>TypeScript

    摘要:前言这个轮子已经有很多人造过了,为了不重复造轮子,我将本项目以三阶段实现大家可以在中的查看纯前端后端前端后端前端希望能给大家一个渐进学习的经验。 前言 Vue+Socket.io这个轮子已经有很多人造过了,为了不重复造轮子,我将本项目以三阶段实现(大家可以在github中的Releases查看): 纯前端(Vuex) 后端+前端(JavaScript) 后端+前端(TypeScrip...

    skinner 评论0 收藏0
  • Slog10_支配vue框架之模版语法 v-bind

    摘要:所以坚决坚持,只看原版的官方文档除非作者就是中文的大家时间是有限的,技术更新是快速的,请迈开脚步一昧的等待,等来的是被淘汰上一篇,讲到了,的模版语法,用来干什么的就是让他实例的数据可以和进行数据绑定。 ArthurSlog SLog-10 Year·1 Guangzhou·China July 15th 2018 showImg(https://segmentfault.com/i...

    DangoSky 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<