看了就会的 Node.js 常用三方工具包
<h2 data-tool="mdnice编辑器">文件系统</h2><p data-tool="mdnice编辑器">这些工具包的功能就是在 Node 本身的 <code>fs</code> 模块基础上提供更加方便的文件系统操作 API。</p>
<h3 data-tool="mdnice编辑器">glob</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>glob</code> 是一种文件匹配模式,起源于 <code>Unix</code>,比如我们常见 <code>*.js</code> 匹配所有 <code>js</code> 文件就是使用了 <code>glob</code> 模式。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/isaacs/node-glob<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器"><code>glob(pattern, , callback)</code>,<code>glob</code> 方法接收三个参数:</p>
<ul class="list-paddingleft-2" data-tool="mdnice编辑器">
<li><strong>pattern</strong>: 匹配规则字符串</li>
<li><strong>options</strong>: 配置项(可选)</li>
<li><strong>callback</strong>: 回调函数 <code>(error, files) => {}</code></li>
<ul class="list-paddingleft-2">
<li><strong>error</strong>: 错误信息,如果不存在则为成功</li>
<li><strong>matches</strong>: 匹配文件数组</li>
</ul>
</ul>
<p data-tool="mdnice编辑器">其中 <code>options</code> 是可选项,可以不传,直接将回调函数放在第二个参数。</p>
<p data-tool="mdnice编辑器">如果不想使用回调的方式,可以使用同步方法 <code>glob.sync(pattern, options)</code>,用法一致,返回值即是匹配文件数组。</p>
<h4 data-tool="mdnice编辑器">举例</h4>
<p data-tool="mdnice编辑器">当前文件目录如下:</p>
<pre data-tool="mdnice编辑器"><code>.<br>├── a<br>│ ├── a.css<br>│ ├── a.js<br> ├── .eslintrc.js<br>│ └── b<br>│ ├── b.css<br>│ └── b.js<br>├── index.js<br>├── package.json<br></code></pre>
<p data-tool="mdnice编辑器">index.js 代码如下:</p>
<div class="cnblogs_code">
<pre>const glob = require("glob"<span style="color: rgba(0, 0, 0, 1)">)
glob(</span>"a/**/*.js", (error, matches) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">error) {
console.log(matches);
}
});
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
const files </span>= glob.sync("a/**/*.js"<span style="color: rgba(0, 0, 0, 1)">);
console.log(files);
} </span><span style="color: rgba(0, 0, 255, 1)">catch</span> (e) {}</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">输出如下:</p>
<div class="cnblogs_code">
<pre>[ 'a/a.js', 'a/b/b.js' ]</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">是不是发现 <code>.eslintrc.js</code> 文件并没有被匹配到。默认情况下,<code>glob</code> 不会匹配以 <code>.</code> 开头的文件,需要我们在配置项中打开:</p>
<div class="cnblogs_code">
<pre>const glob = require("glob"<span style="color: rgba(0, 0, 0, 1)">)
glob(</span>"a/**/*.js", { dot: <span style="color: rgba(0, 0, 255, 1)">true</span> }, (error, matches) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">error) {
console.log(matches);
}
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> [ 'a/.eslintrc.js', 'a/a.js', 'a/b/b.js' ]</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">globby</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>globby</code> 是增强型的 <code>glob</code>,提供了 <code>Promise</code> 的封装。最终要的是它支持<strong>多模式匹配</strong>,相比于 <code>glob</code> 只能传入一个 <code>pattern</code> 字符串,<code>globby</code> 支持传入一个 <code>pattern</code> 数组。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/sindresorhus/globby<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器"><code>globby(patterns, options?)</code>,<code>globby</code> 接收两个参数,返回 <code>Promise</code>:</p>
<ul class="list-paddingleft-2" data-tool="mdnice编辑器">
<li><strong>patterns</strong>: 匹配规则数组</li>
<li><strong>options</strong>: 配置项</li>
</ul>
<h4 data-tool="mdnice编辑器">举例</h4>
<p data-tool="mdnice编辑器">当前文件目录如下:</p>
<pre data-tool="mdnice编辑器"><code>.<br>├── a<br>│ ├── a.css<br>│ ├── a.js<br> ├── .eslintrc.js<br>│ └── b<br>│ ├── b.css<br>│ └── b.js<br>├── index.js<br>├── package.json<br></code></pre>
<p data-tool="mdnice编辑器">index.js 代码如下:</p>
<div class="cnblogs_code">
<pre>const globby = require('globby'<span style="color: rgba(0, 0, 0, 1)">);
(async () </span>=><span style="color: rgba(0, 0, 0, 1)"> {
const files </span>= await globby(['a/**/*.js', 'a/**/*.css'], { dot: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)"> });
console.log(files);
})();</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">输出如下:</p>
<div class="cnblogs_code">
<pre>[ 'a/.eslintrc.js', 'a/a.js', 'a/b/b.js', 'a/a.css', 'a/b/b.css' ]</pre>
</div>
<h3 data-tool="mdnice编辑器">fs-extra</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">Node 内置了 <code>fs</code> 模块供开发者和文件系统交互,但是用过的同学都知道,它的能力还是挺有限的。所以,在 <code>fs</code> 的基础上,社区提供了 <code>fs-extra</code> 工具包增强文件系统交互,并且提供了 <code>Promise</code> 的调用方式。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/jprichardson/node-fs-extra<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">举例</h4>
<p data-tool="mdnice编辑器">这里介绍几个最常见的:</p>
<div class="cnblogs_code">
<pre>const fse = require('fs-extra'<span style="color: rgba(0, 0, 0, 1)">);
(async () </span>=><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 确认目录是否存在,如果不存在会创建目录</span>
await fse.ensureDir('./a'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 复制文件</span>
await fse.copy('./a/a.js', './a/aa.js'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 读 JSON 文件</span>
const aJSON = await fse.readJSON('./a/a.json'<span style="color: rgba(0, 0, 0, 1)">);
console.log(</span><span style="color: rgba(0, 0, 255, 1)">typeof</span><span style="color: rgba(0, 0, 0, 1)"> aJSON, aJSON);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 写 JSON 文件</span>
await fse.writeJSON('./a/aa.json', { a: 1 }, { spaces: 2<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 写 JSON 文件,如果目录不存在会创建</span>
await fse.outputJson('./c/aa.json', { a: 1 }, { spaces: 2<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 删文件</span>
await fse.remove('./a/aa.json'<span style="color: rgba(0, 0, 0, 1)">);
})();</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h2 data-tool="mdnice编辑器">执行命令</h2>
<p data-tool="mdnice编辑器">这几个 NPM 包的功能主要就是会用于执行一些系统命令,比如 <code>npm install</code>、<code>git clone</code> 等等。</p>
<h3 data-tool="mdnice编辑器">shelljs</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">这个包的作用就和它的名字一样,用 <code>js</code> 来实现 <code>shell</code> 命令。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/shelljs/shelljs<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器">可以通过 <code>shelljs</code> 提供的 <code>exec</code> 命令同步地执行任意的 <code>shell</code> 命令,返回值中的 <code>code</code> 标识是否成功执行,比如:</p>
<div class="cnblogs_code">
<pre>const shell = require('shelljs'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (shell.exec('git init .').code === 0<span style="color: rgba(0, 0, 0, 1)">) {
console.log(</span>'Git 初始化成功'<span style="color: rgba(0, 0, 0, 1)">);
}</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">除了 <code>exec</code> 之外,<code>shelljs</code> 也提供了一些常用 <code>shell</code> 命令的包装,比如 <code>which</code>、<code>echo</code> 等,比如:</p>
<div class="cnblogs_code">
<pre>const shell = require('shelljs'<span style="color: rgba(0, 0, 0, 1)">);
shell.echo(</span>'Hello Shelljs');</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h4 data-tool="mdnice编辑器">举例</h4>
<p data-tool="mdnice编辑器">来看两个 <code>shelljs</code> 的常见用法。</p>
<div class="cnblogs_code">
<pre>const shell = require('shelljs'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 判断是否有相关开发环境</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> hasGitNpm() {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!shell.which('git'<span style="color: rgba(0, 0, 0, 1)">)) {
console.log(</span>'Sorry, this script requires git'<span style="color: rgba(0, 0, 0, 1)">);
shell.exit(</span>1<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!shell.which('npm'<span style="color: rgba(0, 0, 0, 1)">)) {
console.log(</span>'Sorry, this script requires npm'<span style="color: rgba(0, 0, 0, 1)">);
shell.exit(</span>1<span style="color: rgba(0, 0, 0, 1)">);
}
}
hasGitNpm();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 安装 npm 包</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> installPkg(pkg, type) {
const npm </span>= shell.which('npm'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">npm) {
console.log(</span>'请先安装 npm'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
}
const { code } </span>=<span style="color: rgba(0, 0, 0, 1)"> shell.exec(
`${npm.stdout} install ${pkg} ${type </span>|| '--save'<span style="color: rgba(0, 0, 0, 1)">}`
);
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (code) {
console.log(`安装 ${pkg} 失败,请手动安装`);
}
}
installPkg(</span>'lodash');</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">cross-spawn</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">在 Node 中,可以通过 <code>child_process</code> 模块来创建子进程,并且通过 <code>child_process.spawn</code> 方法来使用指定的命令行参数创建新进程,执行完之后返回执行结果。而 <code>cross-spawn</code> 包就是提供了关于 <code>spawn</code> 函数的跨平台写法,不用开发者处理跨平台的逻辑。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/moxystudio/node-cross-spawn<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器">用法和 <code>child_process.spawn(command[, args][, options])</code> 保持一致:</p>
<div class="cnblogs_code">
<pre>const spawn = require('cross-spawn'<span style="color: rgba(0, 0, 0, 1)">);
const child </span>= spawn('npm', ['install'], { stdio: 'inherit' });</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h4 data-tool="mdnice编辑器">举例</h4>
<p data-tool="mdnice编辑器">看一个比较常见的 <code>cross-spawn</code> 用法:</p>
<div class="cnblogs_code">
<pre>const spawn = require('cross-spawn'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 安装全部依赖</span>
spawn.sync('npm', ['install'], { stdio: 'inherit'<span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 安装指定依赖</span>
spawn.sync('npm', ['install', 'lodash', '--save'], { stdio: 'inherit' });</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">rimraf</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">相当于在命令行中执行了 <code>rm -rf</code>,咳咳,是不是有点危险啊。</p>
<p data-tool="mdnice编辑器">GitHub 地址:hhttps://github.com/isaacs/rimraf<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器"><code>rimraf(f, , callback)</code>,<code>rimraf</code> 方法接收三个参数:</p>
<ul class="list-paddingleft-2" data-tool="mdnice编辑器">
<li><strong>f</strong>: glob 匹配规则</li>
<li><strong>opts</strong>: 配置项,可选</li>
<li><strong>callback</strong>: 回调函数</li>
</ul>
<p data-tool="mdnice编辑器">当然,也可以使用 <code>rimraf.sync</code> 同步方法。</p>
<div class="cnblogs_code">
<pre>const rimraf = require('rimraf'<span style="color: rgba(0, 0, 0, 1)">);
rimraf(</span>'./a/aa.js', error =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">error) {
console.log(</span>'删除成功'<span style="color: rgba(0, 0, 0, 1)">);
}
});</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">除了在 Node 中用,在 <code>package.json</code> 的 <code>scripts</code> 中也会经常看到这个工具,比如:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
</span>"scripts"<span style="color: rgba(0, 0, 0, 1)">: {
</span>"build": "rimraf build && npm run build"<span style="color: rgba(0, 0, 0, 1)">
}
}</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h2 data-tool="mdnice编辑器">网络请求</h2>
<p data-tool="mdnice编辑器">这里主要列了两个目前正在用的网络请求的包。</p>
<h3 data-tool="mdnice编辑器">node-fetch</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">相当于在 Node 上使用 Fetch。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/node-fetch/node-fetch<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器">就举个简单例子,其它的看文档就好了:</p>
<div class="cnblogs_code">
<pre>const fetch = require('node-fetch'<span style="color: rgba(0, 0, 0, 1)">);
const response </span>= await fetch('https://api.github.com/users/github'<span style="color: rgba(0, 0, 0, 1)">);
const data </span>=<span style="color: rgba(0, 0, 0, 1)"> await response.json();
console.log(data);</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">axios</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>axios</code> 就不用介绍了,写前端的同学都知道,用起来也很方便。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/axios/axios<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<div class="cnblogs_code">
<pre>const axios = require('axios'<span style="color: rgba(0, 0, 0, 1)">);
axios({
method: </span>'post'<span style="color: rgba(0, 0, 0, 1)">,
url: </span>'/user/12345'<span style="color: rgba(0, 0, 0, 1)">,
data: {
firstName: </span>'Fred'<span style="color: rgba(0, 0, 0, 1)">,
lastName: </span>'Flintstone'<span style="color: rgba(0, 0, 0, 1)">
}
});</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h2 data-tool="mdnice编辑器">小工具</h2>
<p data-tool="mdnice编辑器">这里就列一堆用得上的小工具吧,按需用。</p>
<h3 data-tool="mdnice编辑器">open</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>open</code> 包可以让你在代码中打开网页、图片等等。比如你经常 <code>npm start</code> 启动项目的时候,是不是会自动唤起浏览器打开一个 <code>localhost</code> 的页面,就是通过 <code>open</code> 包实现的。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/sindresorhus/open<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<div class="cnblogs_code">
<pre>const open = require('open'<span style="color: rgba(0, 0, 0, 1)">);
await open(</span>'http://localhost:8080');</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">http-server</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>http-server</code> 包一般安装在全局使用,可以在本地任意目录 0 配置启动一个 HTTP 服务,一般在本地开发和测试的时候会经常用到。比如,使用 <code>npm build</code> 打包构建出构建产物之后,可以本地执行 <code>http-server build</code> 启动一个服务。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/http-party/http-server<sup><br></sup></p>
<h3 data-tool="mdnice编辑器">path-to-regexp</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">顾名思义,<code>path-to-regexp</code> 是将指定 <code>path</code> 转换成一个正则表达式的工具,一般在接口路径匹配的时候会用到。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/pillarjs/path-to-regexp<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器">比如我们的 API 的路径有很多,其中有一部分是对外开放的 API,它的路径是 <code>/openapi/*</code> 的,可以这样匹配:</p>
<div class="cnblogs_code">
<pre>const { pathToRegexp } = require('path-to-regexp'<span style="color: rgba(0, 0, 0, 1)">);
console.log(pathToRegexp(</span>'/openapi/:key'));</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">输出结果为:</p>
<div class="cnblogs_code">
<pre>/^\/openapi(?:\/([^\/#\?]+?))[\/#\?]?$/i</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h3 data-tool="mdnice编辑器">url-join</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器">用 <code>url-join</code> 包可以非常方便地操作一个 url,拼接任意参数。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/jfromaniello/url-join<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<p data-tool="mdnice编辑器">假设我们需要动态地拼接参数,可以这样:</p>
<div class="cnblogs_code">
<pre>const urlJoin = require('url-join'<span style="color: rgba(0, 0, 0, 1)">);
console.log(urlJoin(</span>'http://www.google.com', 'a', '/b/cd', '?foo=123'));</pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<p data-tool="mdnice编辑器">输出结果为:</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.google.com/a/b/cd?foo=123</span></pre>
</div>
<h3 data-tool="mdnice编辑器">semver</h3>
<h4 data-tool="mdnice编辑器">一句话介绍</h4>
<p data-tool="mdnice编辑器"><code>NPM</code> 的 <code>semver</code> 规范相关的工具包,判断版本啥的。</p>
<p data-tool="mdnice编辑器">GitHub 地址:https://github.com/npm/node-semver<sup><br></sup></p>
<h4 data-tool="mdnice编辑器">使用方法</h4>
<div class="cnblogs_code">
<pre>const semver = require('semver'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 判断是否符合规范</span>
semver.valid('1.2.3') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> '1.2.3'</span>
semver.valid('a.b.c') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> null</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 判断 a 版本是否比 b 版本高</span>
semver.gt('1.2.3', '9.8.7') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> false</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 判断 a 版本是否比 b 版本低</span>
semver.lt('1.2.3', '9.8.7') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> true</span><span style="color: rgba(0, 128, 0, 1)">
//</span><span style="color: rgba(0, 128, 0, 1)"> 判断符合某个版本范围的最低版本</span>
semver.minVersion('>=1.0.0') <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> '1.0.0'</span></pre>
</div>
<pre data-tool="mdnice编辑器"><code> </code></pre>
<h2 data-tool="mdnice编辑器">CLI 相关</h2>
<p data-tool="mdnice编辑器">见之前的文章:实现 CLI 常用工具包 - 终端交互相关(问卷、彩色文字、loading、进度条)</p>
<h2 data-tool="mdnice编辑器">总结</h2>
<p data-tool="mdnice编辑器">这篇文章到这里就结束了,本文整理了一些在 Node 开发时常用的 <code>NPM</code> 包,希望能够帮到你。但是社区之大,功能强大的 <code>NPM</code> 包远不止这些,可以自行探索。</p>
<p data-tool="mdnice编辑器">需要使用某个功能的 <code>NPM</code> 包时,可以在 <code>NPM</code> 官网或者 <code>GitHub</code> 上搜索:</p><br><br>
来源:https://www.cnblogs.com/cangqinglang/p/14761536.html
頁:
[1]