oipage 1.2.1 → 1.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG CHANGED
@@ -48,4 +48,17 @@ v1.2.1:
48
48
  changes:
49
49
  - 修复bug
50
50
  1、开发服务器
51
- * 修复路径不存在时未正确同步修改浏览器地址问题
51
+ * 修复路径不存在时未正确同步修改浏览器地址问题
52
+ v1.3.0:
53
+ date:
54
+ changes:
55
+ - 修复bug
56
+ 1、开发服务器
57
+ * 修复服务器根路径判断错误导致node_modules包查找错误问题
58
+ - 新增功能
59
+ 1、API功能(浏览器)
60
+ * reader 文本分析读取器
61
+ 2、API功能(Node.js)
62
+ * reader 文本分析读取器
63
+ 3、开发服务器
64
+ * 新增 devServer.intercept 请求拦截
package/README.md CHANGED
@@ -1,81 +1,81 @@
1
- - 💘 开源不易,去 <i>[Github给个Star](https://github.com/oi-contrib/OIPage) </i>吧!
2
-
3
- <img src='https://oi-contrib.github.io/OIPage/images/logo.png' height='100px'/>
4
-
5
- <p>
6
- <a href="https://zxl20070701.github.io/toolbox/#/npm-download?packages=oipage&interval=7">
7
- <img src="https://img.shields.io/npm/dm/oipage.svg" alt="downloads">
8
- </a>
9
- <a href="https://www.npmjs.com/package/oipage">
10
- <img src="https://img.shields.io/npm/v/oipage.svg" alt="npm">
11
- </a>
12
- <a href="https://github.com/oi-contrib/OIPage/issues">
13
- <img src="https://img.shields.io/github/issues/oi-contrib/OIPage" alt="issue">
14
- </a>
15
- <a href="https://github.com/oi-contrib/OIPage" target='_blank'>
16
- <img alt="GitHub repo stars" src="https://img.shields.io/github/stars/oi-contrib/OIPage?style=social">
17
- </a>
18
- <a href="https://github.com/oi-contrib/OIPage">
19
- <img src="https://img.shields.io/github/forks/oi-contrib/OIPage" alt="forks">
20
- </a>
21
- <a href="https://gitee.com/oi-contrib/OIPage" target='_blank'>
22
- <img alt="Gitee repo stars" src="https://gitee.com/oi-contrib/OIPage/badge/star.svg">
23
- </a>
24
- <a href="https://gitee.com/oi-contrib/OIPage">
25
- <img src="https://gitee.com/oi-contrib/OIPage/badge/fork.svg" alt="forks">
26
- </a>
27
- </p>
28
-
29
- <img src="https://nodei.co/npm/oipage.png?downloads=true&amp;downloadRank=true&amp;stars=true" alt="NPM">
30
-
31
- # [OIPage](https://github.com/oi-contrib/OIPage)
32
- 前端网页或应用快速开发助手,包括开发服务器、辅助命令、实用API等。官网地址:[https://oi-contrib.github.io/OIPage](https://oi-contrib.github.io/OIPage)
33
-
34
- ## 如何使用?
35
-
36
- 你可以作为一个命令行使用,那么你需要全局安装:
37
-
38
- ```shell
39
- npm install -g oipage
40
- ```
41
-
42
- 也可以作为项目开发中的一个功能加强,在 package.json 中配置命令或nodejs文件中引入需要的模块使用,那么就在项目中执行安装命令:
43
-
44
- ```shell
45
- npm install oipage --save
46
- ```
47
-
48
- 安装后,就可以直接作为命令行使用了。你可以打印帮助查看:
49
-
50
- ```shell
51
- oipage-cli
52
- ```
53
-
54
- 比如会出现类似下列内容:
55
-
56
- ```
57
- OIPage@v1.2.0
58
-
59
- 可以使用的命令如下:
60
-
61
- 【1】oipage-cli serve 开发服务器
62
- --port|-p 端口号
63
- --baseUrl 服务器根目录
64
- ......
65
- ```
66
-
67
- 根据提示我们知道,比如第一个命令,其提供了一个快速访问本地资源服务器的功能,比如执行:
68
-
69
- ```shell
70
- oipage-cli serve -p 8080
71
- ```
72
-
73
- 启动成功后,直接访问: http://localhost:8080/ 即可。
74
-
75
- 如果你需要在项目中使用,我们也提供了一些有用的API,具体可以访问[ 在线文档 ](https://oi-contrib.github.io/OIPage)进行了解。
76
-
77
- ## 版权
78
-
79
- MIT License
80
-
1
+ - 💘 开源不易,去 <i>[Github给个Star](https://github.com/oi-contrib/OIPage) </i>吧!
2
+
3
+ <img src='https://oi-contrib.github.io/OIPage/images/logo.png' height='100px'/>
4
+
5
+ <p>
6
+ <a href="https://zxl20070701.github.io/toolbox/#/npm-download?packages=oipage&interval=7">
7
+ <img src="https://img.shields.io/npm/dm/oipage.svg" alt="downloads">
8
+ </a>
9
+ <a href="https://www.npmjs.com/package/oipage">
10
+ <img src="https://img.shields.io/npm/v/oipage.svg" alt="npm">
11
+ </a>
12
+ <a href="https://github.com/oi-contrib/OIPage/issues">
13
+ <img src="https://img.shields.io/github/issues/oi-contrib/OIPage" alt="issue">
14
+ </a>
15
+ <a href="https://github.com/oi-contrib/OIPage" target='_blank'>
16
+ <img alt="GitHub repo stars" src="https://img.shields.io/github/stars/oi-contrib/OIPage?style=social">
17
+ </a>
18
+ <a href="https://github.com/oi-contrib/OIPage">
19
+ <img src="https://img.shields.io/github/forks/oi-contrib/OIPage" alt="forks">
20
+ </a>
21
+ <a href="https://gitee.com/oi-contrib/OIPage" target='_blank'>
22
+ <img alt="Gitee repo stars" src="https://gitee.com/oi-contrib/OIPage/badge/star.svg">
23
+ </a>
24
+ <a href="https://gitee.com/oi-contrib/OIPage">
25
+ <img src="https://gitee.com/oi-contrib/OIPage/badge/fork.svg" alt="forks">
26
+ </a>
27
+ </p>
28
+
29
+ <img src="https://nodei.co/npm/oipage.png?downloads=true&amp;downloadRank=true&amp;stars=true" alt="NPM">
30
+
31
+ # [OIPage](https://github.com/oi-contrib/OIPage)
32
+ 前端网页或应用快速开发助手,包括开发服务器、辅助命令、实用API等。官网地址:[https://oi-contrib.github.io/OIPage](https://oi-contrib.github.io/OIPage)
33
+
34
+ ## 如何使用?
35
+
36
+ 你可以作为一个命令行使用,那么你需要全局安装:
37
+
38
+ ```shell
39
+ npm install -g oipage
40
+ ```
41
+
42
+ 也可以作为项目开发中的一个功能加强,在 package.json 中配置命令或nodejs文件中引入需要的模块使用,那么就在项目中执行安装命令:
43
+
44
+ ```shell
45
+ npm install oipage --save
46
+ ```
47
+
48
+ 安装后,就可以直接作为命令行使用了。你可以打印帮助查看:
49
+
50
+ ```shell
51
+ oipage-cli
52
+ ```
53
+
54
+ 比如会出现类似下列内容:
55
+
56
+ ```
57
+ OIPage@v1.2.0
58
+
59
+ 可以使用的命令如下:
60
+
61
+ 【1】oipage-cli serve 开发服务器
62
+ --port|-p 端口号
63
+ --baseUrl 服务器根目录
64
+ ......
65
+ ```
66
+
67
+ 根据提示我们知道,比如第一个命令,其提供了一个快速访问本地资源服务器的功能,比如执行:
68
+
69
+ ```shell
70
+ oipage-cli serve -p 8080
71
+ ```
72
+
73
+ 启动成功后,直接访问: http://localhost:8080/ 即可。
74
+
75
+ 如果你需要在项目中使用,我们也提供了一些有用的API,具体可以访问[ 在线文档 ](https://oi-contrib.github.io/OIPage)进行了解。
76
+
77
+ ## 版权
78
+
79
+ MIT License
80
+
81
81
  Copyright (c) [zxl20070701](https://zxl20070701.github.io/notebook/home.html) 走一步,再走一步
@@ -1,105 +1,105 @@
1
- {
2
- "html": "text/html",
3
- "htm": "text/html",
4
- "shtml": "text/html",
5
- "css": "text/css",
6
- "xml": "text/xml",
7
- "gif": "image/gif",
8
- "jpeg": "image/jpeg",
9
- "jpg": "image/jpeg",
10
- "js": "application/javascript",
11
- "atom": "application/atom+xml",
12
- "rss": "application/rss+xml",
13
- "mml": "text/mathml",
14
- "txt": "text/plain",
15
- "jad": "text/vnd.sun.j2me.app-descriptor",
16
- "wml": "text/vnd.wap.wml",
17
- "htc": "text/x-component",
18
- "png": "image/png",
19
- "tif": "image/tiff",
20
- "tiff": "image/tiff",
21
- "wbmp": "image/vnd.wap.wbmp",
22
- "ico": "image/x-icon",
23
- "jng": "image/x-jng",
24
- "bmp": "image/x-ms-bmp",
25
- "svg": "image/svg+xml",
26
- "svgz": "image/svg+xml",
27
- "webp": "image/webp",
28
- "woff": "application/font-woff",
29
- "jar": "application/java-archive",
30
- "war": "application/java-archive",
31
- "ear": "application/java-archive",
32
- "json": "application/json",
33
- "hqx": "application/mac-binhex40",
34
- "doc": "application/msword",
35
- "pdf": "application/pdf",
36
- "ps": "application/postscript",
37
- "eps": "application/postscript",
38
- "ai": "application/postscript",
39
- "rtf": "application/rtf",
40
- "m3u8": "application/vnd.apple.mpegurl",
41
- "xls": "application/vnd.ms-excel",
42
- "eot": "application/vnd.ms-fontobject",
43
- "ppt": "application/vnd.ms-powerpoint",
44
- "wmlc": "application/vnd.wap.wmlc",
45
- "kml": "application/vnd.google-earth.kml+xml",
46
- "kmz": "application/vnd.google-earth.kmz",
47
- "7z": "application/x-7z-compressed",
48
- "cco": "application/x-cocoa",
49
- "jardiff": "application/x-java-archive-diff",
50
- "jnlp": "application/x-java-jnlp-file",
51
- "run": "application/x-makeself",
52
- "pl": "application/x-perl",
53
- "pm": "application/x-perl",
54
- "prc": "application/x-pilot",
55
- "pdb": "application/x-pilot",
56
- "rar": "application/x-rar-compressed",
57
- "rpm": "application/x-redhat-package-manager",
58
- "sea": "application/x-sea",
59
- "swf": "application/x-shockwave-flash",
60
- "sit": "application/x-stuffit",
61
- "tcl": "application/x-tcl",
62
- "tk": "application/x-tcl",
63
- "der": "application/x-x509-ca-cert",
64
- "pem": "application/x-x509-ca-cert",
65
- "crt": "application/x-x509-ca-cert",
66
- "xpi": "application/x-xpinstall",
67
- "xhtml": "application/xhtml+xml",
68
- "xspf": "application/xspf+xml",
69
- "zip": "application/zip",
70
- "bin": "application/octet-stream",
71
- "exe": "application/octet-stream",
72
- "dll": "application/octet-stream",
73
- "deb": "application/octet-stream",
74
- "dmg": "application/octet-stream",
75
- "iso": "application/octet-stream",
76
- "img": "application/octet-stream",
77
- "msi": "application/octet-stream",
78
- "msp": "application/octet-stream",
79
- "msm": "application/octet-stream",
80
- "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
81
- "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
82
- "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
83
- "mid": "audio/midi",
84
- "midi": "audio/midi",
85
- "kar": "audio/midi",
86
- "mp3": "audio/mpeg",
87
- "ogg": "audio/ogg",
88
- "m4a": "audio/x-m4a",
89
- "ra": "audio/x-realaudio",
90
- "3gpp": "video/3gpp",
91
- "3gp": "video/3gpp",
92
- "ts": "video/mp2t",
93
- "mp4": "video/mp4",
94
- "mpeg": "video/mpeg",
95
- "mpg": "video/mpeg",
96
- "mov": "video/quicktime",
97
- "webm": "video/webm",
98
- "flv": "video/x-flv",
99
- "m4v": "video/x-m4v",
100
- "mng": "video/x-mng",
101
- "asx": "video/x-ms-asf",
102
- "asf": "video/x-ms-asf",
103
- "wmv": "video/x-ms-wmv",
104
- "avi": "video/x-msvideo"
1
+ {
2
+ "html": "text/html",
3
+ "htm": "text/html",
4
+ "shtml": "text/html",
5
+ "css": "text/css",
6
+ "xml": "text/xml",
7
+ "gif": "image/gif",
8
+ "jpeg": "image/jpeg",
9
+ "jpg": "image/jpeg",
10
+ "js": "application/javascript",
11
+ "atom": "application/atom+xml",
12
+ "rss": "application/rss+xml",
13
+ "mml": "text/mathml",
14
+ "txt": "text/plain",
15
+ "jad": "text/vnd.sun.j2me.app-descriptor",
16
+ "wml": "text/vnd.wap.wml",
17
+ "htc": "text/x-component",
18
+ "png": "image/png",
19
+ "tif": "image/tiff",
20
+ "tiff": "image/tiff",
21
+ "wbmp": "image/vnd.wap.wbmp",
22
+ "ico": "image/x-icon",
23
+ "jng": "image/x-jng",
24
+ "bmp": "image/x-ms-bmp",
25
+ "svg": "image/svg+xml",
26
+ "svgz": "image/svg+xml",
27
+ "webp": "image/webp",
28
+ "woff": "application/font-woff",
29
+ "jar": "application/java-archive",
30
+ "war": "application/java-archive",
31
+ "ear": "application/java-archive",
32
+ "json": "application/json",
33
+ "hqx": "application/mac-binhex40",
34
+ "doc": "application/msword",
35
+ "pdf": "application/pdf",
36
+ "ps": "application/postscript",
37
+ "eps": "application/postscript",
38
+ "ai": "application/postscript",
39
+ "rtf": "application/rtf",
40
+ "m3u8": "application/vnd.apple.mpegurl",
41
+ "xls": "application/vnd.ms-excel",
42
+ "eot": "application/vnd.ms-fontobject",
43
+ "ppt": "application/vnd.ms-powerpoint",
44
+ "wmlc": "application/vnd.wap.wmlc",
45
+ "kml": "application/vnd.google-earth.kml+xml",
46
+ "kmz": "application/vnd.google-earth.kmz",
47
+ "7z": "application/x-7z-compressed",
48
+ "cco": "application/x-cocoa",
49
+ "jardiff": "application/x-java-archive-diff",
50
+ "jnlp": "application/x-java-jnlp-file",
51
+ "run": "application/x-makeself",
52
+ "pl": "application/x-perl",
53
+ "pm": "application/x-perl",
54
+ "prc": "application/x-pilot",
55
+ "pdb": "application/x-pilot",
56
+ "rar": "application/x-rar-compressed",
57
+ "rpm": "application/x-redhat-package-manager",
58
+ "sea": "application/x-sea",
59
+ "swf": "application/x-shockwave-flash",
60
+ "sit": "application/x-stuffit",
61
+ "tcl": "application/x-tcl",
62
+ "tk": "application/x-tcl",
63
+ "der": "application/x-x509-ca-cert",
64
+ "pem": "application/x-x509-ca-cert",
65
+ "crt": "application/x-x509-ca-cert",
66
+ "xpi": "application/x-xpinstall",
67
+ "xhtml": "application/xhtml+xml",
68
+ "xspf": "application/xspf+xml",
69
+ "zip": "application/zip",
70
+ "bin": "application/octet-stream",
71
+ "exe": "application/octet-stream",
72
+ "dll": "application/octet-stream",
73
+ "deb": "application/octet-stream",
74
+ "dmg": "application/octet-stream",
75
+ "iso": "application/octet-stream",
76
+ "img": "application/octet-stream",
77
+ "msi": "application/octet-stream",
78
+ "msp": "application/octet-stream",
79
+ "msm": "application/octet-stream",
80
+ "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
81
+ "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
82
+ "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
83
+ "mid": "audio/midi",
84
+ "midi": "audio/midi",
85
+ "kar": "audio/midi",
86
+ "mp3": "audio/mpeg",
87
+ "ogg": "audio/ogg",
88
+ "m4a": "audio/x-m4a",
89
+ "ra": "audio/x-realaudio",
90
+ "3gpp": "video/3gpp",
91
+ "3gp": "video/3gpp",
92
+ "ts": "video/mp2t",
93
+ "mp4": "video/mp4",
94
+ "mpeg": "video/mpeg",
95
+ "mpg": "video/mpeg",
96
+ "mov": "video/quicktime",
97
+ "webm": "video/webm",
98
+ "flv": "video/x-flv",
99
+ "m4v": "video/x-m4v",
100
+ "mng": "video/x-mng",
101
+ "asx": "video/x-ms-asf",
102
+ "asf": "video/x-ms-asf",
103
+ "wmv": "video/x-ms-wmv",
104
+ "avi": "video/x-msvideo"
105
105
  }
package/bin/disk.js CHANGED
@@ -1,32 +1,32 @@
1
- const { deleteDisk, copyDisk } = require("../nodejs/disk");
2
-
3
- module.exports = function (config) {
4
- let isForce = false;
5
-
6
- // 判断是否开启强制执行
7
- for (let i = 0; i < config.value.length; i++) {
8
- if (config.value[i].name === "--force") isForce = true;
9
- }
10
-
11
- // 执行一个个任务
12
- for (let i = 0; i < config.value.length; i++) {
13
-
14
- // 删除文件或文件夹
15
- if (config.value[i].name === "--delete") {
16
- for (let j = 0; j < config.value[i].value.length; j++) {
17
- deleteDisk(config.value[i].value[j]);
18
- }
19
- }
20
-
21
- // 移动文件或文件夹
22
- else if (config.value[i].name === "--move") {
23
- copyDisk(config.value[i].value[0], config.value[i].value[1], isForce);
24
- deleteDisk(config.value[i].value[0]);
25
- }
26
-
27
- // 复制文件或文件夹
28
- else if (config.value[i].name === "--copy") {
29
- copyDisk(config.value[i].value[0], config.value[i].value[1], isForce);
30
- }
31
- }
1
+ const { deleteDisk, copyDisk } = require("../nodejs/disk");
2
+
3
+ module.exports = function (config) {
4
+ let isForce = false;
5
+
6
+ // 判断是否开启强制执行
7
+ for (let i = 0; i < config.value.length; i++) {
8
+ if (config.value[i].name === "--force") isForce = true;
9
+ }
10
+
11
+ // 执行一个个任务
12
+ for (let i = 0; i < config.value.length; i++) {
13
+
14
+ // 删除文件或文件夹
15
+ if (config.value[i].name === "--delete") {
16
+ for (let j = 0; j < config.value[i].value.length; j++) {
17
+ deleteDisk(config.value[i].value[j]);
18
+ }
19
+ }
20
+
21
+ // 移动文件或文件夹
22
+ else if (config.value[i].name === "--move") {
23
+ copyDisk(config.value[i].value[0], config.value[i].value[1], isForce);
24
+ deleteDisk(config.value[i].value[0]);
25
+ }
26
+
27
+ // 复制文件或文件夹
28
+ else if (config.value[i].name === "--copy") {
29
+ copyDisk(config.value[i].value[0], config.value[i].value[1], isForce);
30
+ }
31
+ }
32
32
  };
package/bin/help.js CHANGED
@@ -1,25 +1,25 @@
1
- const packageValue = require("../package.json");
2
-
3
- module.exports = function () {
4
- console.log(`\x1b[36m
5
- OIPage@v${packageValue.version}
6
-
7
- 可以使用的命令如下:
8
-
9
- 【1】oipage-cli serve 开发服务器
10
- --port|-p 端口号
11
- --baseUrl 服务器根目录
12
- --config|-c 设置配置文件
13
-
14
- 【2】oipage-cli disk 磁盘操作
15
- --force|-f 强制执行
16
- --delete|-d 删除文件或文件夹
17
- --move|m 移动文件或文件夹
18
- --copy|-c 复制文件或文件夹
19
-
20
- 【3】oipage-cli run "任务一" "任务二" ... 运行多命令
21
-
22
- Powered by https://github.com/zxl20070701
23
- \x1b[0m`);
24
-
1
+ const packageValue = require("../package.json");
2
+
3
+ module.exports = function () {
4
+ console.log(`\x1b[36m
5
+ OIPage@v${packageValue.version}
6
+
7
+ 可以使用的命令如下:
8
+
9
+ 【1】oipage-cli serve 开发服务器
10
+ --port|-p 端口号
11
+ --baseUrl 服务器根目录
12
+ --config|-c 设置配置文件
13
+
14
+ 【2】oipage-cli disk 磁盘操作
15
+ --force|-f 强制执行
16
+ --delete|-d 删除文件或文件夹
17
+ --move|m 移动文件或文件夹
18
+ --copy|-c 复制文件或文件夹
19
+
20
+ 【3】oipage-cli run "任务一" "任务二" ... 运行多命令
21
+
22
+ Powered by https://github.com/zxl20070701
23
+ \x1b[0m`);
24
+
25
25
  };
@@ -0,0 +1,8 @@
1
+ module.exports = function (url, intercept, request, response) {
2
+ for (let item of intercept) {
3
+ if (item.test.test(url)) {
4
+ item.handler(request, response);
5
+ return true;
6
+ }
7
+ }
8
+ }
package/bin/run CHANGED
@@ -22,6 +22,7 @@ if (process.argv[2] === "serve") {
22
22
  devServer: {
23
23
  port: 8080,
24
24
  baseUrl: "./",
25
+ intercept: []
25
26
  },
26
27
  module: {
27
28
  rules: []
package/bin/serve.js CHANGED
@@ -7,6 +7,7 @@ const mineTypes = require("./data/mineTypes.json");
7
7
  const resolve404 = require("./tools/resolve404.js");
8
8
  const resolveImportFactory = require("./tools/resolveImport.js");
9
9
  const { formatRawHeaders } = require("./tools/format.js");
10
+ const intercept = require("./intercept.js");
10
11
 
11
12
  // 开发服务器
12
13
  module.exports = function (config) {
@@ -25,8 +26,13 @@ module.exports = function (config) {
25
26
  // 请求的文件路径
26
27
  let filePath = join(basePath, url == "/" ? "index.html" : url.replace(/^\//, ""));
27
28
 
29
+ // 请求拦截
30
+ if (intercept(url, config.devServer.intercept, request, response)) {
31
+ console.log("<i> \x1b[1m\x1b[32m[OIPage-dev-server] intercept: " + url + '\x1b[0m ' + new Date().toLocaleString());
32
+ }
33
+
28
34
  // 如果存在且是文件
29
- if (existsSync(filePath) && !lstatSync(filePath).isDirectory()) {
35
+ else if (existsSync(filePath) && !lstatSync(filePath).isDirectory()) {
30
36
 
31
37
  let dotName = /\./.test(filePath) ? filePath.match(/\.([^.]+)$/)[1] : "";
32
38
  let fileType = mineTypes[dotName]; // 文件类型