https://github.com/cq0122/without-cdn
Web 项目使用 CDN 资源能加速项目的访问,但是有时候项目部署在内网或者我们选用的 CDN 不稳定,就会出现项目部署后无法正常运行的尴尬情况。
把 CDN 资源全部放在本地,项目中就会多出一些额外的目录和文件(这些文件万年不需要修改,一不小心点开还可能被编辑器格式化了),而且还需要提交进代码库,当需要对引用 CDN 资源升级或者更换版本时,又需要重复去下载对应的资源提交到项目中,还需要移除之前的版本文件。
如果你开发的过程中也碰到过上面的小尴尬,建议你试试 without-cdn,说不定能带给你一点小惊喜。
安装 without-cdn
建议全局安装,可以直接在命令行中使用
$npm install -g without-cdn
优势&工作原理
优势:
开发过程中可以使用 CDN 资源,CDN 资源不用下载到本地,修改 url 即可更换资源版本,且仅在项目部署时下载和替换 CDN 资源
工作原理:
- 对需要处理的文件中 script 和 link 标签进行提取,分析出以 http 开头的 url
- 将提取的 http url 列表下载到指定的本地目录
- 更换文件中的 http url
命令行使用
$ withoutcdn --help
Options:
-V, --version output the version number
-f --filepath the file path that to be processed
-e --exclude exclude the CDN path, multiple paths use commas to separate
-d --folder destination folder for the CDN file
-lo --logsoff logs off
-h, --help display help for command
Options:
-V, --version 显示版本
-f --filepath 必填参数,需要处理的文件路径,注意路径是否有效(使用\\或/),支持全路径、相对路径
-e --exclude 忽略的路径,支持配置多个路径,用半角逗号分割。例如项目中使用了多个CDN,自建的CDN路径不需要下载替换,可以配置exclude。
-d --folder CDN文件下载的目录名称,如不存在会在处理文件的同一路径下创建
-lo --logsoff 是否打印日志,加上-lo或--logsoff关闭日志输出
-h, --help 显示帮助
// build后的index.html,使用了bootcdn的jquery和alicdn的font文件
XXXX有限公司 .....
// 使用withoutcdn处理index.html
$ withoutcdn -f ./index.html -d static
withoutCDN start...
find CDN fileList:
https://cdn.bootcdn.net/ajax/libs/jquery/2.1.2/jquery.min.js
http://at.alicdn.com/t/font_2031940_kylw1ml1bn.js
download http://at.alicdn.com/t/font_2031940_kylw1ml1bn.js successfully.
download https://cdn.bootcdn.net/ajax/libs/jquery/2.1.2/jquery.min.js successfully.
// 处理后的index.html,同时./static目录下多出了font_2031940_kylw1ml1bn.js jquery.min.js
XXXX有限公司