akfun 3.2.10 → 3.2.12
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/README.md +14 -0
- package/package.json +1 -1
- package/src/dev-server.js +55 -37
- package/src/ssl/localhost.cert +21 -0
- package/src/ssl/localhost.key +28 -0
package/README.md
CHANGED
|
@@ -387,3 +387,17 @@ module.exports = {
|
|
|
387
387
|
...
|
|
388
388
|
}
|
|
389
389
|
```
|
|
390
|
+
|
|
391
|
+
16. 本地开启https服务
|
|
392
|
+
> 使用 https://localhost/index.html 访问当前项目。
|
|
393
|
+
```bash
|
|
394
|
+
module.exports = {
|
|
395
|
+
...
|
|
396
|
+
dev: {
|
|
397
|
+
...
|
|
398
|
+
https: true, // 默认不开启
|
|
399
|
+
}
|
|
400
|
+
...
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
备注:akfun使用自签名证书开启https服务,浏览器会提示安全性问题不能正常访问,需要进行如下设置,以 Chrome设置 为例:浏览器打开 Chrome://flags/#allow-insecure-localhost 后将其设置为Enabled。
|
package/package.json
CHANGED
package/src/dev-server.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
const open = require('open');
|
|
2
2
|
const ora = require('ora');
|
|
3
3
|
const path = require('path');
|
|
4
|
+
const https = require('https');
|
|
5
|
+
const fs = require('fs');
|
|
4
6
|
const express = require('express');
|
|
5
7
|
const webpack = require('webpack');
|
|
8
|
+
const portfinder = require('portfinder');
|
|
6
9
|
const checkVersion = require('./check-versions');
|
|
7
10
|
const { createProxyMiddleware } = require('http-proxy-middleware');
|
|
8
11
|
const { resolve } = require('./utils/pathUtils');
|
|
@@ -93,47 +96,62 @@ module.exports = function (akfunConfig, _consoleTag) {
|
|
|
93
96
|
// handle fallback for HTML5 history API
|
|
94
97
|
app.use(require('connect-history-api-fallback')());
|
|
95
98
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
_reject = reject;
|
|
101
|
-
});
|
|
99
|
+
const afterCreateServerAction = (isHttps, port) => {
|
|
100
|
+
spinner.succeed(`${consoleTag}调试模式已开启!`);
|
|
101
|
+
|
|
102
|
+
process.env.PORT = port;
|
|
102
103
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
const uri = isHttps
|
|
105
|
+
? `https://${config.dev.hostname}`
|
|
106
|
+
: `http://${config.dev.hostname}:${port}`;
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
console.log(`> Listening at ${uri}\n`);
|
|
108
109
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
// 打印当前环境中的首个html和css地址
|
|
111
|
+
const projPath = `${uri}${webpackConfig.output.publicPath}`;
|
|
112
|
+
|
|
113
|
+
let entryConfig = webpackConfig.entry || {}; // 获取构建入口配置
|
|
114
|
+
const entryFiles = (entryConfig && Object.keys(entryConfig)) || [];
|
|
115
|
+
if (entryFiles.length > 0) {
|
|
116
|
+
// 获取第一个入口文件
|
|
117
|
+
const filename = entryFiles[0];
|
|
118
|
+
console.info(
|
|
119
|
+
`当前运行脚本:\n ${projPath}${filename}.js\n当前运行样式[可能不存在]:\n${projPath}${filename}.css`
|
|
120
|
+
);
|
|
121
|
+
// 是否自动打开浏览器并跳转到第一个入口页面
|
|
122
|
+
if (!config.dev.closeHtmlWebpackPlugin && autoOpenBrowser) {
|
|
123
|
+
open(`${projPath}${filename}.html`, { wait: true });
|
|
113
124
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
if (config.dev.https) {
|
|
129
|
+
const sslOptions = {
|
|
130
|
+
key: fs.readFileSync(path.resolve(__dirname, './ssl/localhost.key')),
|
|
131
|
+
cert: fs.readFileSync(path.resolve(__dirname, './ssl/localhost.cert')),
|
|
132
|
+
requestCert: false,
|
|
133
|
+
rejectUnauthorized: false
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var httpsServer = https.createServer(sslOptions, app);
|
|
137
|
+
|
|
138
|
+
devMiddleware.waitUntilValid(() => {
|
|
139
|
+
httpsServer.listen(443, () => {
|
|
140
|
+
afterCreateServerAction(true, port);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
portfinder.basePort = port;
|
|
145
|
+
devMiddleware.waitUntilValid(() => {
|
|
146
|
+
portfinder.getPort((err, port) => {
|
|
147
|
+
if (err) {
|
|
148
|
+
_reject(err);
|
|
133
149
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
150
|
+
|
|
151
|
+
app.listen(port, () => {
|
|
152
|
+
afterCreateServerAction(false, port);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
137
155
|
});
|
|
138
|
-
}
|
|
156
|
+
}
|
|
139
157
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIDjDCCAnQCCQD3lQP0Gtul0TANBgkqhkiG9w0BAQsFADCBhzELMAkGA1UEBhMC
|
|
3
|
+
emgxETAPBgNVBAgMCHdpYmV0dGVyMREwDwYDVQQHDAh3aWJldHRlcjERMA8GA1UE
|
|
4
|
+
CgwId2liZXR0ZXIxDjAMBgNVBAsMBWFrZnVuMQ4wDAYDVQQDDAVha2Z1bjEfMB0G
|
|
5
|
+
CSqGSIb3DQEJARYQMzY1NTMzMDkzQHFxLmNvbTAeFw0yMjEwMDIxNjI2NDlaFw0y
|
|
6
|
+
MjExMDExNjI2NDlaMIGHMQswCQYDVQQGEwJ6aDERMA8GA1UECAwId2liZXR0ZXIx
|
|
7
|
+
ETAPBgNVBAcMCHdpYmV0dGVyMREwDwYDVQQKDAh3aWJldHRlcjEOMAwGA1UECwwF
|
|
8
|
+
YWtmdW4xDjAMBgNVBAMMBWFrZnVuMR8wHQYJKoZIhvcNAQkBFhAzNjU1MzMwOTNA
|
|
9
|
+
cXEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqbbSdHPvmurP
|
|
10
|
+
7E3NmZRlqHJW+iAstgbKzlcOFUDNloNgT9SjhraJR343CSwXmGV+0dnGIoCeuSvL
|
|
11
|
+
erYIEQgDkgT4Mpnet1e0M8R332b78Xfw+aA/QTwx2DhwZcKOQ8gv6rPpYDjPpDWv
|
|
12
|
+
qliKarNIrEVBJiJVY9tuNDYoQBhKrkXQteTWSeU4p5SoMQwfra7NBp7wF/DqnSlz
|
|
13
|
+
U7+0LK6Tj4uOCYbV++1+5UQk7RyRBJVJlLC7DQT9LAyrcebnqdhalq8BjCa6idT5
|
|
14
|
+
d/ctEOnVrOwxL+/rQwhewbTUI986QsJXmmg3+r5WZU9lUJyL3vxXxffmT/rH0bJk
|
|
15
|
+
CC73GTOL1wIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQB856BWi1SC/c2jj17X2+T6
|
|
16
|
+
TzahZsXeoBkLKjR2EgUrrUIFTCS9SXslgOV5JG28zEn+pnh4ZW0KBls1ql2I31gy
|
|
17
|
+
vI/G55Y6bleNay9mYD5/7iclEXYb8olm6ipqS1cnRABpgDrI7Rh4T/sH6khXVgDR
|
|
18
|
+
xunLqZNEDrE92V3eEOAet0jnHTd2L+9Idz9TlPs3dW82J1bzBTld0Im53MWX64rm
|
|
19
|
+
a6axhRYrTzemSglL4Yjld0J8VVU/8ZE7IOZkxmcLB7UKXL2u9dkAKGV7iJsi0or5
|
|
20
|
+
X6yionKTPld5ud18MhZ/JDVWAMFISG2JlyXW8v1HEwkDo7PeIK05zOuDmSjgPiZz
|
|
21
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCpttJ0c++a6s/s
|
|
3
|
+
Tc2ZlGWoclb6ICy2BsrOVw4VQM2Wg2BP1KOGtolHfjcJLBeYZX7R2cYigJ65K8t6
|
|
4
|
+
tggRCAOSBPgymd63V7QzxHffZvvxd/D5oD9BPDHYOHBlwo5DyC/qs+lgOM+kNa+q
|
|
5
|
+
WIpqs0isRUEmIlVj2240NihAGEquRdC15NZJ5TinlKgxDB+trs0GnvAX8OqdKXNT
|
|
6
|
+
v7QsrpOPi44JhtX77X7lRCTtHJEElUmUsLsNBP0sDKtx5uep2FqWrwGMJrqJ1Pl3
|
|
7
|
+
9y0Q6dWs7DEv7+tDCF7BtNQj3zpCwleaaDf6vlZlT2VQnIve/FfF9+ZP+sfRsmQI
|
|
8
|
+
LvcZM4vXAgMBAAECggEAJ9qU5V/sXnbRyO4kX/JnRP1Ey4wOs9g4e+gZmIgVP0ku
|
|
9
|
+
rtCCbjojVrSe+/psuA7tjx4S1ztZCqbsK67fihBVtk6QcmGL2YYw/Q8gD0hB1dyS
|
|
10
|
+
rCwjbpBSLDJkwqDDg8tY5UbGgSAWMruguuH77z6WzE2fFPNvFfoLkRs+rH6H2xCM
|
|
11
|
+
GzlDMl71oym17LU+3Ie4fjoYpwRdFJBLQuCDbaatlVRpE01hX3T1JRvrU6Mmis8E
|
|
12
|
+
DBo0bKm0pIbeWcl9A4pbHy6GdClXO1UaI7uBNfWXyIc1V4Z5KHh+ZlPJVsnf4v70
|
|
13
|
+
aorUoIKnduYs6KAT1akko/O3jSQ2yziCff9UXpMDQQKBgQDVswXsD6ie9jwhhl82
|
|
14
|
+
Xf83GSDLsFeDDo3rFyCZtWgRKr1GTnoKQ0DO0w55H01OY3du+dARPS5QHf+MCku/
|
|
15
|
+
JIKFjdaYE1ZsATnPsCX9hiZ6QDVJPp2VPX3HkKhrR8198fLDriGng9pctxr15uy5
|
|
16
|
+
62fgyIuydwyHEYNSdMCpn3nyZwKBgQDLTuZCoKrZ/5qUMzB2LFhfTUu53GM1cIKV
|
|
17
|
+
dUgAcoQrGPQ7jylULJv6IBkentOmEbQ+9P9T9w9PbxHmEoqk09vtB1qp5rxbGQ0/
|
|
18
|
+
ylFz6tytuoM+D+58f1e1c7+ZOOas1NbGCJD3V1SwXU1bPShG9ez8pNs6L/bv4n7A
|
|
19
|
+
Svmw4ggVEQKBgEiYCx/45cgyT5T356o5XjRiZeCr496SeCVvctSkaljCkw+qIw0P
|
|
20
|
+
cZmQ2u7Mcl95rJ3XYRYqGWx/9EqnSLoC9g/WchqxHv+Lnw7tgMpR4wpOe4uJKNEE
|
|
21
|
+
1ZCQlJX1C1qIcXaF1crpIKm0TgVQ0AQMcvpKRiJ3DJtpmJnPLY+xrCRrAoGAGD5d
|
|
22
|
+
WN6d4QcI4NlF0yGwnBS0jgJI1kuHVtk4b804E4eTQDLvI7l6FBaVyD/6TxhXXRaM
|
|
23
|
+
B/AzJC7DfKMDY2pcFGTHG/GGznorSUsP8Xm1PQY7tj/iGXh59gpKc7QEVeG/hrfo
|
|
24
|
+
yYXhdHJ70gB1+BhFXU8vUT38/VgN81I9eilJ+3ECgYBQyDsoVvRvpmlWp9VQJs5v
|
|
25
|
+
DC8rufxGGbyiJpDxhtiE0gHKC+2DxU5IBG9hkQpjN4qqwR9HMwPeOvfs5cg0Loaf
|
|
26
|
+
IM3hwzVGQ39PZIY5grjmA5zPtdpuoCDX8DY/XhFmpmLThP3x5hGvTV6PXw31HOXX
|
|
27
|
+
OGT4LBgcYXktU99IC7x5pw==
|
|
28
|
+
-----END PRIVATE KEY-----
|