2019-08-01

个人对npm的学习

1:快速介绍

npm全称是 Node Package Manager 包管理工具。

NPM 的实现思路:

1、有一个远程代码仓库(registry),在里面存放所有需要被共享的js代码,每个js文件都有自己唯一标识。

2、用户想使用某个js的时候,只需引用对应的标识,js文件会自动下载下来。

npm 由三个独立的部分组成:

1:网站

2:注册表(registry)

3:命令行工具 (CLI)

2:对npm的安装以及部分操作

管理npm中的本地安装的包的最好的方法是创建一个package.json文件

注:package。json文件一定要有

"name":    全为小写字母 , 一个单词,没有空格(可包含允许的标记与添加)

"version":在x.x.x的形式下去写

例子:

{ "name": "my-awesome-package",

"version": "1.0.0"}

(2):建立package.json文件的方法

(1):运行一个CLI questionnaire

像这样:

> npm init

(2)弄个预设的package. json文件

为了去弄个预设的package.json,需加上-yes或-y的标志来运行npm

像这样:> npm init --yes

> npm init --yes

例:

Wrote to /home/ag_dubs/my_package/package.json:

{

  "name": "my_package",

  "description": "",

  "version": "1.0.0",

  "main": "index.js",

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "repository": {

    "type": "git",

    "url": "https://github.com/ashleygwilliams/my_package.git"

  },

  "keywords": [],

  "author": "",

  "license": "ISC",

  "bugs": {

    "url": "https://github.com/ashleygwilliams/my_package/issues"

  },

  "homepage": "https://github.com/ashleygwilliams/my_package"

}

3:部分命令行介绍

1:access

1:简述:

access命令行用于在个人的安装包中设置一个access控制。

2:下列指令是access的用法及作用

(1)public/restricted:设置一个可公共访问(public)或是有访问限制(restricted)的包

npm access public [<package>]

npm access restricted [<package>]

(2):grant/revoke:增加(grant)或除去(revoke)使用者和团队读写或者只读途径的功能

npm access grant <read-only|read-write> <scope:team> [<package>]

npm access revoke <scope:team> [<package>]

(3):2fa-required / 2fa-not-required:为发布这个包的使用者配置双因素认证(2fa-required)/否(2fa-not-required)

npm access 2fa-required [<package>]

npm access 2fa-not-required [<package>]

ls-packages:展示所有使用者或团队能使用的包,除了只读的公共包。

npm access ls-packages [<user>|<scope>|<scope:team>]

ls-collaborators: 为一个包展示所有的访问权限,只会向你展示你所拥有的包的访问允许。

npm access ls-collaborators [<package> [<user>]]

edit:为一个包设置一次访问权利

npm access edit [<package>]

2:npm-adduser

用处:添加注册表用户帐户

配置

registry:

默认值:https://registry.npmjs.org/

npm包注册表的基URL。如果还指定了作用域,则此注册表将仅用于具有该作用域的包。作用域默认为当前所在项目目录的作用域(如果有)

scope:

默认值: none

如果指定,则给定的用户和登录凭据将与指定的作用域关联。参见NPM-范围。您可以同时使用这两种方法,例如

npm adduser --registry=http://myregistry.example.com --scope=@myco

这将为给定的作用域和登录设置一个注册表,或者同时为该注册表创建一个用户。

always-auth:

默认值:false

如果指定,则保存配置,指示对给定注册表的所有请求都应包含授权信息。对专用寄存器有用。可以与--registry和/或--scope一起使用,例如

npm adduser --registry=http://private-registry.example.com --always-auth

auth-type:

默认值:    'legacy'

种类:        'legacy', 'sso', 'saml', 'oauth'

与adduser/login一起使用的身份验证策略。除了传统的NPM中的经典用户名/密码输入之外,一些NPM注册中心(例如,NPME)可能还支持其他认证策略。

3:npm-audit

简介:运行安全审核

(1)扫描您的项目是否存在漏洞,并自动为易受攻击的依赖项安装任何兼容的更新:

$ npm audit fix

(2)运行audit fix而不修改node_模块,但仍更新pkglock:

