NPM,Node Package Manager,是 JavaScript
编程语言的软件包管理器。 任何使用 Javascript
的开发人员都使用过这个出色的 CLI
工具来为他们的项目安装依赖项。
初始化
可以运行 npm init
命令来初始化包,但是它会询问关于包、作者等信息。
另一种方法可以使用 npm init -y
命令自动生成我们的 package.json
,并使用 npm config
命令设置一些默认的初始化配置。
npm config set init-author-name "名字"
npm config set init-author-email "邮箱"
npm init -y
安装包(不同源)
NPM CLI 还允许从其他来源(例如 Bit
,tarball
文件,GitHub
,Bitbucket
和 gist
)安装 javascript
包。
# Install a component from Bit (set Bit as a scoped registry)
npm config set @bit:registry https://node.bit.dev
npm i @bit/username.collection.component
# Install from tarball stored locally
npm i ./local-tarball-package.tgz
# Install tarball package from internet
npm i https://abc/xyz/package.tar.gz
# Install from github repo
npm i githubuser/reponame
# Install from bitbucket repo
npm i bitbucket:bitbucketuser/reponame
# Install from gist
npm i gist:gistID
例如:
从Bit安装按钮组件
首先,将 Bit 配置为scope
(范围包)
npm config set @bit:registry https://node.bit.dev
然后找到 button
组件,复制安装命令,使用NPM进行安装
npm i @bit/团队名.组件集名.组件名
从npm企业私库安装 Icon 组件
使用 scope
和企业私库关联起来。这样你就可以同时使用 npm 公共仓库和一些其他的私有仓库中的模块:
npm config set @xscope:registry https://xxx.com/npm/
多源安装:用户无感知
每次用户使用私有库的时候都需要切换 npm 镜像路径,利用 npm preinstall
的钩子,项目的 package.json
里增加 preinstall
要执行的脚本,这样合作方可以无感知的安装:
// 在执行 npm install 命令前,npm 会自动执行 npm preinstall 钩子
"scripts": {
"preinstall": "node ./bin/preinstall.js"
}
配置 ./bin/preinstall.js:
const { exec } = require('child_process');
exec('npm config get registry', function(error, stdout, stderr) {
if (!stdout.toString().match(/registry\.x\.com/)) {
exec(' npm config set @xscope:registry https://xxx.com/npm/');
}
});
删除重复的包
我们可以通过运行 npm dedupe
命令删除重复的依赖项。 它通过删除重复的程序包并在多个从属程序包之间有效地共享公共依赖项,简化了总体结构。 这样就形成了一个平面且具有重复数据删除功能的树。
npm dedupe or npm ddp
扫描应用程序中的漏洞
我们可以运行 npm audit
命令来扫描我们的项目中任何依赖项中的任何漏洞。 它会以表格格式生成漂亮的输出并显示(我们也可以用JSON获取输出),如果其它包是多级/多依赖项,则其它包都依赖于此包。
npm audit fix
会自动安装所有漏洞包的补丁版本(如果可用)
npm audit fix
检查环境
我们可以使用 npm doctor
命令在我们的环境中运行多个检查,比如,我们的npm CLI是否有足够的权限来安装javascript包,它是否能够连接到npm注册表。它还检查node和npm版本,验证缓存是否有损坏的软件包。
npm doctor
检查包是否过时
我们可以使用 npm outdated
命令来检查所有过时的npm软件包。 它还显示了应为过时的软件包安装的最新版本。
npm outdated --long or npm outdated -l