@best-shot/dev-server 0.12.5 → 0.13.2
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 +12 -7
- package/lib/action.mjs +7 -4
- package/lib/server.mjs +43 -54
- package/middleware/not-found/404.html +37 -29
- package/middleware/not-found/index.mjs +3 -9
- package/middleware/static-file/404.svg +31 -0
- package/middleware/static-file/index.mjs +19 -0
- package/middleware/{not-found → static-file}/logo.png +0 -0
- package/middleware/static-file/logo.svg +5 -0
- package/middleware/wait-page/index.mjs +8 -2
- package/middleware/wait-page/template.html +112 -0
- package/package.json +7 -12
- package/middleware/not-found/404.svg +0 -72
- package/middleware/not-found/logo.svg +0 -5
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ DevServer support of `@best-shot/cli`.
|
|
|
14
14
|
|
|
15
15
|
## Features
|
|
16
16
|
|
|
17
|
-
- All Features of webpack-dev-server@4
|
|
17
|
+
- All Features of [webpack-dev-server@4](https://webpack.js.org/configuration/dev-server/)
|
|
18
18
|
- Hook `historyApiFallback` into `devMiddleware.publicPath`
|
|
19
19
|
- Show a wait page when bundling
|
|
20
20
|
- Provide a 404 page
|
|
@@ -35,17 +35,22 @@ npx --no-install best-shot serve [options]
|
|
|
35
35
|
```mjs
|
|
36
36
|
// example: .best-shot/config.mjs
|
|
37
37
|
export default {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
],
|
|
38
|
+
experiments: {
|
|
39
|
+
lazyCompilation: false // true by default
|
|
40
|
+
},
|
|
42
41
|
devServer: {
|
|
43
|
-
//
|
|
42
|
+
// without this will fallback to `watch` mode
|
|
44
43
|
}
|
|
45
44
|
};
|
|
46
45
|
```
|
|
47
46
|
|
|
47
|
+
## Tips
|
|
48
|
+
|
|
49
|
+
### Difference with webpack-dev-server
|
|
50
|
+
|
|
51
|
+
- `options.static` is `false` by default.
|
|
52
|
+
- `options.hot` is `only` by default.
|
|
53
|
+
|
|
48
54
|
## Related
|
|
49
55
|
|
|
50
|
-
- [@best-shot/preset-serve](../preset-serve)
|
|
51
56
|
- [@best-shot/cli](../cli)
|
package/lib/action.mjs
CHANGED
|
@@ -15,12 +15,15 @@ export function action({ _: [command] }) {
|
|
|
15
15
|
|
|
16
16
|
const configs = await readConfig()({ command });
|
|
17
17
|
|
|
18
|
-
const result =
|
|
19
|
-
|
|
18
|
+
const result = [];
|
|
19
|
+
for (const config of configs) {
|
|
20
|
+
const io = await createConfig(config, {
|
|
20
21
|
watch: true,
|
|
22
|
+
serve: Boolean(config.devServer),
|
|
21
23
|
command,
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
+
});
|
|
25
|
+
result.push(io);
|
|
26
|
+
}
|
|
24
27
|
|
|
25
28
|
const shouldServe = [];
|
|
26
29
|
const shouldWatch = [];
|
package/lib/server.mjs
CHANGED
|
@@ -1,76 +1,65 @@
|
|
|
1
|
-
import { createRequire } from 'module';
|
|
2
|
-
|
|
3
1
|
import launchMiddleware from 'launch-editor-middleware';
|
|
4
2
|
import WebpackDevServer from 'webpack-dev-server';
|
|
5
3
|
|
|
6
4
|
import { notFound } from '../middleware/not-found/index.mjs';
|
|
5
|
+
import { staticFile } from '../middleware/static-file/index.mjs';
|
|
7
6
|
import * as waitPage from '../middleware/wait-page/index.mjs';
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
// https://github.com/webpack/webpack-dev-server/blob/fd2a4e3ea78d877e9a4a7cdf343ef71e55f0cc57/lib/Server.js#L846
|
|
11
|
-
setupHistoryApiFallbackFeature() {
|
|
12
|
-
const requireLazy = createRequire(import.meta.url);
|
|
13
|
-
const historyApiFallback = requireLazy('connect-history-api-fallback');
|
|
14
|
-
|
|
15
|
-
const options =
|
|
16
|
-
typeof this.options.historyApiFallback !== 'boolean'
|
|
17
|
-
? this.options.historyApiFallback
|
|
18
|
-
: {};
|
|
19
|
-
|
|
20
|
-
let logger;
|
|
21
|
-
|
|
22
|
-
if (typeof options.verbose === 'undefined') {
|
|
23
|
-
logger = this.logger.log.bind(
|
|
24
|
-
this.logger,
|
|
25
|
-
'[connect-history-api-fallback]',
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const {
|
|
30
|
-
devMiddleware: {
|
|
31
|
-
publicPath = this.compiler.options.output.publicPath,
|
|
32
|
-
} = {},
|
|
33
|
-
} = this.options;
|
|
34
|
-
|
|
35
|
-
if (publicPath.startsWith('/')) {
|
|
36
|
-
this.app.use(publicPath, historyApiFallback({ logger, ...options }));
|
|
37
|
-
} else {
|
|
38
|
-
this.app.use(historyApiFallback({ logger, ...options }));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function DevServer(
|
|
44
|
-
compiler,
|
|
45
|
-
{ onAfterSetupMiddleware, onBeforeSetupMiddleware, ...options },
|
|
46
|
-
) {
|
|
8
|
+
export function DevServer(compiler, { setupMiddlewares, ...options }) {
|
|
47
9
|
waitPage.apply(compiler);
|
|
48
10
|
|
|
49
11
|
process.env.WEBPACK_DEV_SERVER_BASE_PORT = 1234;
|
|
50
12
|
|
|
51
13
|
const publicPath = options.publicPath || compiler.options.output.publicPath;
|
|
52
14
|
|
|
53
|
-
|
|
15
|
+
/* eslint-disable no-param-reassign */
|
|
16
|
+
if (options.hot === undefined) {
|
|
17
|
+
options.hot = 'only';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (options.static === undefined) {
|
|
21
|
+
options.static = false;
|
|
22
|
+
}
|
|
23
|
+
/* eslint-enable no-param-reassign */
|
|
24
|
+
|
|
25
|
+
const Server = new WebpackDevServer(
|
|
54
26
|
{
|
|
55
27
|
...options,
|
|
56
|
-
|
|
28
|
+
setupMiddlewares(middlewares, devServer) {
|
|
57
29
|
if (process.env.TERM_PROGRAM === 'vscode') {
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
if (typeof onBeforeSetupMiddleware === 'function') {
|
|
61
|
-
onBeforeSetupMiddleware(server);
|
|
30
|
+
devServer.app.use('/__open-in-editor', launchMiddleware('code'));
|
|
62
31
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
32
|
+
|
|
33
|
+
devServer.app.use(staticFile());
|
|
34
|
+
|
|
35
|
+
middlewares.unshift({
|
|
36
|
+
name: 'webpack-wait-page',
|
|
37
|
+
middleware: waitPage.middleware(devServer),
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if (publicPath.startsWith('/')) {
|
|
41
|
+
const index = middlewares.findIndex(
|
|
42
|
+
({ name }) => name === 'connect-history-api-fallback',
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (index > -1) {
|
|
46
|
+
// eslint-disable-next-line no-param-reassign
|
|
47
|
+
middlewares[index].path = publicPath;
|
|
48
|
+
}
|
|
68
49
|
}
|
|
69
|
-
|
|
70
|
-
|
|
50
|
+
|
|
51
|
+
middlewares.push({
|
|
52
|
+
name: 'page-not-found',
|
|
53
|
+
middleware: notFound({
|
|
71
54
|
publicPath: publicPath.startsWith('/') ? publicPath : '/',
|
|
72
55
|
}),
|
|
73
|
-
);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
if (typeof setupMiddlewares === 'function') {
|
|
59
|
+
return setupMiddlewares(middlewares, devServer);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return middlewares;
|
|
74
63
|
},
|
|
75
64
|
},
|
|
76
65
|
compiler,
|
|
@@ -2,28 +2,26 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<meta http-equiv="X-UA-Compatible"
|
|
6
|
-
<meta
|
|
5
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
|
|
6
|
+
<meta content="webkit" name="renderer" />
|
|
7
7
|
<meta
|
|
8
|
-
name="viewport"
|
|
9
8
|
content="width=device-width,initial-scale=1,user-scalable=no,shrink-to-fit=no,viewport-fit=cover"
|
|
9
|
+
name="viewport"
|
|
10
10
|
/>
|
|
11
11
|
<title>Page not found</title>
|
|
12
|
-
<link
|
|
12
|
+
<link href="/.best-shot/logo.png" rel="shortcut icon" type="image/png" />
|
|
13
13
|
<style>
|
|
14
14
|
html {
|
|
15
15
|
min-width: 300px;
|
|
16
16
|
height: 100%;
|
|
17
17
|
min-height: 300px;
|
|
18
|
-
/* stylelint-disable property-no-vendor-prefix */
|
|
19
18
|
-webkit-user-select: none;
|
|
20
19
|
-moz-user-select: none;
|
|
21
20
|
-ms-user-select: none;
|
|
22
21
|
user-select: none;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
img
|
|
26
|
-
h1 {
|
|
24
|
+
img {
|
|
27
25
|
pointer-events: none;
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -33,29 +31,32 @@
|
|
|
33
31
|
align-items: center;
|
|
34
32
|
justify-content: center;
|
|
35
33
|
margin: 0;
|
|
34
|
+
background-color: white;
|
|
36
35
|
height: 100%;
|
|
37
|
-
color: #
|
|
36
|
+
color: #999999;
|
|
38
37
|
font-family: -apple-system, BlinkMacSystemFont, roboto, 'Segoe UI',
|
|
39
38
|
Segoe, Helvetica, Arial, monospace;
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
.logo {
|
|
43
42
|
margin-right: 4%;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
width: 44px;
|
|
44
|
+
width: 8vw;
|
|
45
|
+
width: clamp(32px, 8vw, 54px);
|
|
46
|
+
height: 44px;
|
|
47
|
+
height: 8vw;
|
|
48
|
+
height: clamp(32px, 8vw, 54px);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
.not-found {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
margin-bottom: 20vh;
|
|
53
|
+
width: 60%;
|
|
54
|
+
max-width: 400px;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
font-size: clamp(32px, 8vw, 60px);
|
|
58
|
-
line-height: 0.75;
|
|
57
|
+
header {
|
|
58
|
+
margin-bottom: 20vh;
|
|
59
|
+
text-align: right;
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
h1 {
|
|
@@ -65,43 +66,50 @@
|
|
|
65
66
|
margin: 0;
|
|
66
67
|
width: 100%;
|
|
67
68
|
white-space: nowrap;
|
|
69
|
+
font-size: 44px;
|
|
70
|
+
font-size: 8vw;
|
|
71
|
+
font-size: clamp(32px, 8vw, 60px);
|
|
72
|
+
line-height: 1;
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
p {
|
|
71
76
|
margin-top: 0.5em;
|
|
72
77
|
margin-bottom: 0;
|
|
78
|
+
white-space: nowrap;
|
|
73
79
|
font-size: 18px;
|
|
74
80
|
font-size: 4vw;
|
|
75
81
|
font-size: clamp(14px, 4vw, 22px);
|
|
76
82
|
}
|
|
77
83
|
|
|
78
84
|
a {
|
|
79
|
-
color: #
|
|
85
|
+
color: #9933ff;
|
|
80
86
|
text-decoration: none;
|
|
81
87
|
cursor: pointer;
|
|
82
88
|
}
|
|
89
|
+
|
|
90
|
+
@media (prefers-color-scheme: dark) {
|
|
91
|
+
body {
|
|
92
|
+
background-color: #222222;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
83
95
|
</style>
|
|
84
96
|
</head>
|
|
85
97
|
<body>
|
|
86
|
-
<
|
|
87
|
-
<div style="text-align: right">
|
|
98
|
+
<header>
|
|
88
99
|
<h1>
|
|
89
|
-
<img
|
|
90
|
-
|
|
100
|
+
<img alt="logo" class="logo" src="/.best-shot/logo.svg" />
|
|
101
|
+
BEST SHOT
|
|
91
102
|
</h1>
|
|
92
103
|
<p>Page not found</p>
|
|
93
104
|
[? if (publicPath) { ?]
|
|
94
105
|
<p>
|
|
95
106
|
Back to
|
|
96
|
-
<a
|
|
107
|
+
<a href="[?= publicPath ?]" rel="noopener noreferrer">
|
|
97
108
|
[?= publicPath ?]
|
|
98
109
|
</a>
|
|
99
110
|
</p>
|
|
100
111
|
[? } ?]
|
|
101
|
-
</
|
|
102
|
-
<
|
|
103
|
-
<img src="/.best-shot/404.svg" alt="404" class="not-found" />
|
|
104
|
-
|
|
105
|
-
<div style="flex: 8"></div>
|
|
112
|
+
</header>
|
|
113
|
+
<img alt="404" class="not-found" src="/.best-shot/404.svg" />
|
|
106
114
|
</body>
|
|
107
115
|
</html>
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import { compile } from 'ejs';
|
|
2
|
-
import { Router } from 'express';
|
|
3
1
|
import { readFileSync } from 'fs';
|
|
4
2
|
import { dirname, resolve } from 'path';
|
|
5
3
|
import { fileURLToPath } from 'url';
|
|
6
4
|
|
|
5
|
+
import { compile } from 'ejs';
|
|
6
|
+
import { Router } from 'express';
|
|
7
|
+
|
|
7
8
|
import { isRaw } from '../../lib/utils.mjs';
|
|
8
9
|
|
|
9
10
|
const router = Router({ strict: true });
|
|
10
11
|
|
|
11
12
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
13
|
|
|
13
|
-
router.get(
|
|
14
|
-
'/.best-shot/:name(404.svg|logo.svg|logo.png)',
|
|
15
|
-
({ params: { name } }, res) => {
|
|
16
|
-
res.sendFile(name, { root: __dirname });
|
|
17
|
-
},
|
|
18
|
-
);
|
|
19
|
-
|
|
20
14
|
router.use(({ method, url }, res, next) => {
|
|
21
15
|
if (method !== 'GET' || isRaw(url)) {
|
|
22
16
|
res.status(404).type('text').end();
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 219.289 55.546">
|
|
2
|
+
<path
|
|
3
|
+
fill="#eaebf2"
|
|
4
|
+
d="m216.823-.012-33.578 6.965 5.456 2.98Zm-14.399 17.011-9.176-4.677 23.58-12.335Z"
|
|
5
|
+
/>
|
|
6
|
+
<path
|
|
7
|
+
fill="#ddddea"
|
|
8
|
+
d="m216.823-.012-28.122 9.945 3.254 7.599 1.293-5.206Z"
|
|
9
|
+
/>
|
|
10
|
+
<path fill="#c2c2d3" d="m193.248 12.326-1.293 5.206 5.484-3.13Z" />
|
|
11
|
+
<path
|
|
12
|
+
fill="none"
|
|
13
|
+
stroke="#ddd"
|
|
14
|
+
stroke-dasharray="3 2 3 2"
|
|
15
|
+
stroke-linejoin="bevel"
|
|
16
|
+
stroke-miterlimit="10"
|
|
17
|
+
d="M.174 40.82a101.3 101.3 0 0 0 33.189 5.384c17.724-.348 40.835-7.472 53.346-10.947s20.852-5.56 35.1-5.56 38.228 7.124 37.186 15.813-10.6 7.993-12.511 1.911 5.213-8.862 5.213-8.862 23.458-7.646 36.317-16.855"
|
|
18
|
+
/>
|
|
19
|
+
<path
|
|
20
|
+
fill="#3bf"
|
|
21
|
+
d="m100.029 46.782 12.269-28.607h3.77l-11.963 28.298h19.424v3.316h-23.5Zm16.516-13.237h3.493v22h-3.493Z"
|
|
22
|
+
/>
|
|
23
|
+
<path
|
|
24
|
+
fill="#93f"
|
|
25
|
+
d="M85.231 55.546q-5.127 0-7.778-2.739t-2.649-7.641V28.554q0-4.926 2.664-7.653t7.766-2.727q5.127 0 7.778 2.714t2.651 7.665v16.613q0 4.926-2.664 7.653t-7.768 2.727Zm0-3.368q3.493 0 5.152-1.822a7.442 7.442 0 0 0 1.659-5.19V28.554a7.433 7.433 0 0 0-1.659-5.2q-1.659-1.81-5.152-1.81t-5.152 1.81a7.433 7.433 0 0 0-1.659 5.2v16.612a7.442 7.442 0 0 0 1.659 5.19q1.659 1.822 5.152 1.822Z"
|
|
26
|
+
/>
|
|
27
|
+
<path
|
|
28
|
+
fill="#f46"
|
|
29
|
+
d="m46.843 46.782 12.269-28.607h3.77L50.919 46.473h19.424v3.316h-23.5Zm16.516-13.237h3.493v22h-3.493Z"
|
|
30
|
+
/>
|
|
31
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { dirname } from 'path';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
|
|
4
|
+
import { Router } from 'express';
|
|
5
|
+
|
|
6
|
+
const router = Router({ strict: true });
|
|
7
|
+
|
|
8
|
+
export function staticFile() {
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
|
|
11
|
+
router.get(
|
|
12
|
+
'/.best-shot/:name(404.svg|logo.svg|logo.png)',
|
|
13
|
+
({ params: { name } }, res) => {
|
|
14
|
+
res.sendFile(name, { root: __dirname });
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
return router;
|
|
19
|
+
}
|
|
File without changes
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
|
|
1
3
|
import webpackDevServerWaitpage from 'webpack-dev-server-waitpage';
|
|
2
4
|
|
|
3
5
|
import { isRaw } from '../../lib/utils.mjs';
|
|
@@ -7,9 +9,13 @@ export function apply(compiler) {
|
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
export function middleware(server) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
const template = readFileSync(
|
|
13
|
+
new URL('template.html', import.meta.url),
|
|
14
|
+
'utf8',
|
|
15
|
+
);
|
|
12
16
|
|
|
17
|
+
return webpackDevServerWaitpage(server, {
|
|
18
|
+
template,
|
|
13
19
|
ignore: (req) => isRaw(req.url),
|
|
14
20
|
});
|
|
15
21
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
|
|
6
|
+
<meta content="webkit" name="renderer" />
|
|
7
|
+
<meta
|
|
8
|
+
content="width=device-width,initial-scale=1,user-scalable=no,shrink-to-fit=no,viewport-fit=cover"
|
|
9
|
+
name="viewport"
|
|
10
|
+
/>
|
|
11
|
+
<meta content="1" http-equiv="refresh" />
|
|
12
|
+
<title>Bundling...</title>
|
|
13
|
+
<link href="/.best-shot/logo.png" rel="shortcut icon" type="image/png" />
|
|
14
|
+
<style>
|
|
15
|
+
html {
|
|
16
|
+
min-width: 300px;
|
|
17
|
+
height: 100%;
|
|
18
|
+
min-height: 300px;
|
|
19
|
+
-webkit-user-select: none;
|
|
20
|
+
-moz-user-select: none;
|
|
21
|
+
-ms-user-select: none;
|
|
22
|
+
user-select: none;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
img {
|
|
26
|
+
pointer-events: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
body {
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
margin: 0;
|
|
35
|
+
background-color: white;
|
|
36
|
+
height: 100%;
|
|
37
|
+
color: #999999;
|
|
38
|
+
font-family: -apple-system, BlinkMacSystemFont, roboto, 'Segoe UI',
|
|
39
|
+
Segoe, Helvetica, Arial, monospace;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.logo {
|
|
43
|
+
margin-right: 4%;
|
|
44
|
+
width: 44px;
|
|
45
|
+
width: 8vw;
|
|
46
|
+
width: clamp(32px, 8vw, 54px);
|
|
47
|
+
height: 44px;
|
|
48
|
+
height: 8vw;
|
|
49
|
+
height: clamp(32px, 8vw, 54px);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
header {
|
|
53
|
+
margin-bottom: 20vh;
|
|
54
|
+
text-align: right;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
h1 {
|
|
58
|
+
display: flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
margin: 0;
|
|
62
|
+
width: 100%;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
font-size: 44px;
|
|
65
|
+
font-size: 8vw;
|
|
66
|
+
font-size: clamp(32px, 8vw, 60px);
|
|
67
|
+
line-height: 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
p {
|
|
71
|
+
margin-top: 0.5em;
|
|
72
|
+
margin-bottom: 0;
|
|
73
|
+
white-space: nowrap;
|
|
74
|
+
font-size: 18px;
|
|
75
|
+
font-size: 4vw;
|
|
76
|
+
font-size: clamp(14px, 4vw, 22px);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
progress {
|
|
80
|
+
margin-top: 10px;
|
|
81
|
+
width: 60%;
|
|
82
|
+
height: 24px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@media (prefers-color-scheme: dark) {
|
|
86
|
+
body {
|
|
87
|
+
background-color: #222222;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
91
|
+
</head>
|
|
92
|
+
<body>
|
|
93
|
+
<header>
|
|
94
|
+
<h1>
|
|
95
|
+
<img alt="logo" class="logo" src="/.best-shot/logo.svg" />
|
|
96
|
+
BEST SHOT
|
|
97
|
+
</h1>
|
|
98
|
+
<p>Bundling...</p>
|
|
99
|
+
</header>
|
|
100
|
+
|
|
101
|
+
<% for (var i = 0 ; i < progress.length ; i++) { var percent =
|
|
102
|
+
Math.round(100 * progress[i][0]); %> <%= percent %> %
|
|
103
|
+
<progress max="100" value="<%= percent %>"></progress>
|
|
104
|
+
|
|
105
|
+
<p class="message"><%= progress[i][1] || '' %></p>
|
|
106
|
+
<p class="modules"><%= progress[i][2] || '' %></p>
|
|
107
|
+
<p class="active"><%= progress[i][3] || '' %></p>
|
|
108
|
+
<% for (var m = 4 ; m < progress[i].length; m++) { %>
|
|
109
|
+
<p class="last"><%= progress[i][m] || '' %></p>
|
|
110
|
+
<% } %> <% } %>
|
|
111
|
+
</body>
|
|
112
|
+
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@best-shot/dev-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.2",
|
|
4
4
|
"description": "DevServer support of `@best-shot/cli`",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -30,27 +30,22 @@
|
|
|
30
30
|
"url": "https://github.com/best-shot/best-shot/issues"
|
|
31
31
|
},
|
|
32
32
|
"main": "index.mjs",
|
|
33
|
-
"exports": {
|
|
34
|
-
".": "./index.mjs",
|
|
35
|
-
"./": "./"
|
|
36
|
-
},
|
|
37
33
|
"dependencies": {
|
|
38
|
-
"@best-shot/config": "^0.
|
|
39
|
-
"@best-shot/preset-serve": "^0.7.4",
|
|
34
|
+
"@best-shot/config": "^0.2.8",
|
|
40
35
|
"chalk": "^4.1.2",
|
|
41
36
|
"connect-history-api-fallback": "^1.6.0",
|
|
42
37
|
"ejs": "^3.1.6",
|
|
43
|
-
"express": "^4.17.
|
|
44
|
-
"launch-editor-middleware": "^2.
|
|
38
|
+
"express": "^4.17.2",
|
|
39
|
+
"launch-editor-middleware": "^2.3.0",
|
|
45
40
|
"lodash": "^4.17.21",
|
|
46
|
-
"webpack-dev-server": "^4.
|
|
41
|
+
"webpack-dev-server": "^4.7.3",
|
|
47
42
|
"webpack-dev-server-waitpage": "^2.1.1"
|
|
48
43
|
},
|
|
49
44
|
"peerDependencies": {
|
|
50
|
-
"@best-shot/cli": "^0.
|
|
45
|
+
"@best-shot/cli": "^0.12.3"
|
|
51
46
|
},
|
|
52
47
|
"engines": {
|
|
53
|
-
"node": "^
|
|
48
|
+
"node": "^14.17.0 || >=16.13.0"
|
|
54
49
|
},
|
|
55
50
|
"x-readme": {
|
|
56
51
|
"logo": "https://cdn.jsdelivr.net/gh/best-shot/best-shot/packages/core/logo.svg"
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 361.29 118.5">
|
|
2
|
-
<defs>
|
|
3
|
-
<linearGradient
|
|
4
|
-
id="a"
|
|
5
|
-
x1=".49"
|
|
6
|
-
x2=".49"
|
|
7
|
-
y1="1"
|
|
8
|
-
y2="-.23"
|
|
9
|
-
gradientUnits="objectBoundingBox"
|
|
10
|
-
>
|
|
11
|
-
<stop offset="0" stop-color="#fff" stop-opacity="0" />
|
|
12
|
-
<stop offset=".4" stop-color="#f3f3f3" stop-opacity=".25" />
|
|
13
|
-
<stop offset="1" stop-color="#aa9" />
|
|
14
|
-
</linearGradient>
|
|
15
|
-
</defs>
|
|
16
|
-
<path
|
|
17
|
-
fill="url(#a)"
|
|
18
|
-
d="M219.14-365.3h-361.28c6.71-8.48 16.14-16.43 28.01-23.63a203.46 203.46 0 0141.4-18.57 316.21 316.21 0 0151.86-12.15A398.76 398.76 0 0138.5-424a398.76 398.76 0 0159.37 4.35 316.21 316.21 0 0151.85 12.15 203.46 203.46 0 0141.4 18.57c11.88 7.2 21.3 15.15 28.02 23.63z"
|
|
19
|
-
opacity=".5"
|
|
20
|
-
transform="translate(142.14 483.8)"
|
|
21
|
-
/>
|
|
22
|
-
<path fill="#ddd" d="M180.9 80.1l-43.3 14.4V46.6l43.3-9.6z" />
|
|
23
|
-
<path fill="#eee" d="M180.9 80.1L224 94.5V46.6L180.9 37z" />
|
|
24
|
-
<path
|
|
25
|
-
fill="#aaa"
|
|
26
|
-
d="M180.55 81.6q-10.18 0-15.27-4.72t-5.08-12.75V36.58q0-8.19 5.14-12.83t15.2-4.64q10.13 0 15.24 4.61t5.12 12.86v27.55q0 8.19-5.15 12.83t-15.2 4.64zm0-8.49q5.26 0 7.6-2.4a9.02 9.02 0 002.34-6.58V36.58a9 9 0 00-2.34-6.62q-2.34-2.37-7.6-2.37t-7.6 2.37a9 9 0 00-2.34 6.61v27.56a9.02 9.02 0 002.33 6.59q2.35 2.4 7.6 2.4z"
|
|
27
|
-
/>
|
|
28
|
-
<path fill="#bbb" d="M180.9 108.9l-43.3-14.4V46.6l43.3 14.3z" />
|
|
29
|
-
<path fill="#f2f3f8" d="M171.3 80.1L128 65.7l9.6-19.1 43.3 14.3z" />
|
|
30
|
-
<path
|
|
31
|
-
fill="#aaa"
|
|
32
|
-
d="M79 82.1l23.5-43.2h10.1L89.7 81.6H124v7.8H79v-7.3zm30.2-18.6h9.6v35.1h-9.6V63.5z"
|
|
33
|
-
/>
|
|
34
|
-
<path
|
|
35
|
-
fill="#aaa"
|
|
36
|
-
d="M236.3 82.1l23.5-43.2h10.1L247 81.6h34.4v7.8h-45v-7.3zm30.2-18.6h9.6v35.1h-9.6z"
|
|
37
|
-
/>
|
|
38
|
-
<path
|
|
39
|
-
fill="#999"
|
|
40
|
-
d="M148.3 83.4l-.1 1.5-4-1.4-.1 1.5 3.9 1.4v1.5l-4-1.4V88l4 1.4v1.5l-5.7-1.9.3-7.5z"
|
|
41
|
-
/>
|
|
42
|
-
<path
|
|
43
|
-
fill="#999"
|
|
44
|
-
d="M153.9 90l1 3.2-1.8-.6-1-3.2-1.7-.6-.1 2.8-1.6-.6.2-7.5 5.2 1.8a1.17 1.17 0 01.6.6 1.65 1.65 0 01.2 1l-.2 3.5zm-3.4-2.6l2.8 1 .1-1.7-2.8-1-.1 1.7"
|
|
45
|
-
/>
|
|
46
|
-
<path
|
|
47
|
-
fill="#999"
|
|
48
|
-
d="M161 92.5l1 3.2-1.8-.6-1-3.2-1.7-.6-.1 2.8-1.6-.6.2-7.5 5.2 1.8a1.17 1.17 0 01.6.6 1.65 1.65 0 01.2 1l-.2 3.5zm-3.4-2.7l2.8 1 .1-1.7-2.8-1-.1 1.7"
|
|
49
|
-
/>
|
|
50
|
-
<path
|
|
51
|
-
fill="#999"
|
|
52
|
-
d="M169.2 91.8l-.2 6.3-6.1-2.1.2-7.5 5.2 1.8a1.17 1.17 0 01.6.6.76.76 0 01.3.9zm-4.6 3.3l2.8 1 .2-4.5-2.8-1-.2 4.5"
|
|
53
|
-
/>
|
|
54
|
-
<path
|
|
55
|
-
fill="#999"
|
|
56
|
-
d="M175.1 97.2l1 3.2-1.8-.6-1-3.2-1.7-.6-.1 2.8-1.6-.6.2-7.5 5.2 1.8a1.17 1.17 0 01.6.6 1.65 1.65 0 01.2 1l-.2 3.5zm-3.4-2.6l2.8 1 .1-1.7-2.8-1-.1 1.7"
|
|
57
|
-
/>
|
|
58
|
-
<path fill="#ddd" d="M180.9 108.9L224 94.5V46.6l-43.1 14.3z" />
|
|
59
|
-
<path fill="#fafafa" d="M190.5 80.1l43.1-14.4-9.6-19.1-43.1 14.3z" />
|
|
60
|
-
<path fill="#eaebf2" d="M288.24 0l-34.6 1.1 4.9 4.2z" />
|
|
61
|
-
<path fill="#eaebf2" d="M270.94 15.4l-8.3-6.7 25.6-8.7z" />
|
|
62
|
-
<path fill="#ddddea" d="M288.24 0l-29.7 5.3 1.9 8.7 2.2-5.3z" />
|
|
63
|
-
<path fill="#c2c2d3" d="M262.64 8.7l-2.2 5.3 6-2.3z" />
|
|
64
|
-
<path
|
|
65
|
-
fill="none"
|
|
66
|
-
stroke="#ddd"
|
|
67
|
-
stroke-dasharray="2 2 2 2"
|
|
68
|
-
stroke-linecap="round"
|
|
69
|
-
stroke-miterlimit="10"
|
|
70
|
-
d="M233.64 15.7s-5.8 17.9-17.5 13.7a3.1 3.1 0 01.9-6c2.9-.2 7.3.1 13.7 1 23.1 3.3 26.7-7.4 26.7-7.4"
|
|
71
|
-
/>
|
|
72
|
-
</svg>
|