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