Skip to content

Commit 56f35c8

Browse files
committed
✨ Add copying server URL to clipboard
1 parent 30b469e commit 56f35c8

File tree

4 files changed

+105
-10
lines changed

4 files changed

+105
-10
lines changed

Diff for: package.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@
2929
"dependencies": {
3030
"autoprefixer": "^9.8.6",
3131
"browserslist-config-vue": "^1.0.3",
32+
"clipboardy": "^2.3.0",
3233
"css-loader": "^4.2.1",
3334
"fibers": "^5.0.0",
3435
"friendly-errors-webpack-plugin": "^1.7.0",
3536
"html-webpack-plugin": "^4.3.0",
3637
"moren": "^3.0.0",
38+
"open": "^7.1.0",
3739
"postcss-loader": "^3.0.0",
3840
"pug": "^3.0.0",
3941
"pug-loader": "^2.4.0",
@@ -62,10 +64,12 @@
6264
"eslint": "^7.6.0",
6365
"eslint-config-gluons": "^6.0.5",
6466
"prettier": "^2.0.5",
67+
"ts-node": "^8.10.2",
6568
"tsconfig-gluons": "^1.1.0",
6669
"type-fest": "^0.16.0",
6770
"typescript": "^3.9.7",
68-
"vue": "^2.6.11"
71+
"vue": "^2.6.11",
72+
"vue-style-loader": "^4.1.2"
6973
},
7074
"peerDependencies": {
7175
"vue": "2"

Diff for: pnpm-lock.yaml

+82-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: src/index.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import clipboardy from 'clipboardy';
12
import moren, { PartialDefaults } from 'moren';
3+
import opn from 'open';
24
import webpack from 'webpack';
35
import WebpackDevServer, {
46
Configuration as DevConfiguration
@@ -14,13 +16,15 @@ export const DefaultOptions: PartialDefaults<Options> = {
1416
},
1517
port: 8080,
1618
open: true,
19+
clipboard: false,
1720
htmlTitle: 'Vue Dev Server',
1821
webpackBarName: 'Vue Dev Server'
1922
};
2023

2124
export default async function serve(options: Options): Promise<void> {
2225
const finalOptions = moren(options, DefaultOptions) as ReadyOptions;
23-
const { port } = finalOptions;
26+
const { port, open, clipboard } = finalOptions;
27+
const serverUrl = `http://localhost:${port}`;
2428
const webpackConfig = createWebpackConfig(finalOptions);
2529
const devConfig = webpackConfig.devServer as DevConfiguration;
2630

@@ -38,4 +42,9 @@ export default async function serve(options: Options): Promise<void> {
3842
}
3943
});
4044
});
45+
46+
await Promise.all<unknown>([
47+
clipboard ? clipboardy.write(serverUrl) : Promise.resolve(),
48+
open ? opn(serverUrl) : Promise.resolve()
49+
]);
4150
}

Diff for: src/types/Options.ts

+8
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ export default interface Options {
4242
* @memberof Options
4343
*/
4444
open?: boolean;
45+
/**
46+
* Copy dev server URL to clipboard.
47+
*
48+
* @type {boolean}
49+
* @default false
50+
* @memberof Options
51+
*/
52+
clipboard?: boolean;
4553
/**
4654
* Title of development webpage
4755
*

0 commit comments

Comments
 (0)