first commit
This commit is contained in:
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
7
Template/.gitignore
vendored
Executable file
7
Template/.gitignore
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
.git-credentials
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json*
|
||||
1
Template/.pydio
Normal file
1
Template/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
e90a6ca3-776a-4719-8af9-f7a80ab8b6dd
|
||||
21
Template/CHANGES.md
Executable file
21
Template/CHANGES.md
Executable file
@@ -0,0 +1,21 @@
|
||||
## 1.1.7
|
||||
* 增加`sh`文件夹,实现在`Linux`系统上的一键提交代码至`git`
|
||||
* 增加对`public`css文件和`font`文件的同步`src`删除操作
|
||||
* 增加对`public`中第三方css文件的编译支持
|
||||
* 增加对字体文件夹`font`的编译支持
|
||||
* 更改`less`为`stylus`,使语法更简洁美观
|
||||
* 增加更多的代码详细的代码注释,一目了然
|
||||
|
||||
## 1.1.6
|
||||
* `tinify` 速度实在太慢已去除这个模块,等白天我来自己写个。
|
||||
* 修改优化 gulp 代码,去除冗余!
|
||||
|
||||
## 1.1.2
|
||||
* 这个模块`tinify`超过500次使用就要钱,所以正在开发自己的图片压缩插件(尽请期待..)
|
||||
* 去除gulp-imagemin模块,增加 `tinify` 模块的自动图片压缩
|
||||
|
||||
## 1.0.2
|
||||
* 去除gulp.js图片压缩模块,因为这个模块问题太多用不了
|
||||
* 根据朋友建议增加对css编译的修改,page/ 文件合并,public/ 公共模块不合并
|
||||
* 根据朋友建议去除对 less,js,jade代码编译后的自动压缩
|
||||
* 增加更多源码注释
|
||||
201
Template/LICENSE
Normal file
201
Template/LICENSE
Normal file
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
72
Template/README.md
Executable file
72
Template/README.md
Executable file
@@ -0,0 +1,72 @@
|
||||
<p align="center"><img src="docs/_media/img/gen.svg"/></p>
|
||||
<p align="center"><a href="http://nodejs.cn/"><img src="https://img.shields.io/badge/Node.js%20-v8.9.3-green.svg" alt="Node"></a> <a href="https://www.gulpjs.com.cn/"><img src="https://img.shields.io/badge/gulp.js-3.9.1-red.svg" alt="gulpjs"></a> <a href="http://www.expressjs.com.cn/"><img src="https://img.shields.io/badge/express.js-4.16.3-blue.svg" alt="expressjs"></a></p>
|
||||
|
||||
## WHtml
|
||||
|
||||
> 一款让你用更加丝滑更符合组件化思想的方式来编写传统前端HTML页面
|
||||
- 1: **脚手架地址:[whtml-cli](https://www.npmjs.com/package/whtml-cli)**
|
||||
- 2: 文档地址:[Whtml](https://helpcode.github.io/Whtml/#/)
|
||||
- 2: 创想工作室QQ群:[399041912](http://shang.qq.com/wpa/qunwpa?idkey=6311ead3dd326b975b76cb90590535973515776cf83d0854c0dc7b4a5c9cebfb)
|
||||
|
||||
|
||||
## 介绍
|
||||
|
||||
当你在编写传统HTML页面的时候是否曾经遇到过静态页面众多导致html,css,ja代码过度冗余,将大部分时间花在不断的ctrl+c,ctrl+v上,是否想过能将传统静态页面的公共部分例如头部和底部分离出来,不需要每次的复制粘贴,是否想过css代码频繁重复为何不能像写JavaScript那样封装成函数直接调用。
|
||||
|
||||
是否想过省去每次写css3时需要手动去加浏览器前缀的烦恼等,是否不想让自己辛勤编码的成果被别人轻而易举的获取到。是否抱怨过美工给的素材太大等。。。?
|
||||
|
||||
|
||||
为何我们不能换种方式来进行更加优雅自动化的编码,我们只关心核心页面的编写,其他一切交给程序帮助我们自动化实现?
|
||||
|
||||
|
||||
## 特性
|
||||
|
||||
`WHtml`能够让你获得以下更加爽快的体验:
|
||||
|
||||
|
||||
- 1: 将静态页面组件化模块化,降低重复代码的重复编写。
|
||||
|
||||
- 2: 基于Node.js + Gulp 自动化构建项目,让前端的你无缝对接
|
||||
|
||||
- 3: 采用jade + stylus,用更加简洁高效的方式去书写html和css
|
||||
|
||||
- 4: 自动压缩合并编译html,css,JavaScript使的项目具备更加优秀的响应速度
|
||||
|
||||
- 5: 更加自由的框架配置和详细的中文代码注释,一键轻松配置源码实现定制化
|
||||
|
||||
- 6: 简洁明了的ES6+语法,代码赏心悦目,提升编码乐趣。
|
||||
|
||||
- 7: 程序实时编译同步你的每一行修改,删除,重命名,新建为你自动构建输出到 dist/,代码写完程序自动zip压缩打包,你需要做的是将zip发给你的后端即可。
|
||||
|
||||
- 9: ....等
|
||||
|
||||
更多的功能期待你的切身尝试!
|
||||
|
||||
## 版本更新
|
||||
|
||||
- 1.1.7
|
||||
* 增加`sh`文件夹,实现在`Linux`系统上的一键提交代码至`git`
|
||||
* 增加对`public`css文件和`font`文件的同步`src`删除操作
|
||||
* 增加对`public`中第三方css文件的编译支持
|
||||
* 增加对字体文件夹`font`的编译支持
|
||||
* 更改`less`为`stylus`,使语法更简洁美观
|
||||
* 增加更多的代码详细的代码注释,一目了然
|
||||
|
||||
- 1.1.6
|
||||
* `tinify` 速度实在太慢已去除这个模块,等白天我来自己写个。
|
||||
* 修改优化 gulp 代码,去除冗余!
|
||||
|
||||
- 1.1.2
|
||||
* 这个模块`tinify`超过500次使用就要钱,所以正在开发自己的图片压缩插件(尽请期待..)
|
||||
* 去除gulp-imagemin模块,增加 `tinify` 模块的自动图片压缩
|
||||
|
||||
- 1.0.2
|
||||
* 去除gulp.js图片压缩模块,因为这个模块问题太多用不了
|
||||
* 根据朋友建议增加对css编译的修改,page/ 文件合并,public/ 公共模块不合并
|
||||
* 根据朋友建议去除对 less,js,jade代码编译后的自动压缩
|
||||
* 增加更多源码注释
|
||||
|
||||
## 捐赠
|
||||
|
||||
|
||||
如果你觉得 `WHtml` 对你有帮助,或者想对我微小的工作一点资瓷,欢迎给我提建议。
|
||||
11
Template/app.js
Executable file
11
Template/app.js
Executable file
@@ -0,0 +1,11 @@
|
||||
// express 框架部分
|
||||
const express = require('express')
|
||||
const app = express()
|
||||
// 站点配置
|
||||
const config = require('./config')
|
||||
// 工具函数
|
||||
const { OpenBrowser } = require('./utils')
|
||||
// 核心,需要被 express 托管的静态资源文件路径
|
||||
app.use(express.static('./dist'))
|
||||
// 监听 1314 端口,运行网站
|
||||
app.listen(config.nodeService.port, () => OpenBrowser() );
|
||||
1
Template/config/.pydio
Normal file
1
Template/config/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
aea4f241-7eed-4c98-bf2f-69f0b3d246e7
|
||||
38
Template/config/index.js
Executable file
38
Template/config/index.js
Executable file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* 网站配置信息
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
jade: {
|
||||
// jade -> html 需要监听转换的jade文件路径
|
||||
jadeTohtml: "./src/view/main/*.jade",
|
||||
// html 输出的路径
|
||||
jadeTodist: "./dist/"
|
||||
},
|
||||
styl: {
|
||||
// 将 public/ 公共的 styl 文件直接编译在 dist/ 中生成对应的
|
||||
stylTocssPublic: "./src/assets/css/public/*.styl",
|
||||
cssToDist: "",
|
||||
// 将 page/ 中 styl 编译合并
|
||||
stylTocssPage: "./src/assets/css/layout.styl",
|
||||
// styl 转换完成后,需要将多个文件合并成一个的文件名
|
||||
stylToFileName: "main.css",
|
||||
// css 输出的路径
|
||||
stylTodist: "./dist/css/"
|
||||
},
|
||||
watch: {
|
||||
// gulp 需要监听的文件路径,当我们在src修改源码时,gulp会动态编译输出到dist
|
||||
watchFile: "src/**/*"
|
||||
},
|
||||
nodeService: {
|
||||
// 访问ip
|
||||
host: "http://127.0.0.1:",
|
||||
// 访问端口
|
||||
port: 1314,
|
||||
default: "about.html",
|
||||
// 提示信息
|
||||
log: "app is run here: ",
|
||||
// 是否开始自动打开浏览器功能,取值:true,false
|
||||
isOpenBrowser: false
|
||||
}
|
||||
};
|
||||
0
Template/docs/.nojekyll
Executable file
0
Template/docs/.nojekyll
Executable file
1
Template/docs/.pydio
Normal file
1
Template/docs/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
6a94895c-3a6d-4067-b249-c52d03b04bce
|
||||
49
Template/docs/README.md
Executable file
49
Template/docs/README.md
Executable file
@@ -0,0 +1,49 @@
|
||||
# WHtml
|
||||
|
||||
> 一款让你用更加丝滑的方式来编写传统前端HTML页面
|
||||
|
||||
- 1: 文档地址:[Whtml](https://helpcode.github.io/Whtml/#/)
|
||||
- 2: 创想工作室QQ群:[399041912](http://shang.qq.com/wpa/qunwpa?idkey=6311ead3dd326b975b76cb90590535973515776cf83d0854c0dc7b4a5c9cebfb)
|
||||
|
||||
# 介绍
|
||||
|
||||
---
|
||||
|
||||
当你在编写传统HTML页面的时候是否曾经遇到过静态页面众多导致html,css,ja代码过度冗余,将大部分时间花在不断的ctrl+c,ctrl+v上,是否想过能将传统静态页面的公共部分例如头部和底部分离出来,不需要每次的复制粘贴,是否想过css代码频繁重复为何不能像写JavaScript那样封装成函数直接调用。
|
||||
|
||||
是否想过省去每次写css3时需要手动去加浏览器前缀的烦恼等,是否不想让自己辛勤编码的成果被别人轻而易举的获取到。是否抱怨过美工给的素材太大等。。。?
|
||||
|
||||
|
||||
为何我们不能换种方式来进行更加优雅自动化的编码,我们只关心核心页面的编写,其他一切交给程序帮助我们自动化实现?
|
||||
|
||||
|
||||
## 特性
|
||||
|
||||
`WHtml`能够让你获得以下更加爽快的体验:
|
||||
|
||||
---
|
||||
|
||||
- 1: 将静态页面组件化模块化,降低重复代码的重复编写。
|
||||
|
||||
- 2: 基于Node.js + Gulp 自动化构建项目,让前端的你无缝对接
|
||||
|
||||
- 3: 采用jade + stylus,用更加简洁高效的方式去书写html和css
|
||||
|
||||
- 4: 自动压缩合并编译html,css,JavaScript使的项目具备更加优秀的响应速度
|
||||
|
||||
- 5: 更加自由的框架配置和详细的中文代码注释,一键轻松配置源码实现定制化
|
||||
|
||||
- 6: 简洁明了的ES6+语法,代码赏心悦目,提升编码乐趣。
|
||||
|
||||
- 7: 程序实时编译同步你的每一行修改,删除,重命名,新建为你自动构建输出到 dist/,代码写完程序自动zip压缩打包,你需要做的是将zip发给你的后端即可。
|
||||
|
||||
- 9: ....等
|
||||
|
||||
更多的功能期待你的切身尝试!
|
||||
|
||||
|
||||
## 捐赠
|
||||
|
||||
---
|
||||
|
||||
如果你觉得 `WHtml` 对你有帮助,或者想对我微小的工作一点资瓷,欢迎给我提建议。
|
||||
12
Template/docs/_coverpage.md
Executable file
12
Template/docs/_coverpage.md
Executable file
@@ -0,0 +1,12 @@
|
||||

|
||||
|
||||
# WHtml <small>v1.1.0</small>
|
||||
|
||||
> 一款自动化模块化的HTML页面编写框架
|
||||
|
||||
* 轻量小巧,编译丝滑
|
||||
* 免费开源
|
||||
* 适用强,高度订制
|
||||
|
||||
[GitHub](https://github.com/QingWei-Li/docsify/)
|
||||
[开始](#WHtml)
|
||||
1
Template/docs/_media/.pydio
Normal file
1
Template/docs/_media/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
e1a88b3c-ca75-40a9-aebd-d20d2e27f4ee
|
||||
1
Template/docs/_media/img/.pydio
Normal file
1
Template/docs/_media/img/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
61a5299c-304d-450b-88b2-bfc0b2d2b584
|
||||
BIN
Template/docs/_media/img/favicon.ico
Executable file
BIN
Template/docs/_media/img/favicon.ico
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
343
Template/docs/_media/img/gen.svg
Executable file
343
Template/docs/_media/img/gen.svg
Executable file
@@ -0,0 +1,343 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="259px" height="211px" viewBox="0 0 259 211" enable-background="new 0 0 259 211" xml:space="preserve"> <image id="image0" width="259" height="211" x="0" y="0"
|
||||
xlink:href="data:image/png;base64,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
|
||||
4A+sAAAAAElFTkSuQmCC" />
|
||||
</svg>
|
||||
BIN
Template/docs/_media/img/wxpay.png
Executable file
BIN
Template/docs/_media/img/wxpay.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 109 KiB |
14
Template/docs/_sidebar.md
Executable file
14
Template/docs/_sidebar.md
Executable file
@@ -0,0 +1,14 @@
|
||||
* 基础
|
||||
|
||||
* [开始](install.md)
|
||||
* [安装](becareful.md)
|
||||
|
||||
* 架构设计
|
||||
|
||||
* [使用](use.md)
|
||||
* [源码](code.md)
|
||||
|
||||
|
||||
* 关于
|
||||
|
||||
* [关于<sup style="color:red">(赞)<sup>](team.md)
|
||||
73
Template/docs/becareful.md
Executable file
73
Template/docs/becareful.md
Executable file
@@ -0,0 +1,73 @@
|
||||
## 环境准备
|
||||
|
||||
---
|
||||
|
||||
### windows
|
||||
|
||||
首先安装最基本的Node.js环境,先去官网下载最新版的nodejs,记住根据你的操作系统和位数选择下载。
|
||||
|
||||
> 官网地址: [http://nodejs.cn/download/](http://nodejs.cn/download/)
|
||||
|
||||
虽然在Windows上安装很简单,但是为了避免错误具体的安装过程参考这篇教程:
|
||||
|
||||
[Node.js 安装配置 http://nodejs.cn/download/](http://nodejs.cn/download/)
|
||||
|
||||
!> 注意:安装nodejs的路径杜绝使用中文,记住杜绝包含中文的路径!!!
|
||||
|
||||
### Linux
|
||||
|
||||
Linux下安装比Windows稍微麻烦一点点,这边安装方式很多。不推荐用`apt-get install xxx` 来安装,因为版本老旧。也不推荐下载文件然后改配置,个人感觉不好(你也可以选择这种方法)。
|
||||
|
||||
我这边推荐使用的方法是:**编译源码安装**
|
||||
|
||||
|
||||
具体操作看这篇教程,不再累述:
|
||||
|
||||
> [Linux安装Node.js(源码编译安装)](https://www.yiibai.com/html/node_js/2013/0826201.html)
|
||||
|
||||
## 部署代码
|
||||
|
||||
---
|
||||
|
||||
上面的步骤很简单没有什么可说的,假设你已经完美安装成功,那么我们开始愉快的部署代码吧。
|
||||
|
||||
**1: 解决依赖**
|
||||
|
||||
---
|
||||
|
||||
命令提示符界面输入命令
|
||||
|
||||
> npm install
|
||||
|
||||
如果npm下载速度十分缓慢,请更换npm为cnpm,具体操作百度,太简单懒得详细说!!
|
||||
|
||||
成功更换为cnpm后名称变为下面:
|
||||
|
||||
> cnpm install
|
||||
|
||||
OK,到这一步基本上我们的框架就可以被成功的运行起来来。
|
||||
|
||||
|
||||
## 运行代码
|
||||
|
||||
---
|
||||
|
||||
查看`package.json`文件中`scripts`字段,你可以通过命令:
|
||||
|
||||
> npm run all
|
||||
|
||||
来运行框架。
|
||||
|
||||
## 运行帮助文档
|
||||
|
||||
---
|
||||
|
||||
**如果你想查看网站的帮助文档,那么很简单,运行下面的命令即可:**
|
||||
|
||||
> npm run doc
|
||||
|
||||
## 自动提交
|
||||
|
||||
---
|
||||
|
||||
> npm run push
|
||||
175
Template/docs/code.md
Executable file
175
Template/docs/code.md
Executable file
@@ -0,0 +1,175 @@
|
||||
## 源码分析 - package.json
|
||||
|
||||
---
|
||||
|
||||
上面说过了,我们可以通过`npm run all`命令来运行框架。那么我们这边先从`package.json`开始分析,看看这行命令背后到底发生了哪些事情。
|
||||
|
||||
打开`package.json`你将看到下面这些代码:
|
||||
|
||||
```bash
|
||||
"scripts": {
|
||||
"all": "node_modules/.bin/concurrently \" node_modules/.bin/node-dev app.js \" \"node_modules/.bin/gulp \" ",
|
||||
"doc": "node_modules/.bin/docsify serve ./docs"
|
||||
}
|
||||
```
|
||||
|
||||
1:all :通过nodejs的 `concurrently` 模块来并发执行两条命令,其中`node-dev app.js`是用来启动`express`框架运行我们编译后产生的静态文件`dist/`。而`gulp`命令执行的是`gulpfile.js`中的默认任务`default`
|
||||
|
||||
2:doc :通过 `docsify` 来运行我们网站的帮助文档,这里没有什么好说的。
|
||||
|
||||
---
|
||||
|
||||
我们框架的关键逻辑在`all`命令背后,通过上面知道`all`命令运行后会并发执行`node-dev app.js`,我们打开项目根目录下的`app.js`探究一下:
|
||||
|
||||
```js
|
||||
// express 框架部分
|
||||
const express = require('express')
|
||||
const app = express()
|
||||
// 站点配置
|
||||
const config = require('./config')
|
||||
// 工具函数,OpenBrowser 自动打开浏览器
|
||||
const { OpenBrowser } = require('./utils')
|
||||
// 核心,需要被 express 托管的静态资源文件路径,提供给前端访问静态页面
|
||||
app.use(express.static('./dist'))
|
||||
|
||||
// 监听 1314 端口,运行网站
|
||||
app.listen(config.nodeService.port, () => OpenBrowser() );
|
||||
```
|
||||
|
||||
这部分源码注释很详细也很简单,没什么可说的吧,一看就懂。
|
||||
|
||||
|
||||
我们的核心应该在`gulp`命令背后,打开`gulpfile.js`文件,你将看到以下源码:
|
||||
|
||||
```js
|
||||
const gulp = require('gulp')
|
||||
// 编译jade文件为hrml
|
||||
const jade = require('gulp-jade')
|
||||
// 编译stylus文件为css
|
||||
const stylus = require('gulp-stylus')
|
||||
// 自动为css3属性加前缀
|
||||
const autoprefixer = require('gulp-autoprefixer')
|
||||
// 合并js,css文件
|
||||
const concat = require('gulp-concat')
|
||||
// 压缩css
|
||||
const cssmin = require('gulp-clean-css')
|
||||
// gulp 文件监听
|
||||
const watchPath = require('gulp-watch-path')
|
||||
// zip压缩
|
||||
const zip = require('gulp-zip')
|
||||
// 压缩js文件
|
||||
const uglify = require('gulp-uglify')
|
||||
// 处理gulp错误,防止程序报错终止
|
||||
const plumber = require('gulp-plumber')
|
||||
// 引入gulp的配置文件
|
||||
const config = require('./config/index.js')
|
||||
// 引入全局公共方法
|
||||
const { RemoveFile } = require('./utils')
|
||||
|
||||
/**
|
||||
* 编译jade为html
|
||||
*/
|
||||
gulp.task('jade', function() {
|
||||
return gulp.src(config.jade.jadeTohtml)
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(jade({
|
||||
pretty: true
|
||||
}))
|
||||
.pipe(gulp.dest(config.jade.jadeTodist))
|
||||
})
|
||||
|
||||
|
||||
...
|
||||
|
||||
/**
|
||||
* 监听用户在 src/ 的所有文件操作
|
||||
*/
|
||||
gulp.task('file', function() {
|
||||
gulp.watch(config.watch.watchFile, function(event) {
|
||||
let paths = watchPath(event,'src/', 'Template/src/')
|
||||
switch (event.type){
|
||||
case 'deleted':
|
||||
console.log('删除操作...')
|
||||
RemoveFile(paths.srcFilename)
|
||||
break
|
||||
default:
|
||||
console.log('其他操作...')
|
||||
gulp.run('publicstyl','copyfont','pagestyl','jade','copyjs','copyimg','Online')
|
||||
break
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 默认先运行一次 编译过程
|
||||
*/
|
||||
gulp.run('publicstyl','copyfont','pagestyl','jade','copyjs','copyimg','Online')
|
||||
|
||||
|
||||
/**
|
||||
* 执行file任务,当文件被操作后进行相关的编译过程
|
||||
*/
|
||||
gulp.task('default',['file'])
|
||||
```
|
||||
|
||||
这边通过`gulp.watch`实现对`src/`文件夹进行监听,当用户修改被监听的`src/`文件夹里的文件后使用`gulp-watch-path`模块获得被修改文件的路径,然后判断`event.type`的操作类型,根据操作类型来进行对应的操作。
|
||||
|
||||
1:如果是在`src/`文件夹中的删除操作,那么调用`utils/index.js`里的方法`RemoveFile()`同步去删除对应被编译后的文件。
|
||||
|
||||
2:如果是其他操作例如修改,添加等,直接将进行重新编译输出到`dist/`中,保持在`src`中的修改被同步到`dist/`中。这一步就是我们最核心的页面逻辑了。其实也没什么,你会发现还是很简单的。
|
||||
|
||||
## 源码分析 - src/
|
||||
|
||||
---
|
||||
|
||||
`src`文件夹中是前端工程师真正需要关心的源码部分。
|
||||
- 1: `assets`是静态资源的存放。
|
||||
- 2: `view`是页面的存放。
|
||||
- 3: `main/`文件夹中存放主要的页面,
|
||||
- 4: `public/`存放公共的页面组件,而`layout.jade`是页面的核心入口
|
||||
|
||||
## 源码分析 - 配置/
|
||||
|
||||
---
|
||||
|
||||
你可以在网站的`config/index.js`文件来修改基本配置,做到设置端口,打开url地址,是否自动打开浏览器等,具体配置信息如下:
|
||||
|
||||
```js
|
||||
module.exports = {
|
||||
"jade":{
|
||||
// jade -> html 需要监听转换的jade文件路径
|
||||
"jadeTohtml": "./src/view/main/*.jade",
|
||||
// html 输出的路径
|
||||
"jadeTodist": "./dist/"
|
||||
},
|
||||
"styl":{
|
||||
// 将 public/ 公共的 styl 文件直接编译在 dist/ 中生成对应的
|
||||
"stylTocssPublic": "./src/assets/css/public/*.styl",
|
||||
// 将 page/ 中 styl 编译合并
|
||||
"stylTocssPage": "./src/assets/css/layout.styl",
|
||||
// styl 转换完成后,需要将多个文件合并成一个的文件名
|
||||
"stylToFileName":"main.css",
|
||||
// css 输出的路径
|
||||
"stylTodist":"./dist/css/"
|
||||
},
|
||||
"watch":{
|
||||
// gulp 需要监听的文件路径,当我们在src修改源码时,gulp会动态编译输出到dist
|
||||
"watchFile":"src/**/*"
|
||||
},
|
||||
"nodeService": {
|
||||
// 访问ip
|
||||
"host":"http://127.0.0.1:",
|
||||
// 访问端口
|
||||
"port": 1314,
|
||||
// 提示信息
|
||||
"log":"项目运行在:",
|
||||
// 是否开始自动打开浏览器功能,取值:true,false
|
||||
"isOpenBrowser": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
26
Template/docs/index.html
Executable file
26
Template/docs/index.html
Executable file
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>WHtml</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
|
||||
<link rel="shortcut icon" href="_media/img/favicon.ico" />
|
||||
<link rel="bookmark" href="_media/img/favicon.ico" type="image/x-icon" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">Loading</div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
coverpage: true,
|
||||
name: 'WHtml',
|
||||
repo: '',
|
||||
loadSidebar: true,
|
||||
subMaxLevel: 2,
|
||||
}
|
||||
</script>
|
||||
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
26
Template/docs/install.md
Executable file
26
Template/docs/install.md
Executable file
@@ -0,0 +1,26 @@
|
||||
## 说明
|
||||
|
||||
---
|
||||
|
||||
拿到框源码后并不是直接双击HTML通过浏览器来运行,这边需要你根据我的文档说明做好基本的环境配置,然后来运行我们的框架。
|
||||
|
||||
请按照我制定的规范来编写前端HTML代码,其他只需要交由框架来帮你搞定一切,或许你不适应这种代码的编写方式甚至没听过所谓的html模板引擎,css预处理器,gulp自动化工具。
|
||||
|
||||
但你需要习惯这种开发方式,大的团队普遍适用的技术套路你真的有必要去学习,不要抱怨,逼着自己埋头苦练技术提升自己的能力才是最根本。
|
||||
|
||||
## 技术架构
|
||||
|
||||
---
|
||||
|
||||
- 1: 基于Node.js开发
|
||||
- 2: gulp作为自动化构建工具
|
||||
- 3: HTML模板引擎采用jade
|
||||
- 4: stylus作为项目css的预编译器
|
||||
- 5: 使用express的来托管gulp编译后的dist/静态文件夹,启动nodejs服务器来访问静态网站查看效果。
|
||||
- 6: concurrently 实现命令的多条并发执行
|
||||
- 7: cli-color 实现终端命令行输出彩色信息
|
||||
- 8: 采用 node-dev ,当我们修改js文件后自动重启node进程
|
||||
- 9: open模块实现自动为你打开浏览器并运行我们的网站
|
||||
- 10: autoprefixer帮你自动解决css3特性的浏览器前缀问题
|
||||
- 11: minify-css,concat为你自动压缩美化合并多个css文件
|
||||
- 12: imagemin 实现图片的自动高清压缩
|
||||
23
Template/docs/team.md
Executable file
23
Template/docs/team.md
Executable file
@@ -0,0 +1,23 @@
|
||||
## 团队
|
||||
|
||||
---
|
||||
|
||||
我们的团队名叫`创想工作室`由一群热衷技术的小伙伴组成,欢迎加入创想工作室QQ群这里有同样热衷技术,也有很多正在学习过程中的小伙伴。
|
||||
|
||||
> <a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=6311ead3dd326b975b76cb90590535973515776cf83d0854c0dc7b4a5c9cebfb"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="创想工作室(技术)" title="创想工作室(技术)"></a>
|
||||
|
||||
## 源码下载
|
||||
|
||||
---
|
||||
|
||||
项目源码已经上传到github,感兴趣的同学可以去github下载代码,这里贴上地址:
|
||||
|
||||
> [https://github.com/helpcode/Whtml](https://github.com/helpcode/Whtml)
|
||||
|
||||
## 鸣谢感恩
|
||||
|
||||
---
|
||||
|
||||
十分感谢众多优秀开源的技术支持,众多开源技术的帮助才能让我们的项目编码更加方便。
|
||||
|
||||
|
||||
53
Template/docs/use.md
Executable file
53
Template/docs/use.md
Executable file
@@ -0,0 +1,53 @@
|
||||
## 目录解读
|
||||
|
||||
---
|
||||
|
||||
首先我们来看以下框架的文件层级结构,从宏观上了解以下框架的基本架构,然后我们在一一解读其具体的源码实现,目录结构图如下:
|
||||
|
||||
```html
|
||||
.
|
||||
├── app.js #通过nodejs的web框架express来启动打包后的dist/静态网站
|
||||
├── config #基本信息配置,一般修改这里即可实现订制
|
||||
│ └── index.js
|
||||
├── dist # gulp编译src产生的文件,我们写完静态页面需要交给后端的就是它
|
||||
├── docs # 框架的帮助文档
|
||||
├── gulpfile.js # 最核心的 gulp 配置文件,看不懂源码情况下不要修改
|
||||
├── Online.zip # gulp 自动zip打包 dist/ 文件夹产生的,直接将这个压缩包发给后端,省事
|
||||
├── package.json # 项目的基本核心配置,你懂的!看不懂源码情况下不要修改
|
||||
├── .gitignore #git 上传忽略文件配置
|
||||
├── CHANGES.md #版本更新日志
|
||||
├── README.md #帮助文档
|
||||
├── src # 核心源码,主要代码编写在这进行,在这的任何操作都会被同步映射更新到dist/
|
||||
│ ├── assets # 存放静态资源
|
||||
│ │ ├── css # css样式
|
||||
│ │ │ ├── layout.styl #css样式主入口,gulp将会从这里进行对css的编译打包
|
||||
│ │ │ ├── page #对应具体页面的css
|
||||
│ │ │ │ ├── header.styl #公共头部样式
|
||||
│ │ │ │ └── index.styl #首页的样式
|
||||
│ │ │ └── public #全局公共的样式
|
||||
│ │ │ ├── colors.styl #全局css颜色的封装
|
||||
│ │ │ ├── lib.styl #全局css方法的封装
|
||||
| | | ├── reset.styl #清除浏览器默认样式
|
||||
│ │ ├── img #网站用到的图片
|
||||
│ │ │ └── gen.svg #测试用的图片[测试可删除]
|
||||
│ │ └── js #存放js脚本
|
||||
│ │ ├── demo.js #index.jade 页面组件的私有js文件[测试可删除]
|
||||
│ │ └── jquery.js #默认自带的 jquery
|
||||
│ │ └── font #存放网站字体
|
||||
│ │ ├── awesome.woff2 #测试用的字体[测试可删除]
|
||||
│ └── view #存放页面的视图jade
|
||||
│ ├── layout.jade #页面试图的核心入口文件
|
||||
│ ├── main #存放主要的页面
|
||||
│ │ └── index.jade #首页
|
||||
│ └── public #公共页面组件
|
||||
│ ├── footer.jade #公共版权
|
||||
│ └── header.jade #公共头部
|
||||
└── utils #框架需要用的工具类
|
||||
│ └── index.js
|
||||
└── sh #shell脚本
|
||||
└── push.sh #自动提交代码到github
|
||||
|
||||
```
|
||||
|
||||
仔细阅读上面对各个文件的作用的解释,这里很关键。
|
||||
|
||||
202
Template/gulpfile.js
Executable file
202
Template/gulpfile.js
Executable file
@@ -0,0 +1,202 @@
|
||||
const gulp = require('gulp')
|
||||
// 编译jade文件为hrml
|
||||
const jade = require('gulp-jade')
|
||||
// 编译stylus文件为css
|
||||
const stylus = require('gulp-stylus')
|
||||
// 自动为css3属性加前缀
|
||||
const autoprefixer = require('gulp-autoprefixer')
|
||||
// 合并js,css文件
|
||||
const concat = require('gulp-concat')
|
||||
// 压缩css
|
||||
const cssmin = require('gulp-clean-css')
|
||||
// gulp 文件监听
|
||||
const watchPath = require('gulp-watch-path')
|
||||
// zip压缩
|
||||
const zip = require('gulp-zip')
|
||||
// 压缩js文件
|
||||
const uglify = require('gulp-uglify')
|
||||
// 处理gulp错误,防止程序报错终止
|
||||
const plumber = require('gulp-plumber')
|
||||
// 引入gulp的配置文件
|
||||
const config = require('./config/index.js')
|
||||
// 引入全局公共方法
|
||||
const { RemoveFile } = require('./utils')
|
||||
|
||||
const DistPublic = `${config.styl.stylTodist}public`
|
||||
|
||||
/**
|
||||
* 编译jade为html
|
||||
*/
|
||||
gulp.task('jade', function() {
|
||||
return gulp.src(config.jade.jadeTohtml)
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(jade({
|
||||
pretty: true
|
||||
}))
|
||||
.pipe(gulp.dest(config.jade.jadeTodist))
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 编译公共页 css
|
||||
*/
|
||||
gulp.task('publicstyl', function() {
|
||||
return gulp.src(config.styl.stylTocssPublic)
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(stylus())
|
||||
.pipe(autoprefixer({
|
||||
browsers: ['last 2 versions','last 2 Explorer versions','Android >= 4.0'],
|
||||
cascade: true
|
||||
}))
|
||||
/**
|
||||
* 压缩兼容处理css文件,取消注释使用
|
||||
*/
|
||||
// .pipe(cssmin({
|
||||
// advanced: false,
|
||||
// compatibility: 'ie7',
|
||||
// keepBreaks: false,
|
||||
// keepSpecialComments: '*'
|
||||
// }))
|
||||
.pipe(gulp.dest(DistPublic))
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 编译主要页面的 css,合并为main.css
|
||||
*/
|
||||
gulp.task('pagestyl', function() {
|
||||
return gulp.src(config.styl.stylTocssPage)
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(stylus())
|
||||
.pipe(autoprefixer({
|
||||
browsers: ['last 2 versions','last 2 Explorer versions','Android >= 4.0'],
|
||||
cascade: true
|
||||
}))
|
||||
.pipe(concat(config.styl.stylToFileName))
|
||||
/**
|
||||
* 同上
|
||||
*/
|
||||
// .pipe(cssmin({
|
||||
// advanced: false,
|
||||
// compatibility: 'ie7',
|
||||
// keepBreaks: false,
|
||||
// keepSpecialComments: '*'
|
||||
// }))
|
||||
.pipe(gulp.dest(`${config.styl.stylTodist}page`))
|
||||
})
|
||||
|
||||
/**
|
||||
* 拷贝 public中的第三方css到dist文件夹
|
||||
*/
|
||||
gulp.task('copycss',function(){
|
||||
return gulp.src('src/assets/css/public/*.css')
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(cssmin({
|
||||
advanced: false,
|
||||
compatibility: 'ie7',
|
||||
keepBreaks: false,
|
||||
keepSpecialComments: '*'
|
||||
}))
|
||||
.pipe(gulp.dest(DistPublic))
|
||||
})
|
||||
|
||||
/**
|
||||
* 拷贝img 到dist文件夹
|
||||
*/
|
||||
gulp.task('copyimg',function(){
|
||||
return gulp.src('src/assets/img/*')
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(gulp.dest('dist/img'))
|
||||
})
|
||||
|
||||
/**
|
||||
* 拷贝字体文件
|
||||
*/
|
||||
gulp.task('copyfont',function(){
|
||||
return gulp.src('src/assets/font/*')
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(gulp.dest('dist/font'))
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 拷贝js文件
|
||||
*/
|
||||
gulp.task('copyjs',function(){
|
||||
return gulp.src('src/assets/js/*')
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
/**
|
||||
* 压缩js代码,取消注释启用
|
||||
*/
|
||||
// .pipe(uglify({
|
||||
// compress: false
|
||||
// }))
|
||||
.pipe(gulp.dest('dist/js'))
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 自动zip打包 dist 文件夹,用于提交给后端
|
||||
*/
|
||||
gulp.task('Online',function(){
|
||||
return gulp.src(['./dist/**'])
|
||||
.pipe(plumber({ errHandler: e => {
|
||||
gutil.beep()
|
||||
gutil.log(e)
|
||||
}}))
|
||||
.pipe(zip('Online.zip'))
|
||||
.pipe(gulp.dest('./'))
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 监听用户在 src/ 的所有文件操作
|
||||
*/
|
||||
gulp.task('file', function() {
|
||||
gulp.watch(config.watch.watchFile, function(event) {
|
||||
let paths = watchPath(event,'src/', 'Template/src/')
|
||||
switch (event.type){
|
||||
case 'deleted':
|
||||
console.log('删除操作...')
|
||||
RemoveFile(paths.srcFilename)
|
||||
break
|
||||
default:
|
||||
console.log('其他操作...')
|
||||
gulp.run('publicstyl','copyfont','pagestyl','jade','copyjs','copyimg','copycss','Online')
|
||||
break
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 默认先运行一次 编译过程
|
||||
*/
|
||||
gulp.run('publicstyl','copyfont','pagestyl','jade','copyjs','copyimg','copycss','Online')
|
||||
|
||||
|
||||
/**
|
||||
* 执行file任务,当文件被操作后进行相关的编译过程
|
||||
*/
|
||||
gulp.task('default',['file'])
|
||||
33
Template/package.json
Executable file
33
Template/package.json
Executable file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "whtml",
|
||||
"version": "1.2.8",
|
||||
"description": "An HTML automatic compiler framework",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"all": "node_modules/.bin/concurrently \" node_modules/.bin/node-dev app.js \" \"node_modules/.bin/gulp \" ",
|
||||
"doc": "node_modules/.bin/docsify serve ./docs",
|
||||
"push": "./sh/push.sh"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"cli-color": "^1.2.0",
|
||||
"concurrently": "^3.5.1",
|
||||
"docsify-cli": "^4.2.1",
|
||||
"express": "^4.16.3",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-autoprefixer": "^5.0.0",
|
||||
"gulp-clean-css": "^3.9.3",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-jade": "^1.1.0",
|
||||
"gulp-minify-css": "^1.2.4",
|
||||
"gulp-plumber": "^1.2.0",
|
||||
"gulp-stylus": "^2.7.0",
|
||||
"gulp-uglify": "^3.0.0",
|
||||
"gulp-watch-path": "^0.1.0",
|
||||
"gulp-zip": "^4.1.0",
|
||||
"node-dev": "^3.1.3",
|
||||
"open": "0.0.5"
|
||||
}
|
||||
}
|
||||
1
Template/sh/.pydio
Normal file
1
Template/sh/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
bbb32e53-9bbc-4537-b22b-2be773a4553a
|
||||
5
Template/sh/push.sh
Executable file
5
Template/sh/push.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 自动提交代码到 github,linux 系统才能使用
|
||||
message="shell的自动提交,更新记录查看CHANGES.md"
|
||||
git add -A && git commit -m $message && git push
|
||||
1
Template/src/.pydio
Normal file
1
Template/src/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
e078f410-1610-4b9e-bbf4-963b92aaf5a3
|
||||
1
Template/src/assets/.pydio
Normal file
1
Template/src/assets/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
26506e85-84b3-4039-b85c-f999565a06e5
|
||||
5
Template/src/assets/README.md
Executable file
5
Template/src/assets/README.md
Executable file
@@ -0,0 +1,5 @@
|
||||
# 帮助信息,该文件可删除
|
||||
|
||||
---
|
||||
|
||||
## 存放网站主体静态资源,例如css,js,img,font
|
||||
1
Template/src/assets/css/.pydio
Normal file
1
Template/src/assets/css/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
2ae432b7-8ee8-4fbd-981f-5687c5687aec
|
||||
2
Template/src/assets/css/layout.styl
Executable file
2
Template/src/assets/css/layout.styl
Executable file
@@ -0,0 +1,2 @@
|
||||
// page 各个主页面用到的less必须在这里先被引用
|
||||
@import "page/index";
|
||||
1
Template/src/assets/css/page/.pydio
Normal file
1
Template/src/assets/css/page/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
57a1e13f-f682-4b48-a7a3-8c9b72ef5e35
|
||||
7
Template/src/assets/css/page/index.styl
Executable file
7
Template/src/assets/css/page/index.styl
Executable file
@@ -0,0 +1,7 @@
|
||||
.index
|
||||
h1
|
||||
color red
|
||||
p
|
||||
font-size 20px
|
||||
|
||||
|
||||
1
Template/src/assets/css/public/.pydio
Normal file
1
Template/src/assets/css/public/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
c3464317-13fd-44ca-aa3a-1d13e0faca43
|
||||
1
Template/src/assets/css/public/config.styl
Executable file
1
Template/src/assets/css/public/config.styl
Executable file
@@ -0,0 +1 @@
|
||||
// 存放全局的颜色,布局,尺寸等配置,可删除
|
||||
1
Template/src/assets/css/public/lib.styl
Executable file
1
Template/src/assets/css/public/lib.styl
Executable file
@@ -0,0 +1 @@
|
||||
// 存放全局的css方法,可删除
|
||||
1
Template/src/assets/css/public/reset.styl
Executable file
1
Template/src/assets/css/public/reset.styl
Executable file
@@ -0,0 +1 @@
|
||||
// 清空默认样式,可删除
|
||||
1
Template/src/assets/font/.pydio
Normal file
1
Template/src/assets/font/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
0fa95758-9641-46d3-8ca0-34924b9afe7e
|
||||
BIN
Template/src/assets/font/awesome.woff2
Executable file
BIN
Template/src/assets/font/awesome.woff2
Executable file
Binary file not shown.
1
Template/src/assets/img/.pydio
Normal file
1
Template/src/assets/img/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
f84b5704-b115-4780-a90d-ffd0826ba29d
|
||||
343
Template/src/assets/img/gen.svg
Executable file
343
Template/src/assets/img/gen.svg
Executable file
@@ -0,0 +1,343 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="259px" height="211px" viewBox="0 0 259 211" enable-background="new 0 0 259 211" xml:space="preserve"> <image id="image0" width="259" height="211" x="0" y="0"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQMAAADTCAYAAACFmHZQAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
|
||||
AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAABK
|
||||
aElEQVR42u2dd3gVRRfG39ndW9JD7zV0pFfpfICIFOlgBxGxgCBiwYaoIAgIKKKCiCIiSpUuCAEE
|
||||
QanSQwsQIBDS6y27c74/bhJvT0Jusgns73nuQ9jZnZ2d3X13yplzAA0NDQ0NDQ0NDQ0NDY38MusQ
|
||||
TXx5Bynv/Ek/ql0WDQ1fwdQuQHFj5BYaEJ1OP/vrmN4kQ+lcmUw1KrKyQ6uwDLXLpqGRHyS1C1Dc
|
||||
8JfwplFkBqMIGAVIe6NY4I6r0APQxECjWCOoXYDixvUUBQbhvyYVJyBB7UJpaPgArWWQC17YSZUi
|
||||
4lEZAAwSD2SZEsoYYBCBCgwtu66i1OrBwNKe7G+1y6tR/KANLUorZbr8SaB6Qrn274g1B00v7DJo
|
||||
YwY50OIb8q9QGgdEgRqLDCQKDDoGxjJrTuGAQgSZAzoRuJbCPjj4BJuqdrk1iheW1fWegRT8PQQR
|
||||
KNEM+o4LC/3d1LoJOdCjHtL0IhoH6hiMEoNOsLUIshAFQC8y+OsYdAJDlUB88PYeGqp2uTWKGYYS
|
||||
QZCMYJIfmOm2KkXQugk5EJeRN8UkAuK1oUSNXEAbWvhbzKlvgctgwfXfQ+oVAAJgTYN5Vf0PwdMB
|
||||
fVkYBhx6vzDKo4lBDsSYUDXNjGulBUDwogpEgEkBbqbiYMMQrFW73BpFH2vZ7tHsdngwpEAg7SqQ
|
||||
NRgFGSyg4nsgDpjvwHJoSgl9q6njCro8mhjkwG/9WdSQ9fTopUQM0Imgsv68j58klBEyuwomGUgy
|
||||
YUWSBZbyAcDBJ9nIg2oXWqN4oAsMBilgpAAQbf1PBoDIto04iMuAFORXGMXRBhDzyKD18kFJENtI
|
||||
mSKeYAJuc4QeGcqS1C6bRvGCond3lW8d2IXECMCaBMhJAASAOBBUG1DMYJV6QAyoWo1V6nitoMuj
|
||||
tQzyiF4QYeG2gUOQrXugoXE3sApdwpH5QbasrvcMjOW+ZwIAQxnoOn2T+aH+vtDKo80m5JGwUng7
|
||||
ycKRYQXSrECD0sCbLdQulUaxRzEBpNi+LiSrUgRNDPLIx+3Zrm6VheaVAim6QSk6PacrY0PDtC6C
|
||||
Rv4gfaUMyGYrWZPByrVXxahVGzPQ0CgiyMc+HUGKpbxU4X/rWaV259Quj4aGhoaGhoaGhoaGhoaG
|
||||
hoaGhoaGhoaGhiNFcmqR0p7+BNbNAoRSs1jw+Vi1y6PhG3bu3Dn2yJEjVa5cuYK4uDhUr14drVu3
|
||||
xqBBg95Uu2waRRBK7T2Lxwucx4N4Esxql0fj7lm7dm2padOmmXQ6nQlAhiRJsiiKJAhC9k8URQJg
|
||||
KlGihOn999/frnaZNYoQlIC5PAHEE0E8FprlfzHi1KlTtZ588snn69Sp88kDDzxAAAgAt/tRTj+9
|
||||
Xk/PPvts/MiRI5//9ddfRbWvKbdQzFfN5GOBz8tn6pNyMoSs55pHylefeV7tchVrHMQgThOD4sKm
|
||||
TZv+DA0NjQoJCbF/ufMkBPa/0NBQqlu37mm1ryu3KCcrvKOcKk/K2RqknA0j5Uw1Uk6V157fnFBS
|
||||
35nFEwTiSfWIUp8aYZ+WkxhQyvBulNyS8wSQkvbuRrWv5X7mypUr9WvUqNGvW7duWS9+vkXA+dep
|
||||
UydasWLFs2pfqzfoXPsg+Wx9mwicq/3f70xFks91iFe7fEUWSp5dmic2v8DjQTwBxBPKEqUN/SA7
|
||||
3YsYUOpjz1FiRW47DqQkVI2m1BlN1L6m+5FevXqFPfTQQ1cFQbAXAGcxyJcQZP0aNmxI3333XZF1
|
||||
MkvnEKScLEnK2VqOYnC2Oin/SpoYeEOJD5jF4zNf+EQQTyhNlNbvWcDzmAGlDOjME6vbHQNS4gK0
|
||||
lkEh06dPH//ly5cfhutL67PWgLtf48aNaf369f3Uvn530KkugfK5xvHKmZp2QlCLlNPlyHrx0eNq
|
||||
ly+3qDK1SBnPdYR8fCfJhyWbmycArBKYvvs7kA+XIfn0hKySCSUgUOqo50jetQgUiez9xUZgYssB
|
||||
LGDpb/ktz6lTpP8jmU+f8SdHsAGY1VPAo/XFSWrUTVGndu3aG69du9bbbM77RE9QUBDq1q2HilXC
|
||||
YAgsg5u3b+Ly2f2IjrqV2yx+AzBA7Tpwh3J5wDtI2/MRRH+A6QCeDuhqQKxzUHMTkBNEEHhKG84T
|
||||
wHli5i8WF4nAKP0pmZJKc0puVA8AKBabs/dJAOfJDTiZnqzlq7JM38ut1WdbecuFVt7sSyuvONPK
|
||||
Z+1TNFeGTvzyyy834NgCyPGn1+v5tGnTOAARgDhkyBBRUY79ohwM4MqXjMsLwW99Ct63Qe7yGzt2
|
||||
7EW168EdRGBEEJWIVlw5IXD50qP/EA0pNrMhqkPWpzpQcsM4Hg/i8SBKCE0g+rOLwz7mvQ14Yq3I
|
||||
7H2S6yhkfmaQr8rw1d/KkqqfWqjNV1Zq943t1/orK7X6ykJfHZKfUruOihKDBw++Dc9dg+zuQalS
|
||||
pXitWrV+/+ijj2ZkHUsLUCdjHF40zdeRaRLI9A7I9BHIPA1knQGyzgcdnwRqU917d0EQhNiGDRtq
|
||||
40QFgOoWiESPV0OaEAllHcDTarISuOKyTywqQVciCkIbQFeyLjOuuOCr81f51LKkXCB7Vu+k4WkW
|
||||
QqyZnr4xyaCFXc+kWbNmt48dO1Y287/2g7tZnTd89NFH+Omnn+rNnDkz+tFHH00BADmq0SEknqwE
|
||||
hgoQAIoD+EWALgOQACbZcmACkCQCQxYCuyM9l8NgMLxmNps/U7s+7jUKzSEqJaIEFLRySYhfAYj1
|
||||
WrHQtCOejmWlcQNIECj5cj2kbatBcajhspMfzjB/XM9ruQw6gHMCCSw7UpLNySkjP0GbJrYnMDAw
|
||||
q0Ky/mUAYDQayWw271q+fPnvTzzxxCwA6PdwaCO6EFKXo/QqpJwE9Mj+9LDygFAV4C0AvgugRGQ/
|
||||
iaEErB4HdJwBnI1xX44yZcrMuX79+nwAitp1ci9RaIMbBGwhht9JcPox/M5h2UqW11p5PT5tbEXO
|
||||
/bZ6zMOMLXdTro+76+h2KqBwsvmiJEDmIL1E+KiH1uWzp3Hjxk+ULFkyWwgkSULp0qVp8uTJK5o3
|
||||
b94rSwhMl2vUVW5M2MrlpFVQLtlGC+zboATADAh+gNQHYNUBZPoA5QSEWIEPegGih3br9evXsXDh
|
||||
wg1q18e9RqF1EygenADmckYGAunAhJB+LCR2k8fjTWVqwZR6nijDtcwEMIBYybsTt+l7lYsr/+U1
|
||||
BUYgAAoxPNNCWP96O3FgYdVPcWHIkCG9k5KS5oWFhaFdu3Z46qmnamelUUx4IBKeL6soFy4xBpsI
|
||||
5AIyAfImgHFkf550gUDFd4BbKe6PKVWqFMXFxWkj9T6k8MQgCfNJxjiXLwQApqtxDrphjzC/GVc8
|
||||
Hk9vhiBly29kPdnJpeQEMAG/shIYfjdlO3yYdLtNygsz98gINgCze0kY0FD6orDqpiixd+/eD/v3
|
||||
7x8SHx+PDh064NNPP/2pXbt2/+TmWDlq4OMsNfwnCAl5e7IkwLoPwGXbrBwYIEjAsWig9VyXvbP7
|
||||
bgcPHhzatm3b1WrXmYbGPcf48ePfDAgIcBi9f+ihh3huj5fPgJQIkHI+j78LtuNMk22zC+bpth9f
|
||||
DCoT6NG4iUaNGvWl2nV2L6F6M4tShz3Bk7sSTwwgisXTbveJR1+eGEQ8qQVRypCxapf5XmTKlCnG
|
||||
kydPzkhLS7PfTNu3b8c777yT7O1YSwRaW88ihQm4u7YmAQgEEAKHOQpKAZ5q5rAXZZ6BAcCSJUvU
|
||||
rrZ7ClWnFinlscfIuut7sNt624ZyVha8bTQ3zX2bWbcIDJV7IPDLqjxt3BZGRwNs+wQSSX3fE4N/
|
||||
nqZ25d1jGAVByOA8uyGQPVAoimKKoijB7g6iCwhWOC4zQkkI+XieDIAcDuAasmcWGIDvzgIv/Ogy
|
||||
jZnFQgAvq11xhYnpwrUFyV9935POXwBrUB8hzz/5s6FWVZ+EbFetZUCpj/ck5fCK/4QAAHTXkD62
|
||||
KTMvqwOKrUV0PJLp2u8VKGbPf49mKmPKnx9T0qMj1Sr7vYpgizmf9QUGMl88SXI/A01RDzTm8E9i
|
||||
HKXy/SQpAAtwjF1JAMr4g4xSdlkcxKZr164vLVmypK7a9VZYpP72xxvJn85/mSXE1RIrlgsTYm6H
|
||||
pcz58t20P/4c44v8VREDSh38HFl3bQFdyDZXYVITYsaHRkDZbyuVAFvPEABYj/eYrj1lNxJxHcT3
|
||||
f6ekDCqyK9mKG0uXLkXv3r3dfoE/++wzF4MLU1Sn2oo5cQvkdJ89RczosonCgoEQo/sWR1RUFLZt
|
||||
26Z21RUa5lOnZzJFATMYCIIAGA2gDBMzHznxtS/yL3QxIJoiwbKjLeiW7dwcgFg9Fbpm/2P+3+1z
|
||||
2DnLSCV06VFI1WowqVF8tkAgFrBs6kg3pvgX9jXci4wcOdJUo0aN52vVqiVntRCMRiP17dv35ssv
|
||||
vxxivy/FvVRFp1jPM+v1Si42BPnAqVFAAFAhACxA737/mJgYHD58WO2qKzTkoyfBdDpbNTHGwBiD
|
||||
QQ/rAd/UQeG3DO7ASKxUNQCZLYLGxKSOjzO/73d7O4z5rbgKqemjTGpFWYLAEFgaJVCy0K/hHmXe
|
||||
vHnfLlmyZHSJEiXGAhjbsmXLsRMnTuxmvw8lTmmuJB39G+kHfPv0MAAWgDHH8YESBsDowU42OTkZ
|
||||
kZGRucn9nkAoEUrEuU0IslAUsNKlfJN/YV8QKzs1lQV+cpQxUWZSOxmGpxuwgB/d+yVwapwy/x/3
|
||||
IegfkRkelRkgI+jry8x/ap5NkO9npkyZIsyfP/9q8+bNuSAIvHv37v/ap3fu3PmHuLi4hQAW7tu3
|
||||
b2HXrl2zA4ASgfG0y0eY+WAFZK4n8BVMBMEKyswze3xA1AFMMwQFAAQM7qNQegaI8/9+aekU+Mww
|
||||
n8RwV2XMgOmGvclKKDoW/JeOGSa5Rpu1H8JyPpYxYoG/6VgJ6AT9kP5qlL+4Mnv27EmbNm1Sxo8f
|
||||
X/Xo0aPgnGPPnj2N69Sp80tOx1rSNrZWboxIQtKPBfHU2MYNbROYjhJzt9OV9yCWxIR6+tbNLwCM
|
||||
KDmVwATSt2tzgkfdrOyL/AttoVKu0f2PmGUXEYExSXOI6ivmzp378YcffvhOQkICYCe1VqsVly5d
|
||||
GnrlypVG1atXb+DuWLr1ewBP/m0bUn4I8uUYgQN6gGJdzdWvxAHJaXeX5b1G6PABl+jChQ4J1yL9
|
||||
EZUEVCyJkP7dU1iVKj5xrVYkNZfSn15Lli0Cs1Z5iZU5dlPt8hR3Jk+e/OLatWsXRkREuJ0tkCQJ
|
||||
siy7fRbIfLIJT950HHcmIwchIOTtefqvLAKYEgPwzQDzd8zlt6vAU0sAs5uGcK1atahZs2b1V61a
|
||||
FaFyFd8T5Lll8N1RanAyHvMP3AZKGoBhdYmeaSQ85MtCMf9lmQuEtGBK+WXmzJkzFi5c+ObVq1c9
|
||||
Ge6gVq1aOHfunNvj+fXnxsP8d05CkD8EgB8CmMHxHJII3IxxLwQAkJKSsrF79+5Rq1atKrT6vJfJ
|
||||
de/vcDyF/H6ZTv50gZ++kIRuFQPQTS+g24oI1v2VPxT68yYVSd909zNvvPHGS19++aW9ELgY7giC
|
||||
QL169XI7CEsnMZDMf4/08WChs1kx4wkAS4XLp4kFAL+f8ZxRWlra9TFjxqQXcrXes+RaDFafUPp9
|
||||
8y89EKgXCETfRifjhfgMvBCsg+lSgoA1Z/latS9G4z+mTZv28bp16xZcu3bNwZrQmdq1a9+4du1a
|
||||
D+ftltN4TRGxxscj+a5jQCJA1wFy+vozAGQE9lz2nNm7776rjSn5kFzr/dR9RIdvA4ES7f75UaGr
|
||||
fdrQ38iSbIFuSF3sHdWYdVb7ou53pkyZMnH+/PmzExMTsza5u8/UuHFjy4kTJ1zs/uQzGAaGlXkU
|
||||
gpzGDNyKEgUA8gqAmeHwaRIl4Fw08MBceKNIjnkVV3LdMjgaA6TLIGchAIDodDxvlIA153O92lWj
|
||||
gHj//fdfX7lyZU5CgLCwsPPBwcEuswfyabwAYCXz3fShy1qHbESAX4FtStG5lAbg5fWeM23UqFGB
|
||||
1eH9Sq5veaoMUjy861Zuu5cpFq3VpiZTpkz5cO7cuTMjIrIH190KQYsWLahUqVLt9+3b59AIl0/j
|
||||
RQALmDs3ZZ5+3vE4aAkAkGw+EJneNVWwAAejPGe8cOFC7WHzMbkWg5rBgJ9E7PHN1Mk5rZw/mlsV
|
||||
QqvyonaDVGLs2LEvLV++/N2UlBTAzUBhJlSnTp2IoKCgsv/880+cfYJ8BsMgYCGTILoIAQdAApGM
|
||||
TTBjDaxYA4iU7RzdPd6FAIByA4AVru7RGLDyFGD14O7UaDSiY8eOOrXr/F4j12Jg5vwTSQAyzNgw
|
||||
dD1ldxWG/UabGWGcSSE0K4Pxal/Q/cg777wzc+3atQsuXboEeOlHt2rVylqlSpVHdu/e7TBnK5/F
|
||||
a2CZXQPnowkASYTAfsvFDAwUG2Ow+AAGC0HNx0AKIw9i4HH2InsHEaCrANy80oIE7L9kc47qjq5d
|
||||
u9Kvv/6qdrXfc+R6AObkHerz1XFaGZUCf5kzlmEFRAHwlwBRIBrThJ3vVZPVU/uC7jdefPHFFzZs
|
||||
2LDwxo0bHu+lIAjUsGHD6ydPnqzqnEYRGKBwrPU4WCgD5B/0l1Q9pb1zknIl9COkJb6b+UI7v7pe
|
||||
ny0SAHktwKyueyZKQIuPgese/CtJkvSaLMta3AQfk+uWQaMybNOYpuzxAB3NqBgIEgRQkB7UtByo
|
||||
VggfXaUU2ql9Mfcbr7/++kdbt25deOPGDa/7NW7cOLpChQouhmFyBF5TONZ6HSwkwJ0QAIBYPfE9
|
||||
uB9H8v6REQF+DYAbM2PJAGw64lkIgoOD6fXXXy/AWr1/0aZmiimvvPLKq8uWLZuTmJjodTqvbdu2
|
||||
GQcPHgxwTpAjMAw8F9OHVkBs6Pk5UU6B4z9/A7l6nsgPkJfaIijZf44YABYC6Lw4MhNF8YqiKDVy
|
||||
OodG3lHdIapG3hk/fvybmzZtykkI0KhRowvly5dv7LydzuNFUC6nDxkgR4a+6i6JrpTonecnSMgM
|
||||
q2aGq3RIwLe7c7z2YuMROem7lX0Sl6x4K/3wqQ5qlyU3aC2DYsaECRM+WLx48XtpaWleX8POnTsT
|
||||
Y6zk7t27E+23W87hBUHBApdZA09wAKTnKP3W22KZD2dmbab4KY2VhDUHmHzKzy6fHHMkEVB2ArgN
|
||||
l1kEEoFBS4HN7pdJICwsDJcuXSoWz2zsh5/d4GciQqDXBZAopqQTq1rj+3mJapfLG1rLoBjxzDPP
|
||||
vLxu3bopOQgBNWrUKMLf37+csxDIkRguAF+5FQJPNgQCAGYRED9jhnxGHCWfwBD5BIbw+JnHmfWU
|
||||
X+ai49y/oBkA4uEiBIwBJ+OB/Vc8HzpixIg/1ar7vJCyatN+fupcBSEkOEDw94cIBAaVKeOTZcYF
|
||||
SdHzZ6DhlhdeeGHmmjVr3rhz547X/bp27aoEBgb22rhxo8OO8iW8xkyY7fbVtX/5nY2Ks/e3gAn4
|
||||
FvrMPbnJXbA870iAchEgc2bkJDtEI/Dr30Ciyf2h1atXJ7PZPLtwa/3uSN+6iwlBAQxCpmYbDJDP
|
||||
nMlfpoWAJgbFgMcee+yl3377zasQCIJAzZo1uxYeHl7dOY2uYCA3YbZbr0GZhkMkBioE6Zgc9DDE
|
||||
jH0QLCl1GE8KtjuGXLoDeWywkw6g465uzAQGpACYtdvzsampqTs//vjjYhFslXEOpnO8SCYUfd9t
|
||||
bsWAknY9Lies7IHEJUCZtyFV7PUSY+0y1C7s/cjo0aOnbd269e3o6Giv+7Vu3Tq6SpUqPY8ccYxs
|
||||
L1+WJnGTPAuAxxYBNzTg3FDlaUOl31cAKwEAqbdH9tRnnNoiZhwSIOZsTZgjAqBcgK2b4LQ0iumB
|
||||
iSu9Hz5s2LBPv/yyaI4dUni4Mf74xa+UfQcBUQRjCMtuFWRdfnAgYh5/aSlMJrB6taFv3fzrkP49
|
||||
/1a77Pa4NxONHMqRuo1BDAHkeFDlXyCV7FMsBm7uJZ555pkJ69evn5uUlORxH8YYdenSJS08PDzI
|
||||
OU2+6jeUZZh/AeOeWwSsnGwKHj4qsOL8Zc7H03k05ZwdhZCtBTmtSvSYTlKmkZEJLiNV8RagwxfA
|
||||
pTj3x7Zq1Sr50KFDISiCUHi4MXbHgQweeQ1CYABYlgjYiwFlhoYhYiACzzABJUJQ5t3xQaxs2VS1
|
||||
ryEL9wNRaeGAVBIQjIBUCrj+nNrlvO8YNWrU5PDwcK9CAADNmze/WLp06WbO2+XLZcayDPkXgHtu
|
||||
Eejqkjlk2AR3QgAA1tDR4Lo6API4SOgGugNbq8DpiRNFYPN54IqH4TVRFPHvv/8WWYO2tFR5IT9/
|
||||
CWJwEJgk2URA8DC+KwiAKEII8AfuxCPl4PHLeTtbweK+1LrqAHGbz1rigOgbv+wauePZZ5/9YMWK
|
||||
FdOuXbvmdb9HHnmE16tXr+WqVasu2m+Xr1Z4npni5wFWz0IgViOLX5cBARU+99z2tqTBtpIon+gA
|
||||
fhVwZ60oBANf7wEUL+sQVqxY4fM69hXypSuATm+bDslTnUhQLl1Vu/gOuBeD0Mc2khBMpCQQSWWJ
|
||||
VfpcczJXSAwcOHDc9u3bp2RkZHh9ulq2bBkREhJS8aeffnIw3JWjqj3OTEnfQFBElwHDzGDmXKhB
|
||||
1uD+EwMqffObt3OQkvywYL2cv+4hs61DoAsAcxqhEiXgaARw2Is1dXx8/KLBgwefLrgazx+6tk0O
|
||||
MiLiFqstjgGRrVdAruqWlcZlGZAV0rdtskbt8tvjVgwEQ6sR3NC2HTfHteMBvdoJIXGPqV3Q+4HH
|
||||
H398Rnh4+OfXr3uPC9OnTx/+wAMPPPzzzz/ftt8uX6szkaVG/wRK99giUKQ6ZAnoNsC//Px53s6R
|
||||
kvjrQiHjn0/ybZYmAvIJ2CwOnWB6YMgyr0fTyJEjZ6IIE9C29SKhfOnugr8/57diOI+5w5GeTs5i
|
||||
QGYLeFwC59G3OUwWLoTVfD/gwdYvql1+e7RBwSJC7969Xzx06NDCmJgYj/sIgkDt2rW7um/fPhfb
|
||||
fIqqPZCn31oDpHiZPiynmIMeezWgwrwvvJUl9c7cNw0J82cIdCUvT4jbAUQSAHlZpgMTu0+PwIBN
|
||||
l4Ah3wEyd5sXJk2adGj27NltCqP+fcnt51//SyD+IMuKXk1ESkwsyq39rkgb+RXpwt0vDB8+fPrh
|
||||
w4e9CgEAdO3a9XadOnUedt4uX2/5Ok+/vQaU4nmMQN+AW0KHP5GjECSt/Fyf+M0MgV/J/6eCZa5O
|
||||
dFqQBACKDvjlqFshAGAzMlq/fn2nnE5RJDGZ4NoyMN9lZoWHZnSkMn379p2wefPmyZkeitzCGKOe
|
||||
PXsmb9u2rYJzGl1vMYSnnv8ULNlV2rM8EQllrWb/7qMDy873GkYtJe7bqcYbY8YxMcknnwkSMn0c
|
||||
Oo8VCEAUB1YedT0k649r1669xTkv+m+QG3RVKpM16joEMdPQiHNb0MgijtYyUJEBAwa8c/jw4bne
|
||||
hAAAOnTocKlatWqtnLfLNzqP4xlXfwWSvUwf1iNL6OPjAyt8/oO3c6QkLPvYkDDvfSYk+abzyDLd
|
||||
n99wHWhn/sCL37ockS0EoiimdOnSZb9va7vw8OvT/Vsh0J8oLZ3IZAYyzPDv2HaG2uXKCW3MQCUG
|
||||
DBjw/pYtWz4wm81e78HgwYN52bJlQxYuXOhgnEI3/vccT/7na7BU0cUKIEsIhKrEQx4eaCi3aL23
|
||||
cyQn/jw34OaoCRDS82NR4DhmoAfkfwA6k7kOITOFCcDJ20CLuS7HImuv2rVrR124cKFqLs5ZZEl8
|
||||
65MSrFqFhRwYqq9f51P/Lu3eZrlxIasimhiowMMPP/zK8ePH59+6dcvrfh06dDjXsmXL/82bN8/B
|
||||
Flm+2e9JlnboRyjRHrsGXKpJ1qDeE/3LfzHP2zlSY+dO1icsmi7ys/l9GhzEgHNAWWaLimSfL+mA
|
||||
QcuAzSezj8kie6/Lly8/nZycjCZNmvzEGNP87xcSmhgUMo8++uiM8PDwN5OTk73uN2zYMB4SElJj
|
||||
0aJFDpZH8q0Br7LE8DlAInPbIuC26UMe1PFRY/klG72dIyVp5ULjrUkvCnTdFx3G/8RABJQTAD+e
|
||||
GT8xE5EBx1KBrrOAVIvn9Q6NGjUC5xxnzpw5TJmmvMOHD0fbtm0nTZgwYW8B3Zr7nmIjBpaj0x9E
|
||||
zF+vIiVyCAwlQUrqYIS9cNrQeMy5/OdeOPzvf/974d9///0qLi7O4z6iKFLXrl2vlChRovaqVasc
|
||||
nIXTzb6DeNqx1VDcvLyZQkBieW4JHvaqf/n5n3srS/qduW/qEj6fIVCkr56CbDEgAPLWzPiJ9oFU
|
||||
A4Exy0Hf/pO9Kc9n9vPzQ7NmzT4/duzYym3btt3q3LlzpE9Kr1GMxGDLQwQ5FUzyA4iDrCkgQ9lN
|
||||
hl5b+qpdttwwfPjw6Tt27JjsTQgAoG/fvrdr1qzZef78+Q5hxun2k5N44q5ZoJvu+/UcIKkytwQP
|
||||
fMy/7Ode/YinJq38XB8zZZyoRPhyCNkmBgxQEgG+xdFngSACx+8ArWZ7iK6URyRJQuPGjS+cO3eu
|
||||
c3p6enR+8tKwUSzEwLzjiS1CxuVe0AU6bCdFBjNU6KHrseIPtcvojSlTprzy1Vdfzc/JoKh///6J
|
||||
a9euLemcRjFPDOYJ4auAmx7vGMkAgzBWbMC9rvNNiVs8xRjz5geCEO/ru28TAyMg7wBwAw5TioIf
|
||||
qNVnwHFblCSfnnnUqFG7lyxZ0hOAxadXdJ9RPKYWEw8Bgt5lM1PSCfEH1S5djuzYsWN+TgZF3bt3
|
||||
v1S9evW2ztvlmBde4Ul/r8puEXhC8IM10LuNTlrST9MMCfM/EJjPhcAGA3giQJFwcGsmiqBdF4FL
|
||||
MVl7+ZalS5d2EUXxh/zndH9TLIyOWMnWnFIvggk6u0lrIogBhJJhAIrUSlAHjEbjjb/++svrPs88
|
||||
8wwvWbJk488++8zBgQzFjXuWx/78GSg2F68QB5DoMTU5YcVc4/VnJ0A0FVx7UAL4AQB2sRMZAwlB
|
||||
wOztQIq5YM7MOQeA4QDqA2haQFd3z1MsWgb6bsv7MEMJImsaQAqBWwnmBCJ9wOai2kWIjIw0Pvfc
|
||||
cxstFktFb/v16NHjXOXKlavOnTvXQQjk2+Of5gl/LAHFim7dlTnBYIZoSXBrx58a/8VkY+zHEyCZ
|
||||
kJu87goG8GSA4hzcmpGoB34/Auy4kMNZmRFGPUMpP6CcHxB8d17CmpQtW3Z5AVzdfUGxGDMAALrw
|
||||
cz8l8cw6HvkrYCgDrqQ/aqj18hnWeFSRbBaEhYWVTUpKuh0bG+txn+HDh/OwsLDq06ZNc4g3LMeO
|
||||
n8Bif/4MiMmL72EC+cMUPPJIQIUvs60V025/8KUhYfFLDDcKVvolkHwejP4BmPTftGGSDPbATCDG
|
||||
KXpSpSoN0P/Rh9C7/SGUq7wf8JMgijL0AiAQYI0BzAcApAB/nQcW/wOcvJVzMfR6PXbv3n20Xbt2
|
||||
LQrwau9Jio0YFCfCw8PrTZw48eyxY8c87UKVKlW6HBIS0uDMmTMOg14UPWYwTwtfBfl8bl9esvuL
|
||||
QQG4rjysfv+DaDkByXTK1n8v4DvN/EGWVWAsLdNxKgcEEWzcNmDlv0BYdSAsDBjRH+jaHdAH1wZS
|
||||
LwAm2PynONvmiQAMAA5kBl0JAE5HAS+sBk5fB5JzWLXw+uuv15o1a9algr3qewtNDAqATp06rdy7
|
||||
d+8wL7vEAWgPwHH68M6kSTxhzSzwyLyYBTtO1bkzeC3ouywCPBrEf4ctqrIFQGUwpT6w4l+gdj2g
|
||||
SXUgKAC2F9+K/7we5VA2EgB+AuDHAMHfZsG4IwLo963nKM0AUK9evc/PnTunRQXPA8VizKA4MWPG
|
||||
jHaJiYlD4T4sCQmCwBcvXhwJJyGQo18azBPXfApEEgQQmPvj3fyysP2fufnlLp+7/0kgJRwAA1hJ
|
||||
QBoK6PqAjNVAz/YBdagOCgIIaSBYQKDcl41xkNgGJJQFkdV2fK96oJgpID+d5+NKliw57tNPPw1T
|
||||
+3koTmgtAx9TsWLFdgkJCfszMtx7li9VqtTyuLi4p5y3KxfqEZRzee8aqH0PGYjuABQBoD4YKwsw
|
||||
Be5bKPmAxwN8O7LnvyQDMGsv8M4GF/+JBACCIIBzXhuA1lXIJVrLwMfcvHkTnoSgQYMGtHjx4nXO
|
||||
28n89z8wn8trtwBQWwgyS8PKAUInQCgJMBk+FwIAYMEA2cWSls3Ay62B6o4mWtln5pzj888/P6l2
|
||||
9RQnNDHwMR999JHHdfjR0dF/Dhw4cK3zdiXhM79cDPLZdwvy7brcB2SVh0GxDVwWKKKrQ1U/I/BI
|
||||
A891s2LFCj+V66hYoYmBj9m1a5fHtMcec+9XllLXIgeKVmtAjXX5IlyjNsvAWEebTYe6OXz4cKEX
|
||||
szijiYGP+ffffz2mDRo06Ki77SzD6u1OFCUhUK91wm0hPJy2UZ2K2aslXcoiy7JK1VQ8Ufvhuhfx
|
||||
9tV0W9/ySZxkejzgJtUnK/wK4LqYh/QCKyfJmcui/7MvIIEBkh/AJngtT1Gou2KB1jIoApAI52hD
|
||||
zl9gtVG9dUIW2AyU7OuGgd2MLRL1c09QaAuVTKd+qyVaz43hN7ZCSI0kSP7gIQ2ZUGMopFpD3yjq
|
||||
/uEKEhZQE0jPtqpW/cWzo2iURbTFamRWEP5bvMogAtvOez6sYsWKuHnzpmrFLm4U+A0mgMn7Jxyi
|
||||
GxsaQV9Sz3R+lD0sLJsZyWmAIJlZyY6DdJ3mbVa7QnxzyR5xH/U6+dfjiBraBLoi8vK5XktuylJw
|
||||
3QQ/QN4AQjyyBhEZAAh+wP8WAH+6tySgkSNHsqVLlxaFeiwWFGg3Qf794VHW7f05xR1swQKq65kh
|
||||
lCAYACaCIDKS/MGMZcCkIAPF7d5k3fNcjHnzI43UrpT80LBhQ49pH3zwwR5328XgoU2ZsRbPbvze
|
||||
zUuV1XjOjKeYz3ZWkemmMAFESSDcBCA41k2aCbiR6PnYpk2b/qRm2YsbBSYGlo3tJpIpfhEsiWBS
|
||||
IABOsCSDUm9wSrnMkXpFQUYMJ8UEMAHMUBqUHFGGyfHbiYrvWEaPHj08zrjPmjXL43FcEJ6lrJc4
|
||||
Ly+ysyGuAoIAno9XuEi1TkgHKPsBGGwu1ezZeQWI9uJXdvz48VPULn9xokBeOvnAW8NA4hxIgQIT
|
||||
GMGayiEFx1HlATv0Q85K+qGXJf3Qi5LugYn9SCq5nUQDkWImJurBBKm8dVM3hf6dWVftyrkb5s2b
|
||||
59HdkL+/f6dhw4YNdJcm1Tj/AwmYCpQicJCDMDgLhADAACSk2ZyHEAxEYt1U4tiOKj9v58YHvrmL
|
||||
lkGRNGqiOIDu2MYH7NEZgOOXgQwPEeMffPBBfPTRRypfQvGiQG64ZVNnAgAm6EByGhesyePE5vOO
|
||||
sho93Poosx6f14eu/PgORP+2TDSA5HRA0i/QP7J7nNoVlFd69+7d7ujRo39GR0d7EtpDANrAw/ef
|
||||
rj/UB0rqCMV8oD+zEMAggDEm6EhR/CAiALh5Fpj5PdC5TTdlQMed/SFWhVRxZirze2w3EQR+oaIC
|
||||
fjOvUp/fFoEvxwxsZdED8t9gFOFofSgwQCgBlH0ViHNv+Y169ept3Llz5/BKlSql+6hM9zw+FwPz
|
||||
ntGrhKQTg6ALBOQMgGixrt+BMbk51rrxQU5Mz5igAwl66Pyq1GGdv7mgdiXlFZ1O97PVah3uIZmC
|
||||
g4MxevTomX5+fos+/vhjr66+U1IOnElKiqu/f//JUbej+ZLZc3/BtasnULNmnaSmbTs2WbtiydXs
|
||||
jJMXlOK3xsaCIy9C4KuxAV+IwX+CxMBIBOTvM2Mv2OUsGoG3fgNm7/Gc0WuvvTZlzpw5H+azPPcV
|
||||
PhUDurqjpvX0zG0MvBaIADkNaDK1h656r525Od566ssP6fKK95jkB7ImgdUa8b2u4csj1a6kvNKy
|
||||
Zctehw8f3uKuiuz+Zg8++CAOHDgwLzQ0FK1atUJoaCgSExNx8+ZNnD59GgDQrVuvpyPOXyp5/fol
|
||||
gP4bjpg8efLnn3zyicN6feVqjy+QtmNsHpyZ+HJ8wJdiwLgEKJsBFg+bjwS7Ul5OBRpO9+zPoFy5
|
||||
crh9+7ba3Zxih08rzLrv9Y5IPb0HZAFZ05hY90VFrPt0rm0Z6NyyGsrtPRd52lWBcQsQ/AB0nRYW
|
||||
y5v63HPPyd9++62zJz+ffIUHDRqkrF69WscYy34dTJeC6ugU01mQVbgrpyj5Jz9i4ChKAqBcAfge
|
||||
gBkdc5V0wKStwFzPS0Bw7NgxpVmzZsXC2W9RwrcDiLF7AGsKAMagmCH89X5gXg5n9Z6OVG7utEUC
|
||||
YhIo/lheDi9SfPvttyVEUTwExyHAfA/MNWnShK9Zs0ayFwIA0Bn7RkDJlRAUmWlDu/JkkR2RiZ+E
|
||||
g5dlABAE4GoqsPxvz5m1bNmSa0Jwd/hWDDKiQEpGpvutu1zTSpnDw4wBpmJtPZaiKEovACn5zikT
|
||||
g8FA1apVm+68Xb7RbjGSVuTmbhapaUO4m70wAPLfAJJsEZvtCysEAkO+Be6kuc+MMYa0tLRP1L6o
|
||||
4opvxcCvzH/BTthdZp3lZ5sI0JdWsWp8QhyAkKCgoJOSlP+PVb169S5v2LDhPfttFIHSSPiraQ7j
|
||||
BEVy2tCuPDYyuwdwCuMOAIIE/LgPOHLDc6ZVq1ZNW7du3T/QuCt8Kwah7cDEoMycDVDaTV2Xl8NT
|
||||
Ty0tz8o++CgAgBSwEg+oXT8+4eGHH37km2++uRgYGHjXLkBCQ0OVyZMnP+u8XfHrvAUiWuby9VZb
|
||||
BAAvrROyAvwQwPwcU0QGXEgDpm73nrFer3+kXr16G9S+QHUg9s0Jem/EZmVz51+Uzb3XKJsn76HN
|
||||
nx+kyrnNwacPh+Xa9pY49/UuZk0KAhSQ1QLdA1PKsVo9Y3JzPB18u6s1Zs8uJvmBLCkQ6r94Wao7
|
||||
4p5xann06NGWixYtWr5o0SIpODi4ZmJion2yx3uh0+koMDCwb0JCgsPaDbqMajwDVyB5PLowxwZy
|
||||
GkD02kUhHSDvA3AJYE6R9CR/4NVVwOf7PWf+0EMPXd++fXuVQrjOIkf7H6hqw3K4ejUZCNQDOsFW
|
||||
2SYZSDIDzcvizz0X8fCRMcyrzYVPWwb6qg8dFsi6leQMgElgTIb1xuqPc3u8NSNqFxMyiyT5k3x1
|
||||
9cMq1G2B0bx588Nff/11ve+//77Jc88994ogCK8AeAWA1yjCwcHBZ994443TDnUV/3UnRQ467qV7
|
||||
UFRXgbqWVgKUkwDOO0ZuBgDRAHz5p3chqFKlCtWtW/cFtS9MDdoup/bB/vxovAko6QcYRJtRlsiA
|
||||
AB1QIRC4nEQdQ0JpZU55FYwF4qowgn9VMCaCrKkgWJro+x056TwCngXRFMH625b1TNT3hegH4lYg
|
||||
/coC/dCrxc4CMa9MnDhx9A8//LAoh1Dtrl58TmMcE/A53IchU2O2wFvLwHMaA3gCoGzLHC6yHydg
|
||||
wIlEoNeXQEyq5xO3aNFi25EjR3oV4rUWDYhYz9WclzTaPqBWhZBsZZRqBmcMKGEkMUAHiIzByoE7
|
||||
JuXS7mFSLU/ZFcjaBFb9qUXgZiLOwSQ/MBL+tR6cGGE59pGDkQyd/aaRZXuf8dZ9txQIUl8IRpBi
|
||||
AeNWLtSZEK52XRcG33zzTTdvQtCjRw+30YWZFPy5h7tX1KYNPbdQGEAMUP767//ZSQxg/sAHG70L
|
||||
QZcuXfh9KQQAhm9ERrDe1iewchAD/fZee7z/15NM2v8Ek3rWoLk6geLMsq3rUNIghj22gTx+YAtE
|
||||
DKTI0y+B2NdMSSECA9OHAHFHauPGjnmWX8IuWlZUuWhZUeWi9exXO2FJmseSIsAkfxApADdzSQqp
|
||||
IzV9NUcvocWd9evXn0pPT/cYealTp0588ODBM5y3WyNwAdxluV6Rtx9wQQLkDbBNIzq1cER/YPBi
|
||||
YOMZzycoWbIkr1GjRk+1L1QNvjlBbyRYoNcJgEUBGOFACUF4vGNFlt0tH9dcnFgxQGhKsFlr6gWg
|
||||
UjC9P2UKuX3vC8Q4gw1dpQB4Sd7ySBmijEHgVoDpGJgAFlTDYUCQABBXADmNmK5kmiT4Pc4e2XrP
|
||||
B74YO3ZsvQEDBtQi8vzhjIyMfHnMmDHn7Lcp14fNRfIvtZzuXFG2H3C/gwQoRwEku59GXP4PsOG0
|
||||
13OgcePGXy1durRIRuEuaPZe46UCJcYYY0ixAu+3w64OlV0HCD/tyq4vPEoHd11DW70IXE1mpQLa
|
||||
QIabhkCB+g2QHtkyhAVU64mA6pdgilZgTQZxC4i4rRWgmABzAqCkKkwX/L5UpcfD7JGtG9Wu6MJg
|
||||
/fr1I2ALLeqWAQMGKFFRUV/bb6PI6uWRvrW/010r+vYDzkiAchWg07a/nYUgNgN4e6P3WIqDBw9W
|
||||
li5dukDl61WNK0m2QUIAyJCBDpXZe572/eEMpmRFnUo0A9dS3VdsgZtt6rp8vwNAbbq2tZUce2Ip
|
||||
bvwOnnIREPzBSjQCazAUurAhmQYF2/N1ruLC9OnTO8+ePfsN8tAsCA0Nxbp164wuCRlXGoGhGkS3
|
||||
/fCiNnvgvjwiQHEAtgMsEC7mxvEEVP0AsHq5msDAwFurV6+usnr16oIO3VJkCTQIRLA9QJII/HmD
|
||||
qnasxK6527dJKVSNtdiiYxslQroHD/KFZsPNqvY6BMDJiugcgFWFVYQiw/79+8Pj4+PdpjHGqG3b
|
||||
tmvatGnDp06dmr1dvjP3RR776pceZg+KBwIAE6DsBRAAl5mDZAaMWuZdCIKCguj555+fNWfOnPtW
|
||||
CACgY0XQP9GMdCJYiB4Iv4olAHq42zfQiEWJVltLq1ogozTZfatN7WblfccXX3yxety4cYM8pTPG
|
||||
rhBRDfttRGD8LDZCwiP2u6p9LXD9+nsuEwPICCgrAWTA4TPEYAu3/vkfwMRN3s/32muvXZgzZ06x
|
||||
9ILla9r/RBmVA8koCrapw0pBGDS3KzYwxmQA+OYw6S6l4GREIuoE6ACzAtxKxSv7n2Buu1fF1tdg
|
||||
ceTpp5+u9P7779f2ts/IkSMXu2yMrNEdgn9vtcvvRJ4GLYkD8hYAaXAJkybogK935ywE5cqVW68J
|
||||
wX+0Lo956TLjRLap2KvJfM30v3G79Y80se2PNPF8ClkuJFFdPx2gcCDdQvEtyuK4p/yKwtflvsFo
|
||||
NHayWq17FMV9C3f06NHK4sWLXbpu8nlEM0I5u7ul9n1zJwSeDYuMNlNjupDpvszJP8Gqs8DTP9im
|
||||
yLywH7ZmcAY0sum4giaXNND0AL2tUhX67+YIAAQBxDkQZwLSFVTe/xjzuBRYaxkUIuXKlfMoBKVL
|
||||
l6bY2FiX7oN8Z+pppmQLQVGZMch1WUgA5EMAnXUVAlEH/HUHGP2TdyFo0KAB9u/f/wc0IXBhYTcc
|
||||
Mej5OpmDTAoIINgCEYA4QKkWQOZ0e1Rjvs6bEACaGBQaVatW/ebq1ase0+vVq3dkwYIFDhb41vip
|
||||
fRE/t6p94BCVydOMBUkAPw3QCVc/hpII7IkCBnwJpJi956PT6fDWW291WLhw4R/I/OCpXRFFhUbl
|
||||
2PZf+0oDSxvQrX5p7BMA5VY6lHgTKeX8oRgkPNOwPOs5vJ44KKe8isIDds+zcuXKkW+++eZ3nsQg
|
||||
ODiYkpOTXR5w65nQjwQh8d0i8OjnZnzAoZvARYBuAvyPzFWI9i0CEYjmNiE4fD3vZenQoQP+/vvv
|
||||
5l26dInZsWNHsfaAU5RQ/zG7D9iwYcMz3loFDz744Afutgui7t0iINd5t24UAIrMFAJn60IBiDEB
|
||||
Ty66KyEAAOzbtw9Wq/XosWPHtr/xxhvfqF1BBQURWNavMM6niUEB8+uvv/qtWLGis6f0Nm3aWB9+
|
||||
+GEXYwvlanOLLdqoakW/O+9IIsCTAPors0Vg94QJDDAJwMifgD2RucrNXXmyysJiY2Mbfvrpp8+H
|
||||
hYX9gXvsWaaEY9Wtf03n1iWNuHXPu5yiD7Uu6HPeUxVYFNm0aZNXxy4VKlT47tVXXz1rv816pXxX
|
||||
JB/NrZfjguDu1jqIAL8F8K1wkQ/GAEUExv4C/H4+1zm6K48Lly5d6qbT6ZaoVlsFgPXcjkhc3QEW
|
||||
Uh2I/gvWi1v+znemOaCJQQGybt26N3755Rd/T+miKOLRRx99y3m7kBLTBxLEItBFyJsQxAM8a+G5
|
||||
05Ml6IB+3wI/HMlzGXIlTFardUSnTp32qVlZPuXsCjB9ECBKYLpA4GLBe3PTxKCA2LJli+G9995r
|
||||
Yzab3dYxYwybN29eM3LkyET77XTJWBU6YaIKd+buXboLAKUCfBfgEM0p0xhG9ANeWQdsz1uLIM/d
|
||||
lBMnTrR/6623Xin0misAWNXunKzpIEUGyRlgldrxgj6n5l++gFiwYEGJ5OTkgZ7SBwwYoERHRz/p
|
||||
vJ2kgF9giSs+8zxCZovgDyBrYSxlhoZnZBtA7LcY2OLkl0BgABiDXm9Eq8YZaN0YaPUAUK4aIJQE
|
||||
IQPAQYBSwJLigfUngDWngGQv05CJiYn4+++/xwH4XO1qyS9S/f4DZEFYQ1d3glXqAKn2I88BXxTo
|
||||
OYvLI1fsWL16NQ0ePNhtmk6n4w0bNnzr+PHjDjHa6VbjGjzmxGU4zckXMHfvC0EAuDkzDFoaiAQw
|
||||
JtoMjaADpKrA6+uAVXuAkCBA7w9UKgc81AHo2Q6o3RQgfwBWACaAmUGwAOAAMTD4AXwLwO4ALMB2
|
||||
ysm/Ad8eAOK9mB/t2bOneefOnYtvBB6V0MSggMi0KHSXRH5+fgnbtm3r0rlz55P2CTyi7DqimP6F
|
||||
2EXIl1MUnpDpsswICGVBLBQMgZmuzgMAWQLCDwFVywFVywABwZknVGATANeltC6+ECgNkDfbuhtg
|
||||
NuOlDSeAIcsyWyBumDz5bXzyyXTt2c4jWoUVABMnTlz52WefObszy350V69efW7w4MENHBKjn+3K
|
||||
U3fuAl3N1Tl8QP5dpImwhUDjABQQ5LvOy7Mo6QF5PWxxqTIXOElBQJtPgcNRXvPUnu08og0g+pjw
|
||||
8PDKmzZtqu+0Ofthr1+/PjkLAQBwLjwBudCFIH8osK0WMMPdV/5uyuL2BSYnNy88DdiRwzDhoUOH
|
||||
ekAjT2hi4GNmz55dNTU1tbGHZBYbGzvabUrGz6MK4W4UxTBr2XXjdgcrgAQ4PKmcAyGlbXECPJGc
|
||||
nFzUlnwXeTQx8DGlSpXqdvPmTcDNVF3VqlVpzJgxic7HWOPefRimtDyd5y4oqk5TvZaH4gCmOO4h
|
||||
MMCS4X0QsVu3bhPUvsDihiYGPubGjRsfekpLSkr6d8yYMbtdEhJ/mJVD4NT8UpSEIPetEx3Ar7gO
|
||||
FDI9sPh3la/iHkQTAx+zc+dOjw/76NGj/65SpYqr88OMqIJ6RYtdtyAbASAFoHOuAb0zAEzw4kP7
|
||||
qaeeKmrOYYsFmhgUHC4P++zZs93GA2R+KGjfxmqLAJDH1glngLwpc0rRDlEElh60ufHyxJAhQ55R
|
||||
+2KLI5oY+B6PX+CYmJhAtwcEvZYIBbYpuvxz92bFBUOeWyckADwCtoFDuyXQDEASA3484PnYOnXq
|
||||
pPXr1+9Hla+5WKKJgY8pXbq0x7Tw8PDN7raLZed0hKE6zyEyYc4Uvcbx3flCyADoJGxCYIfoB8zb
|
||||
Dhzy4AdBEATcunXrbbUvuriiiYGP6dzZo+sCjBgxwmOaYMBAxvTc4bueGxz3JygAFAYoqrcI7g4R
|
||||
UDYBMDt2EQQJ2HoG+NhLMLUKFSpQeHh4gS/ouVfRxMDHtGzZcpuntKCgoE7Tp0+f5y6NVb3yGyvz
|
||||
xkSSpbWEYE4c3PZiw9Z9sP8BIJ3NxyAYOImlOXTNE7kVy1nQA8tZxQWHIYSqWQ0ujkhydZAAWP8E
|
||||
mMkxPDsTgJvpwOSN3jWycuXKc1q0aHHfhlzLL8Xz61GEeeCBB9pFRUXtT0pKcpteuXJlDB06dONn
|
||||
n33WH25GCejUED10/zaF9Tyo9Oj9MO0B4+cBHaAElpFIagigJX5Yfg1/HojD9x/sbAPpQaDc8xnM
|
||||
MPIkAMhnMIExzC3k6EtZL//dTWPqAfkMQIccvSgzBghBwEPzgV0XPB/erVs3ZefOndoq3HygiYGP
|
||||
OXHiRKOxY8fu3Lt3b2lv+7Vv3x4nTpzoXKVKFcuTTz6Jtm3bonLlyrBYLMdMJlOzyMhI7Nu3D+Hh
|
||||
4Thx4gQAYNLkxQdW/vQdrl+zjaD9+uua40OHDmpuny8RGL9cWYF8vfjcXcnmM1HZBcAfDkKg6IDX
|
||||
1wMLvLstSQTQB8Bfal9Kcaa4PC7FiqCgoPYpKSl/5mbf0NBQVKtWDWXKlIGfnx927969vn379v3T
|
||||
0tJw584dxMTEwF1cxkaNGlHHjh3rLly48KL9diV+6nLcnvJ4sYnJKAH8BsB3w9ZptRMCyQgs+QsY
|
||||
vx5It3rOYsiQIb+vWrWql9qXUtzRxKCAGDVqVMySJUtKw/d1TABgMBi+MJvN4x0S6N8AfqZJKkQU
|
||||
5mjQ3Vs3ijbDIuVn29/2ZRb1wNmbQKPPvGdRunTpuNjY2NLQyDfaAGIBsWnTphpBQUF74NsJv+y8
|
||||
Ro8evcU5kd+ZMwNAYd1VZ/uBvCEAPBZQfoXLEKOoA3acB5rO855FkyZN+BNPPNG+UK72PkBrGRQs
|
||||
xqpVq0Zfu3Yt1Ad5ZQtBixYt2JEjR1zunXICC6DHy4UoBkBuYi06I9gCsSqrYZstseseiDrgpgmo
|
||||
96H3rgEALFiwYNHLL7/8ImNMm070AVrLoGAxXbt2rUTv3r2/F0UxNh/5OFjwLVmy5HuXHa63rgO/
|
||||
8oUhBPlvESRnCkGmz8SsXAQR+OsGUGuKdyHQ6/W8d+/eP4wdO3aMJgS+QxODQmDz5s0jRVHsNHXq
|
||||
VNnf3z+vbkAcuhldunRRmjZtOtJ5Jx4wZBWstwr6UvK3+jHTupDvhK1FYGdLIErAySRg6BLA4v31
|
||||
JlEU527evHlEQV/s/YbWTVCBadOm7Z01axYSExNRq1atDklJSUhPT4eiKLBarSwzUrPLiycIAgUH
|
||||
B7+amJg43zlP+RyIFdxKhDzHWnRBsPkzVDbD1iKwswgQJeB0CtBpFpBkyrEcqwEMLZCrvM/RxEBl
|
||||
Fi1aNHTv3r2IiIhAcnIyatas+cvWrVvdvnyiKN7u1atXx02bNjmY39CN9m/xxP2fONvy+5B8iQEJ
|
||||
NiclfBdsjlCdWgT7bgCPLQWik3MsxywAbxTYVd7naGJQhPjpp59KPPHEE3GZ/3W5N1WqVLkUFRVV
|
||||
y34bXRhnUCxfbWWS3LUA7mZexgbcigEXATIBtBq2Tqmd/YOoA25bgRrv5tg1QPfu3U0LFy58tE6d
|
||||
Ott9fpUaALQxgyLF2rVrs+IFun35Zs+ePdt5m2w43xVSaEEKwd1nIAIUBdAa2J40ezsCHbDjIlD9
|
||||
vZyFYMCAAconn3zyrCYEBYvWMiharAPQ311Cly5d5N27d7t0BOgMHlEYNjPfWhzezUChY8tAB/Db
|
||||
gLLV9rf9eIaoB6ITgJozAKviPdNevXrxV199tc1DDz102KdXqOGC1jIoIjRv3vx/ISEh/d2lCYKA
|
||||
AwcOuE3jUtnNzHd30Sdu0kgAlLO2pchMl+m2LCsnCdh4CqgyLWch6NmzJ580adIITQgKB00Migjt
|
||||
27f/2tNKx9q1a/M5c+a4NNuV+JnrYY3JMe9c4hunqUZAOQnwQ5nu3IT/MpT8gTXHgKd/zjmbIUOG
|
||||
KK+//nrbbt26aV6LCgmtm1BEEASBOHffea5QocK26Ohol4U41jM4LwionU9J940IMBABTDkM0ClH
|
||||
IQAAs2hbdPTqbznmxLt27WqeOXPmyNatW/+Sv1rVyAtay6AI0K9fvzmehAAAevXqNc15G12r+7AA
|
||||
qbwP7+BdCwExAHpA2QPgPMD8kf1kCQIgBgFvbwImb845KwCzv/7668GaEBQ+WstAZZYtWxbw7LPP
|
||||
HpFlua679Lp161JERITLK6+cCX0PQuKH+RCD/MdahE0ISAH4RhDSwBwcmDIgXQL6LgT+jMxVWX4F
|
||||
MNw3NauRV7SWgcqsWLHiCaPRWNdT+rBhw+a42076Uh/m4zX2zUpKEaB0QPkdtmAGdkIgiEAGAf2+
|
||||
yVEIAJvHp7nQhEBVNDFQmQcffPDz1NRUt2n169dXbt26tcR5OxEEWC7d7Sl9M0YgAjw+cwlyEmzm
|
||||
xVlThyJgUoBy7wN7L+aYE4WGhn4PYJIPqlMjH2jdBJUJDQ2lxMREt2nBwcFfJScnv+S8XblYmkOO
|
||||
ZXch5T7pGkAHKFcA/hfACFmfFALARAPwdxTw/M/A6dveyxIcHMwrVKjwfURExHO+rleNvKO1DFRk
|
||||
zJgx/3gSAgD44osvXGbilatBb8ASm9fXOX/Lju0z0gHyUYDvha1xb29VaARWHAP6L85ZCIxGI3Xr
|
||||
1m1+RETE876sU427R2sZqMTOnTvDunfvfpqIDO7Sa9SowSMjIx3sCikSRm7CcjAMyoOM+2rqEMQA
|
||||
5TiAkwD0drkxQDSC5u8He++3HJ2SUPXq1em1115bNW7cOG2MoAihtQxUYsmSJaMFQTB4Sh8+fPgQ
|
||||
l40yKgEYlIdX2jdBVwWAWwFlh82GwGGgkNnWGTzzE/DWWq9CQAAoLCxMmTZt2ixNCIoeWstABYYM
|
||||
GSJu27ZtQUpKittArA0bNowrU6ZM+d27dzs4QlEiwwjmS7mRcN+FYBcATpl+CJJs5sVZiAKQIgAT
|
||||
fwGWHvHqzyCrm3ITQJUCr2CNu0ILOqECZrO5XLly5V5ISUlxm3769OnpsLkAyUaOmTwKMZ8gFz4L
|
||||
fCYEJAIUDSj7AZgyg5tkIkrAv7HAO78B2yJyLk9ISMihpKSkfgVZrxr5Q+smqMCOHTvEixfdz7mF
|
||||
hobSrFmzXM0R42b0t3cKkgvyPWPAbwN8B8CsjlGORB0QkQ70/Sp3QtCrVy85KSmpPQCfLaTQ8D2a
|
||||
GKjA8OHDr3lKs1qt115//fV59tvoepfKjPyq5RAYxWdh2IllLjbaClvb0T64iQSsPQ20/Bi4meI5
|
||||
CwCk1+tpxIgRB1u3bh0Mm9dDjSKM1k0oZIhIMBg8jhvinXfesb79tmNUcTn5UH3GzI28vOG+sShk
|
||||
APxsYc4oEmBG/DdQCEAIBL7dDYzfAJhyduuqbNy4MT4uLq7f448/bspxbw3V0QYQC5k//vhjdffu
|
||||
3Qd52cXlntClZm9xy7FP3LQMfDc+IABktoU5o9sAM8BhjUE8AfN3AJ+Ee84i6w9RFBMURRkEYHdh
|
||||
1KmGb9C6CYXMRx99lNWcd/m1bt3a7ReeC9HTIbg9xh66qx8DMR0IJhDfDkIciBkytzOQKIGsRtAz
|
||||
P4Bm7vaaFwCgdu3aSkhISF9oQlDs0MSgkNmzZ09Wn97lN2DAgJvujqG0W877ZsHy+yMBTL4FJv8M
|
||||
hhQwiGBgtjQmgN1OBwudCPZ7BBgnt3lk06pVq+Q+ffo0j4+P16IhF0M0MShEduzYUbNOnTpNPKVP
|
||||
njz5ZedtlPrrWwzIeu18ZlYMwOaDIMLmwpz5wXGxkRH4KwrougCweh6RyEqh1157TXn77beHzp07
|
||||
92Th16yGL9DEoBA5cOBAJVEUa7lLK126NPr27euynUxHny6Iu0Q6QPkToAOwvdJ255D8gJ8OA10W
|
||||
AOc9B4Uju3+nBgYGGgYMGKB5Ly7GaGJQiKxfvx7R0dFu08qWLUtDhw51/Qan/Q678QK3zfM8kemM
|
||||
RNkD0CXbjEGWQ1XGAMEIvLUVeGGVxymK7NZJ2bJlqVKlSjMBfDh16lQt5mExRxODQuTo0aPwtEox
|
||||
MjLyYOPGjXc6byc67buQ7gLATYC8EaCrcFhjIDJbwJNOnwNzdgAZOURArlChAj3xxBNv3Lhx4+2c
|
||||
TqtRPNDsDIoIGRkZGU2aNElz3k6KDEb5nDYEbM5IEjNDnJkc1xgIOuBqGjDhF+DAFe/ZZLJ/9erV
|
||||
h9q3bz8HGvcMmhgUcQSpLCNLPqMrSwCPAOhQZjAT+xBneuD3SGDSKuCsZ2PhbCEwGAzhZrN5UPv2
|
||||
7RPVrhsN36J1E4o6+i42JyJ3CYkAPwfwA7CJgN36BklnE4Jhiz0KQfb4gNFoRMuWLc+bzeZuABLV
|
||||
rhYN36OJQVEn+HGZ3JkY5QQDiAD5T4AfBJidMxIBgCIBs3cDvb8EUi3es9Lr9RgxYsTWjh07NlO7
|
||||
OjQKDq2bUDTw+LoLAf0ayydyLwUE2N52PSCvAZCcucYgKz8GUDDwzs/A3H3es8lEPnfuXFLNmjV7
|
||||
q11JGgWL1jIoRCRJAmOuSw8AoFKlSlUOHz4c5u44IaSRkuuuggjwOED5BWBJTj4IROB8GtD/i9wJ
|
||||
QVBQ0C0A7WvWrFlG7brTKHg0MShEGjdujJCQELdpfn5+dfbu3fuAuzRuSn82V20DHUB3AL4dIBMc
|
||||
pw51gEkAHl4AbDnnMYfss7Rp00YOCQlpBeCQ2vWmUThoYlCIjBgxAtWqVXNe4MMAsKioKMydO9ft
|
||||
FKIY2vhfYiVvgcOzJZAIyGcBZYNtxoDZDRQyHbA/Egh8HYhKdH+4Xc40YMCAG0OGDGl6/fr1G2rX
|
||||
mUbhoYlBIdKoUaOTN2/edNtAN5vN6Nu37xR3aazcun/FEsMOwo0PAZsXEUA5ANBhgAXAIfKxGAB8
|
||||
9w8w+AePxbKXFw7gsQkTJjwyadKkM2rXl0bhovkzKGTKly//661btwbDTd3r9Xrs3LmzbseOHc+7
|
||||
O1a5KJ0lq1wXDIxleh/i3OaDADfh6L4cgFkHvLcZmL/bbVEcfCEYDAYFwGtms3m+2nWkoQ5ay6CQ
|
||||
efrppxfDgwhbLBbMmTPH42IfQZZbc+APRiCItnEB5Q+AbsFBCJhosyp8chnw5d4ci8Rq1aqlNGjQ
|
||||
YIwmBBoahUzp0qWzev8uv4CAABoxYsSb3o5XrpZPsf4jcPN74KapINPHIPM0kHk6SJ4JSvgEVCXE
|
||||
oxMSbv+rUaOGvGzZshFq14mGxn3JvHnzvoQX70NNmzalRYsWvQkv3Tjzmh4zTfN0d8zvQja9DzJ/
|
||||
CJJngf6ZBHqwau6EAMCKkydPTlC7PjQ07luWLFlSsWfPnjK8CELJkiVp4MCB07p06eLRMCxtGyrI
|
||||
e59/UtlRx0w/wLzieVCoMVdCQCVKlNgIwAANDQ11KVGixJOMMa+CAIAGDx5MZcuWHbhs2bKBcOO2
|
||||
bMeOHQMrV6480BBY6mX/0PI5CQGVKFGCd+jQYbPa16+hoWHH1KlTk5ALp6V6vZ7q169PAHYZjcZd
|
||||
tWrV2mU0GncB2NWkSRMyGAy5ag3o9Xo+bdq0n8aNG6e1CDQ0ihqNGjW6whjzOKCYj5/z+MDVqKio
|
||||
v9W+Xg0NDQ+0bNmybvny5a+g4ISAypYtew1APbWvVUNDIxf07NkzVRCE/LYQHERAEATerVu3VLWv
|
||||
TaN4oBkdFRGefvrpxs2aNZsREBBwtzEJnaMrKc8+++z5gQMHNlX72jQ0NO6C8ePHtxo6dKhZkqS8
|
||||
thI4AC4IAm/VqpW5Z8+erbdt21ZS7evR0NDIJ+fPn18eFha2sl27dgnly5dXGGMKbJGMFdhefAWA
|
||||
IgiCXKlSJbldu3aJVatWXblr164VapddQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0ND
|
||||
Q0NDQ0NDQ+N+4f8b0XUeYz3o+wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMy0zMFQwMjo1Nzoz
|
||||
NyswODowME69txAAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDMtMzBUMDI6NTc6MzcrMDg6MDA/
|
||||
4A+sAAAAAElFTkSuQmCC" />
|
||||
</svg>
|
||||
1
Template/src/assets/js/.pydio
Normal file
1
Template/src/assets/js/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
604b8161-e8a1-404b-bcda-22fd81c1c345
|
||||
3
Template/src/assets/js/demo.js
Executable file
3
Template/src/assets/js/demo.js
Executable file
@@ -0,0 +1,3 @@
|
||||
function demo(){
|
||||
alert('index.jade 组件独有的js')
|
||||
}
|
||||
8829
Template/src/assets/js/jquery.js
vendored
Executable file
8829
Template/src/assets/js/jquery.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
1
Template/src/view/.pydio
Normal file
1
Template/src/view/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
1263e9c9-5d9f-4cbe-99b9-2cb359cb43dd
|
||||
26
Template/src/view/layout.jade
Executable file
26
Template/src/view/layout.jade
Executable file
@@ -0,0 +1,26 @@
|
||||
//- 网站的核心的公共父级组件
|
||||
//- 一些全局公共css和js可以在这里被加载
|
||||
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(charset="utf-8")
|
||||
meta(http-equiv="X-UA-Compatible" content="IE=edge")
|
||||
meta(name="viewport" content="width=device-width, initial-scale=1")
|
||||
meta(name="renderer" content="webkit")
|
||||
meta(http-equiv="Cache-Control" content="no-siteapp")
|
||||
link(rel='stylesheet', href='css/page/main.css')
|
||||
script(src="js/jquery.js")
|
||||
|
||||
block title
|
||||
|
||||
body
|
||||
|
||||
//- 公共网站头部
|
||||
include ./public/header
|
||||
|
||||
//- 网站主体内容,从 main/*.jade 被载入
|
||||
block content
|
||||
|
||||
//- 公共网站版权
|
||||
include ./public/footer
|
||||
1
Template/src/view/main/.pydio
Normal file
1
Template/src/view/main/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
7a449871-eada-4915-9eb2-b525abb5539a
|
||||
5
Template/src/view/main/README.md
Executable file
5
Template/src/view/main/README.md
Executable file
@@ -0,0 +1,5 @@
|
||||
# 帮助信息,该文件可删除
|
||||
|
||||
---
|
||||
|
||||
## 存放网站主体页面组件,例如首页,关于我,联系我们等主要页面内容
|
||||
17
Template/src/view/main/index.jade
Executable file
17
Template/src/view/main/index.jade
Executable file
@@ -0,0 +1,17 @@
|
||||
extends ./../layout
|
||||
|
||||
//- 网站的头部信息这边拆分出来,便于每个页面的SEO配置和配置页面独有的css,js
|
||||
block title
|
||||
|
||||
|
||||
title 首页
|
||||
//- 组件独有的js文件,测试案例
|
||||
script(src="js/demo.js")
|
||||
|
||||
|
||||
//- 网站的主体内容区域
|
||||
block content
|
||||
|
||||
.index
|
||||
h1 默认首页de
|
||||
p(onclick="demo()") 通过gulp编译后的html页面,点我触发事件
|
||||
1
Template/src/view/public/.pydio
Normal file
1
Template/src/view/public/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
28f8706c-c280-4197-92ec-243f6f7a0f92
|
||||
5
Template/src/view/public/README.md
Executable file
5
Template/src/view/public/README.md
Executable file
@@ -0,0 +1,5 @@
|
||||
# 帮助信息,该文件可删除
|
||||
|
||||
---
|
||||
|
||||
## 存放网站公共组件,例如swiper轮播,公共导航等
|
||||
3
Template/src/view/public/footer.jade
Executable file
3
Template/src/view/public/footer.jade
Executable file
@@ -0,0 +1,3 @@
|
||||
.footer
|
||||
h3 公共版权
|
||||
|
||||
2
Template/src/view/public/header.jade
Executable file
2
Template/src/view/public/header.jade
Executable file
@@ -0,0 +1,2 @@
|
||||
.header
|
||||
h3 公共头部
|
||||
1
Template/utils/.pydio
Normal file
1
Template/utils/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
89da04c5-c300-4477-ab98-827d25b9deb7
|
||||
119
Template/utils/index.js
Executable file
119
Template/utils/index.js
Executable file
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* 全局公共函数
|
||||
*/
|
||||
|
||||
// 自动打开浏览器
|
||||
const open = require("open");
|
||||
// 配置信息
|
||||
const config = require("./../config");
|
||||
// 终端输出颜色
|
||||
const clc = require("cli-color");
|
||||
// 文件操作
|
||||
const fs = require("fs");
|
||||
// 路径操作
|
||||
const path = require("path");
|
||||
// 获取文件基准地址
|
||||
const Base = path.resolve(__dirname, "../dist");
|
||||
|
||||
/**
|
||||
* 返回完整的网址
|
||||
*/
|
||||
const URL = () =>
|
||||
`${config.nodeService.host}${config.nodeService.port}/${
|
||||
config.nodeService.default
|
||||
}`;
|
||||
|
||||
/**
|
||||
* open 模块: 自动打开浏览器
|
||||
* 模块地址:https://github.com/pwnall/node-open
|
||||
*/
|
||||
const OpenBrowser = () => {
|
||||
Notice(`${config.nodeService.log}${URL()}`);
|
||||
config.nodeService.isOpenBrowser ? open(URL()) : "";
|
||||
};
|
||||
|
||||
/**
|
||||
* cli-color 模块:设置终端运行信息的颜色
|
||||
* @param {*string} log 需要log的信息
|
||||
* 模块地址: https://github.com/medikoo/cli-color
|
||||
*/
|
||||
const Notice = log => {
|
||||
// 终端输入运行的颜色
|
||||
let notice = clc.greenBright.bold;
|
||||
console.log(notice(log));
|
||||
};
|
||||
|
||||
/**
|
||||
* 当前端从src源码中删除某文件(jade,js,img,css)的时候,那么删除对应dist/中编译后文件
|
||||
* 这里我的思路有点乱,代码等待改进
|
||||
* @param {*string} filename
|
||||
*/
|
||||
const RemoveFile = filename => {
|
||||
if (SearchKey(filename, "jade")) {
|
||||
deleteFile(ReturnFullUrl(ReturnFileName(filename, "jade"), "html"));
|
||||
} else if (SearchKey(filename, "js")) {
|
||||
deleteFile(ReturnFullUrl(ReturnFileName(filename, "js"), "js"));
|
||||
} else if (SearchKey(filename, "styl") || SearchKey(filename, "mp3")) {
|
||||
Notice("忽略该文件...");
|
||||
} else if (SearchKey(filename, "css")) {
|
||||
deleteFile(ReturnFullUrl(ReturnFileName(filename, ".css"), "css"));
|
||||
} else if (SearchKey(filename, "woff2")) {
|
||||
deleteFile(ReturnFullUrl(ReturnFileName(filename, ".woff2"), "woff2"));
|
||||
} else if (SearchKey(filename, "ttf")) {
|
||||
deleteFile(ReturnFullUrl(ReturnFileName(filename, ".ttf"), "ttf"));
|
||||
} else {
|
||||
deleteFile(`${Base}/img/${filename}`);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 返回对应文件类型的 文件地址
|
||||
* @param {*string} name 需要删除的文件名称
|
||||
* @param {*string} type 需要删除的文件类型
|
||||
*/
|
||||
const ReturnFullUrl = (name, type) => {
|
||||
switch (type) {
|
||||
case "html":
|
||||
return `${Base}/${name}${type}`;
|
||||
break;
|
||||
case "js":
|
||||
return `${Base}/js/${name}${type}`;
|
||||
break;
|
||||
case "css":
|
||||
return `${Base}/css/public/${name}.${type}`;
|
||||
break;
|
||||
case "woff2":
|
||||
return `${Base}/font/${name}.${type}`;
|
||||
break;
|
||||
case "ttf":
|
||||
return `${Base}/font/${name}.${type}`;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 返回的文件名称,例如 index.jade,返回 index
|
||||
* @param {*string} file 文件完整名称
|
||||
* @param {*string} plug 需要检测的文件后缀
|
||||
*/
|
||||
const ReturnFileName = (file, plug) => file.replace(plug, "");
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
* @param {*string} path 文件路径
|
||||
*/
|
||||
const deleteFile = path =>
|
||||
fs.unlink(
|
||||
path,
|
||||
err => (err ? console.error(err) : Notice(`${path} 对应文件已删除...`))
|
||||
);
|
||||
|
||||
/**
|
||||
* 检索字符串中是否有匹配的字符
|
||||
* @param {*string} key 需要检索的字符串
|
||||
*/
|
||||
const SearchKey = (par, key) => (par.indexOf(key) != -1 ? true : false);
|
||||
|
||||
module.exports = { OpenBrowser, RemoveFile };
|
||||
1
whtml-cli/.git-credentials
Executable file
1
whtml-cli/.git-credentials
Executable file
@@ -0,0 +1 @@
|
||||
https://{www.2271608011@qq.com}:{!@#$%&*()cvb<??>}@github.com
|
||||
1
whtml-cli/.pydio
Normal file
1
whtml-cli/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
d23c6218-3bc9-48e7-bb9e-93f1b8ca1420
|
||||
77
whtml-cli/README.md
Executable file
77
whtml-cli/README.md
Executable file
@@ -0,0 +1,77 @@
|
||||
|
||||
## WHtml-cli
|
||||
|
||||
框架[WHtml](https://github.com/helpcode/Whtml)的官方cli脚手架工具,让你更加快速的创建项目,感受编码的乐趣。
|
||||
|
||||
## 安装
|
||||
|
||||
一行命令解决一切
|
||||
|
||||
> npm install -g whtml-cli
|
||||
|
||||
|
||||
## 使用
|
||||
|
||||
你只需要简单的输入以下几条命令即可愉快运行网站:
|
||||
|
||||
```js
|
||||
$ whtml init project # 创建项目 project 为你项目名字(自定义)
|
||||
$ cd project # 进入文件
|
||||
$ npm install # 解决依赖
|
||||
|
||||
# 提供的命令
|
||||
|
||||
$ npm run all # 运行网站
|
||||
$ npm run doc # 运行帮助手册
|
||||
$ npm run push # 快速发布至Github,仅限Linux
|
||||
```
|
||||
|
||||
## 开源
|
||||
|
||||
框架的源代码已经提交`Github`,你可以从`Github`了解更多的信息:
|
||||
|
||||
- 1: [Whtml 源码](https://github.com/helpcode/Whtml)
|
||||
|
||||
- 2: [Whtml 文档](https://helpcode.github.io/Whtml/#/)
|
||||
|
||||
|
||||
## 特性
|
||||
|
||||
`WHtml`能够让你获得以下更加爽快的体验:
|
||||
|
||||
---
|
||||
|
||||
- 1: 将静态页面组件化模块化,降低重复代码的重复编写。
|
||||
|
||||
- 2: 基于Node.js + Gulp 自动化构建项目,让前端的你无缝对接
|
||||
|
||||
- 3: 采用jade + stylus,用更加简洁高效的方式去书写html和css
|
||||
|
||||
- 4: 自动压缩合并编译html,css,JavaScript使的项目具备更加优秀的响应速度
|
||||
|
||||
- 5: 更加自由的框架配置和详细的中文代码注释,一键轻松配置源码实现定制化
|
||||
|
||||
- 6: 简洁明了的ES6+语法,代码赏心悦目,提升编码乐趣。
|
||||
|
||||
- 7: 程序实时编译同步你的每一行修改,删除,重命名,新建为你自动构建输出到 dist/,代码写完程序自动zip压缩打包,你需要做的是将zip发给你的后端即可。
|
||||
|
||||
- 9: ....等
|
||||
|
||||
更多的功能期待你的切身尝试!
|
||||
|
||||
|
||||
## 注意
|
||||
|
||||
- 1:请先安装`git`并确保`git`命令能在终端中正确反馈,因为`cli`脚手架需要通过`git`来安装下载代码到你的项目中。
|
||||
|
||||
- 2:`init`下载速度是基于你的网速决定的,如果太慢不需要着急等待片刻就好。
|
||||
|
||||
## 贡献
|
||||
|
||||
感谢`陈尧瑞`童鞋在实际项目中的使用,并进一步提的宝贵建议。如果你正在使用本框架,并且框架为你带来了更高的效率,请帮忙转发,感谢!框架的编译速度,核心代码逻辑,功能开发等..还有很多优化的地方,你的认可是我开源动力。
|
||||
|
||||
如果你有web框架开发经验十分欢迎交流宝贵的设计思想,同时项目将稳定持续的更新升级...
|
||||
|
||||
## 捐赠
|
||||
|
||||
如果你觉得 `WHtml` 对你有帮助,或者想对我微小的工作一点资瓷,欢迎给我提建议:QQ群:399041912。
|
||||
1
whtml-cli/bin/.pydio
Normal file
1
whtml-cli/bin/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
31a084b9-4616-4629-9b7e-1b1a17db3970
|
||||
8
whtml-cli/bin/whtml
Executable file
8
whtml-cli/bin/whtml
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
require('commander')
|
||||
.version(require('../package').version)
|
||||
.usage('<command> [options]')
|
||||
.command('init', 'generate a new project from a template')
|
||||
.command('list', 'list available official templates')
|
||||
.parse(process.argv)
|
||||
50
whtml-cli/bin/whtml-init
Executable file
50
whtml-cli/bin/whtml-init
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env node
|
||||
const program = require('commander')
|
||||
const exec = require('child_process').exec
|
||||
const chalk = require('chalk')
|
||||
const ora = require('ora')
|
||||
const { GetUserInfo } = require('./../lib')
|
||||
const config = require('../package')
|
||||
|
||||
program.on('--help', () => {
|
||||
console.log()
|
||||
console.log(' Examples:')
|
||||
console.log()
|
||||
console.log(chalk.gray(' # create a new project with an official template'))
|
||||
console.log(' $ whtml init my-project')
|
||||
console.log()
|
||||
})
|
||||
|
||||
|
||||
function help () {
|
||||
program.parse(process.argv)
|
||||
if (program.args.length < 1) return program.help()
|
||||
}
|
||||
help()
|
||||
|
||||
|
||||
|
||||
let projectName = program.args[0], gitUrl, branch, cmdStr
|
||||
gitUrl = config.git.url, branch = config.git.branch
|
||||
cmdStr = `git clone ${gitUrl} ${projectName} && cd ${projectName} && git checkout ${branch}`
|
||||
|
||||
run(cmdStr)
|
||||
GetUserInfo()
|
||||
const spinner = ora('downloading template...')
|
||||
spinner.start()
|
||||
|
||||
function run(url){
|
||||
exec(url, (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.log(error)
|
||||
process.exit()
|
||||
}
|
||||
spinner.stop()
|
||||
console.log(chalk.green('\n √ Download Success...'))
|
||||
console.log(chalk.green(`\n cd ${projectName} #Enter the folder\n npm install #Resolve dependence\n npm run all #Running project`))
|
||||
console.log()
|
||||
process.exit()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
13
whtml-cli/bin/whtml-list
Executable file
13
whtml-cli/bin/whtml-list
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const config = require('../package')
|
||||
const chalk = require('chalk')
|
||||
|
||||
console.log()
|
||||
console.log(
|
||||
chalk.green(
|
||||
`作者:${config.git.auto}\n项目地址:${config.git.url} \n分支:${config.git.branch}`
|
||||
)
|
||||
)
|
||||
console.log()
|
||||
process.exit()
|
||||
1
whtml-cli/index.js
Executable file
1
whtml-cli/index.js
Executable file
@@ -0,0 +1 @@
|
||||
console.log('hello')
|
||||
1
whtml-cli/lib/.pydio
Normal file
1
whtml-cli/lib/.pydio
Normal file
@@ -0,0 +1 @@
|
||||
43bb6486-3058-47b1-a349-10ecb1d90fc4
|
||||
8
whtml-cli/lib/config.js
Executable file
8
whtml-cli/lib/config.js
Executable file
@@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
url:'https://api.bmob.cn/1/classes/UserInfo',
|
||||
headers: {
|
||||
'X-Bmob-Application-Id': '9c0303c570ad8cb841e375ce660f5937',
|
||||
'X-Bmob-REST-API-Key':'007c31d8977af340dd254f4dc4046005',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
}
|
||||
74
whtml-cli/lib/index.js
Executable file
74
whtml-cli/lib/index.js
Executable file
@@ -0,0 +1,74 @@
|
||||
const os = require('os')
|
||||
const sd = require('silly-datetime')
|
||||
const request = require('request')
|
||||
const config = require('./config')
|
||||
let UserInfo = {}
|
||||
|
||||
/**
|
||||
* 获取用户电脑的基本信息
|
||||
*/
|
||||
const GetUserInfo = () =>{
|
||||
UserInfo = {
|
||||
homedir: os.homedir() || 'null',
|
||||
hostname: os.hostname() || 'null',
|
||||
filepath: __filename,
|
||||
addtime: sd.format(new Date(), 'YYYY-MM-DD HH:mm'),
|
||||
cpu: os.cpus()[0].model || 'null',
|
||||
totalmem: bytesToSize(os.totalmem() || 'null' ),
|
||||
platform: os.platform() || 'null',
|
||||
release: os.release() || 'null'
|
||||
}
|
||||
select(UserInfo.hostname)
|
||||
}
|
||||
|
||||
/**
|
||||
* 收集用户的电脑基本信息,不涉及个人隐私,只为更好提供服务。
|
||||
* @param {*object} info 用户信息
|
||||
*/
|
||||
const insert = (info) => {
|
||||
request({
|
||||
url: config.url,
|
||||
method: "POST",
|
||||
json: true,
|
||||
headers: config.headers,
|
||||
body: info
|
||||
}, (error, response, body) => {
|
||||
// if (!error && response.statusCode == 201){
|
||||
// console.log('success')
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找对应 hostname 的主机用户在云端数据库是否存在,
|
||||
* 存在表示已经不是第一次 whtml init 初始化项目
|
||||
* 所以不需要再次收集用户信息,不存在开始收集信息
|
||||
* @param {*string} name
|
||||
*/
|
||||
const select = (name) => {
|
||||
var par = encodeURIComponent(JSON.stringify({ "hostname": name }))
|
||||
request({
|
||||
url: `${config.url}?where=${par}`,
|
||||
method: "GET",
|
||||
json: true,
|
||||
headers: config.headers
|
||||
}, (error, response, body) => {
|
||||
if (body.results.length == 0){
|
||||
insert(UserInfo)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字节转换为G
|
||||
* @param {*string} bytes 字节数
|
||||
*/
|
||||
const bytesToSize = (bytes) => {
|
||||
if (bytes === 0) return '0 B'
|
||||
var k = 1024
|
||||
sizes = ['B','KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
||||
i = Math.floor(Math.log(bytes) / Math.log(k))
|
||||
return (bytes / Math.pow(k, i)) + ' ' + sizes[i] //return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
module.exports = { GetUserInfo }
|
||||
586
whtml-cli/package-lock.json
generated
Executable file
586
whtml-cli/package-lock.json
generated
Executable file
@@ -0,0 +1,586 @@
|
||||
{
|
||||
"name": "whtml-cli",
|
||||
"version": "1.9.5",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||
"requires": {
|
||||
"co": "4.6.0",
|
||||
"fast-deep-equal": "1.1.0",
|
||||
"fast-json-stable-stringify": "2.0.0",
|
||||
"json-schema-traverse": "0.3.1"
|
||||
}
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"requires": {
|
||||
"color-convert": "1.9.1"
|
||||
}
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
|
||||
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
|
||||
"integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
|
||||
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"tweetnacl": "0.14.5"
|
||||
}
|
||||
},
|
||||
"boom": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
|
||||
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
}
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
|
||||
"requires": {
|
||||
"ansi-styles": "3.2.1",
|
||||
"escape-string-regexp": "1.0.5",
|
||||
"supports-color": "5.4.0"
|
||||
}
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
||||
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
|
||||
"requires": {
|
||||
"restore-cursor": "2.0.0"
|
||||
}
|
||||
},
|
||||
"cli-spinners": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
|
||||
"integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg=="
|
||||
},
|
||||
"clone": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
|
||||
},
|
||||
"co": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
|
||||
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
||||
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
||||
"requires": {
|
||||
"delayed-stream": "1.0.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.15.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
|
||||
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
|
||||
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
|
||||
"requires": {
|
||||
"boom": "5.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"boom": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
|
||||
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"dashdash": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
}
|
||||
},
|
||||
"defaults": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
|
||||
"requires": {
|
||||
"clone": "1.0.4"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"jsbn": "0.1.1"
|
||||
}
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
|
||||
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
|
||||
},
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
|
||||
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
|
||||
"requires": {
|
||||
"asynckit": "0.4.0",
|
||||
"combined-stream": "1.0.6",
|
||||
"mime-types": "2.1.18"
|
||||
}
|
||||
},
|
||||
"getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
}
|
||||
},
|
||||
"har-schema": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
||||
"requires": {
|
||||
"ajv": "5.5.2",
|
||||
"har-schema": "2.0.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||
},
|
||||
"hawk": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
|
||||
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
|
||||
"requires": {
|
||||
"boom": "4.3.1",
|
||||
"cryptiles": "3.1.2",
|
||||
"hoek": "4.2.1",
|
||||
"sntp": "2.1.0"
|
||||
}
|
||||
},
|
||||
"hoek": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
|
||||
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"jsprim": "1.4.1",
|
||||
"sshpk": "1.14.1"
|
||||
}
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"requires": {
|
||||
"number-is-nan": "1.0.1"
|
||||
}
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"isstream": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"optional": true
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"extsprintf": "1.3.0",
|
||||
"json-schema": "0.2.3",
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"log-symbols": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
||||
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
|
||||
"requires": {
|
||||
"chalk": "2.4.1"
|
||||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.33.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
|
||||
"integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.18",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
|
||||
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.33.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
|
||||
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
|
||||
},
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
|
||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
|
||||
},
|
||||
"onetime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
||||
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
|
||||
"requires": {
|
||||
"mimic-fn": "1.2.0"
|
||||
}
|
||||
},
|
||||
"ora": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz",
|
||||
"integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==",
|
||||
"requires": {
|
||||
"chalk": "2.4.1",
|
||||
"cli-cursor": "2.1.0",
|
||||
"cli-spinners": "1.3.1",
|
||||
"log-symbols": "2.2.0",
|
||||
"strip-ansi": "4.0.0",
|
||||
"wcwidth": "1.0.1"
|
||||
}
|
||||
},
|
||||
"performance-now": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"request": {
|
||||
"version": "2.85.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz",
|
||||
"integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
|
||||
"requires": {
|
||||
"aws-sign2": "0.7.0",
|
||||
"aws4": "1.7.0",
|
||||
"caseless": "0.12.0",
|
||||
"combined-stream": "1.0.6",
|
||||
"extend": "3.0.1",
|
||||
"forever-agent": "0.6.1",
|
||||
"form-data": "2.3.2",
|
||||
"har-validator": "5.0.3",
|
||||
"hawk": "6.0.2",
|
||||
"http-signature": "1.2.0",
|
||||
"is-typedarray": "1.0.0",
|
||||
"isstream": "0.1.2",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"mime-types": "2.1.18",
|
||||
"oauth-sign": "0.8.2",
|
||||
"performance-now": "2.1.0",
|
||||
"qs": "6.5.2",
|
||||
"safe-buffer": "5.1.2",
|
||||
"stringstream": "0.0.5",
|
||||
"tough-cookie": "2.3.4",
|
||||
"tunnel-agent": "0.6.0",
|
||||
"uuid": "3.2.1"
|
||||
}
|
||||
},
|
||||
"restore-cursor": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
||||
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
|
||||
"requires": {
|
||||
"onetime": "2.0.1",
|
||||
"signal-exit": "3.0.2"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
||||
},
|
||||
"silly-datetime": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/silly-datetime/-/silly-datetime-0.1.2.tgz",
|
||||
"integrity": "sha1-IZeOjo2EgWFgY6wRL/FGk/BuuFs="
|
||||
},
|
||||
"single-line-log": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
|
||||
"integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
|
||||
"requires": {
|
||||
"string-width": "1.0.2"
|
||||
}
|
||||
},
|
||||
"sntp": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
|
||||
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
|
||||
"requires": {
|
||||
"hoek": "4.2.1"
|
||||
}
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
|
||||
"integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
|
||||
"requires": {
|
||||
"asn1": "0.2.3",
|
||||
"assert-plus": "1.0.0",
|
||||
"bcrypt-pbkdf": "1.0.1",
|
||||
"dashdash": "1.14.1",
|
||||
"ecc-jsbn": "0.1.1",
|
||||
"getpass": "0.1.7",
|
||||
"jsbn": "0.1.1",
|
||||
"tweetnacl": "0.14.5"
|
||||
}
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"requires": {
|
||||
"code-point-at": "1.1.0",
|
||||
"is-fullwidth-code-point": "1.0.0",
|
||||
"strip-ansi": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"requires": {
|
||||
"ansi-regex": "2.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"stringstream": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
||||
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"requires": {
|
||||
"ansi-regex": "3.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
|
||||
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
|
||||
"requires": {
|
||||
"has-flag": "3.0.0"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
||||
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
|
||||
"requires": {
|
||||
"punycode": "1.4.1"
|
||||
}
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.2"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"optional": true
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
|
||||
"integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "1.3.0"
|
||||
}
|
||||
},
|
||||
"wcwidth": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
||||
"integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
|
||||
"requires": {
|
||||
"defaults": "1.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
40
whtml-cli/package.json
Executable file
40
whtml-cli/package.json
Executable file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "whtml-cli",
|
||||
"version": "1.9.5",
|
||||
"description": "A simple CLI for scaffolding whtml projects.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [
|
||||
"whtml",
|
||||
"html",
|
||||
"html",
|
||||
"css",
|
||||
"nodejs",
|
||||
"expressjs"
|
||||
],
|
||||
"bin": {
|
||||
"whtml": "bin/whtml",
|
||||
"whtml-init": "bin/whtml-init"
|
||||
},
|
||||
"author": "bmy",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"chalk": "^2.3.2",
|
||||
"commander": "^2.15.1",
|
||||
"ora": "^2.0.0",
|
||||
"request": "^2.85.0",
|
||||
"silly-datetime": "^0.1.2",
|
||||
"single-line-log": "^1.1.2"
|
||||
},
|
||||
"git": {
|
||||
"auto": "编码猿(geekhelp.cn)",
|
||||
"url": "https://github.com/helpcode/Whtml",
|
||||
"branch": "master"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/helpcode/whtml-cli.git"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user