$ npm audit fix --package-lock-only

(3)跳过更新devdependencies:

$ npm audit fix --only=prod

(4)让audit fix将semver主要更新安装到顶层依赖项,而不仅仅是semver兼容的依赖项:

$ npm audit fix --force

(5)进行一次试运行,了解审计修复将要做什么,并以JSON格式输出安装信息:

$ npm audit fix --dry-run --json

(6)扫描您的项目是否存在漏洞,只显示详细信息,而不修复任何问题:

$ npm audit

(7)获取json格式的详细审计报告:

$ npm audit --json

(8)以纯文本结果获取详细的审计报告,用制表符分隔,以便将来在脚本或命令行后处理中重用,例如,选择一些打印的列:

$ npm audit --parseable

要解析列,您可以使用awk,并只打印其中的一些列:

$ npm audit --parseable | awk -F $'\t' '{print $1,$4}'

4:npm-bin

简述:显示 npm 的 bin 文件夹的路径

npm bin [-g|--global]

描述:列出 npm 安装可执行文件的文件夹。

5:npm-bugs

简述:Web浏览器中的程序包错误

这个命令尝试猜测包的bug跟踪器URL的可能位置,然后尝试使用--browser-config参数打开它。如果没有提供包名称,它将在当前文件夹中搜索package.json并使用name属性。

npm bugs [<pkgname>]

aliases: issues

6:npm-build

简述:构建一个包

用法:

npm build [<package-folder>]

(<package-folder>: 在其根目录中包含一个 package.json 文件的文件夹。)

注:它通常在安装过程中被调用,但是如果你需要直接运行它,请运行:

npm run-script build:

7:npm-bundle

意思:删除

注:现在直接用 npm install 命令替代 npm bundle 命令。

8:npm-cache

简述:操作程序包缓存

用法:

npm cache add <tarball file>

npm cache add <folder>

npm cache add <tarball url>

npm cache add <name>@<version>

npm cache clean [<path>]

aliases: npm cache clear, npm cache rm

npm cache verify

作用

1:npm cache add

添加:将指定的包添加到本地缓存。此命令主要用于NPM内部,但它可以提供一种将数据显式添加到本地安装缓存的方法。

2:npm cache clean 

清除:从缓存文件夹中删除所有数据。

3:npm cache verify

验证:验证缓存文件夹的内容,垃圾收集任何不需要的数据,并验证缓存索引和所有缓存数据的完整性。

9:npm-ci

简述:在一个空白记录中安装一个项目。

例子如下:

1:确保您有软件包锁和最新安装:

$ cd ./my/npm/project

$ npm install

added 154 packages in 10s

$ ls | grep package-lock

2:在这个项目中运行ci

$ npm ci

added 154 packages in 5s

3:配置Travis去建立ci去代替stall

# .travis.yml

install:

- npm ci

# keep the npm cache around to speed up installs

cache:

  directories:

  - "$HOME/.npm":

10:npm-completion

简述:新产品管理表完成

概要

source <(npm completion)

在所有NPM命令中启用制表符完成;将其添加到您的~/.bashrc或~/.zshrc将使完成操作在任何地方都可用。

npm completion >> ~/.bashrc

npm completion >> ~/.zshrc

11:npm-config

简述:管理NPM配置文件

在此,还有很多的命令行就不一一列举了。

4:部分注意事项

(1):正确的代码形式

错的:

function ()

{

对的:

function () {

如果块需要换行到下一行,请使用大括号。如果没有,不要使用它。

错的:

if (foo) { bar() }

while (foo)

  bar()

对的:

if (foo) bar()

while (foo) {

  bar()

}

注:分号只在四种情况下使用:

1:for(;;)循环。它们实际上是必需的。

2:空循环如:while(something);(但最好有一个很好的理由这样做。)

3:case 'foo': doSomething(); break

4:在前导的前面(或在行首)。这将分别防止将表达式解释为函数调用或属性访问。

3:如果有一个用逗号分隔的事物列表,并且它跨多行包装,则将逗号放在下一行的开头,直接放在列表开头的标记下面。将列表中的最后一个标记单独放在一行上。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容