@ -1,17 +0,0 @@
@@ -1,17 +0,0 @@
|
||||
{ |
||||
"env": { |
||||
"browser": true, |
||||
"es2020": true |
||||
}, |
||||
"extends": [ |
||||
"standard" |
||||
], |
||||
"parserOptions": { |
||||
"ecmaVersion": 11 |
||||
}, |
||||
"rules": { |
||||
}, |
||||
"globals": { |
||||
"chrome": "readonly" |
||||
} |
||||
} |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
> 1% |
||||
last 2 versions |
||||
not dead |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
[*.{js,jsx,ts,tsx,vue,less}] |
||||
indent_style = space |
||||
indent_size = 2 |
||||
trim_trailing_whitespace = true |
||||
insert_final_newline = true |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
module.exports = { |
||||
root: true, |
||||
env: { |
||||
node: true |
||||
}, |
||||
extends: [ |
||||
'plugin:vue/essential', |
||||
'@vue/standard' |
||||
], |
||||
parserOptions: { |
||||
parser: 'babel-eslint' |
||||
}, |
||||
rules: { |
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', |
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' |
||||
} |
||||
} |
@ -0,0 +1,23 @@
@@ -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? |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
# bookmark-sync-extension |
||||
|
||||
浏览器书签同步助手 |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
module.exports = { |
||||
presets: [ |
||||
'@vue/cli-plugin-babel/preset' |
||||
] |
||||
} |
@ -1,349 +0,0 @@
@@ -1,349 +0,0 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ |
||||
|
||||
/* Document |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* 1. Correct the line height in all browsers. |
||||
* 2. Prevent adjustments of font size after orientation changes in iOS. |
||||
*/ |
||||
|
||||
html { |
||||
line-height: 1.15; /* 1 */ |
||||
-webkit-text-size-adjust: 100%; /* 2 */ |
||||
} |
||||
|
||||
/* Sections |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* Remove the margin in all browsers. |
||||
*/ |
||||
|
||||
body { |
||||
margin: 0; |
||||
} |
||||
|
||||
/** |
||||
* Render the `main` element consistently in IE. |
||||
*/ |
||||
|
||||
main { |
||||
display: block; |
||||
} |
||||
|
||||
/** |
||||
* Correct the font size and margin on `h1` elements within `section` and |
||||
* `article` contexts in Chrome, Firefox, and Safari. |
||||
*/ |
||||
|
||||
h1 { |
||||
font-size: 2em; |
||||
margin: 0.67em 0; |
||||
} |
||||
|
||||
/* Grouping content |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* 1. Add the correct box sizing in Firefox. |
||||
* 2. Show the overflow in Edge and IE. |
||||
*/ |
||||
|
||||
hr { |
||||
box-sizing: content-box; /* 1 */ |
||||
height: 0; /* 1 */ |
||||
overflow: visible; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* 1. Correct the inheritance and scaling of font size in all browsers. |
||||
* 2. Correct the odd `em` font sizing in all browsers. |
||||
*/ |
||||
|
||||
pre { |
||||
font-family: monospace, monospace; /* 1 */ |
||||
font-size: 1em; /* 2 */ |
||||
} |
||||
|
||||
/* Text-level semantics |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* Remove the gray background on active links in IE 10. |
||||
*/ |
||||
|
||||
a { |
||||
background-color: transparent; |
||||
} |
||||
|
||||
/** |
||||
* 1. Remove the bottom border in Chrome 57- |
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. |
||||
*/ |
||||
|
||||
abbr[title] { |
||||
border-bottom: none; /* 1 */ |
||||
text-decoration: underline; /* 2 */ |
||||
text-decoration: underline dotted; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* Add the correct font weight in Chrome, Edge, and Safari. |
||||
*/ |
||||
|
||||
b, |
||||
strong { |
||||
font-weight: bolder; |
||||
} |
||||
|
||||
/** |
||||
* 1. Correct the inheritance and scaling of font size in all browsers. |
||||
* 2. Correct the odd `em` font sizing in all browsers. |
||||
*/ |
||||
|
||||
code, |
||||
kbd, |
||||
samp { |
||||
font-family: monospace, monospace; /* 1 */ |
||||
font-size: 1em; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* Add the correct font size in all browsers. |
||||
*/ |
||||
|
||||
small { |
||||
font-size: 80%; |
||||
} |
||||
|
||||
/** |
||||
* Prevent `sub` and `sup` elements from affecting the line height in |
||||
* all browsers. |
||||
*/ |
||||
|
||||
sub, |
||||
sup { |
||||
font-size: 75%; |
||||
line-height: 0; |
||||
position: relative; |
||||
vertical-align: baseline; |
||||
} |
||||
|
||||
sub { |
||||
bottom: -0.25em; |
||||
} |
||||
|
||||
sup { |
||||
top: -0.5em; |
||||
} |
||||
|
||||
/* Embedded content |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* Remove the border on images inside links in IE 10. |
||||
*/ |
||||
|
||||
img { |
||||
border-style: none; |
||||
} |
||||
|
||||
/* Forms |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* 1. Change the font styles in all browsers. |
||||
* 2. Remove the margin in Firefox and Safari. |
||||
*/ |
||||
|
||||
button, |
||||
input, |
||||
optgroup, |
||||
select, |
||||
textarea { |
||||
font-family: inherit; /* 1 */ |
||||
font-size: 100%; /* 1 */ |
||||
line-height: 1.15; /* 1 */ |
||||
margin: 0; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* Show the overflow in IE. |
||||
* 1. Show the overflow in Edge. |
||||
*/ |
||||
|
||||
button, |
||||
input { /* 1 */ |
||||
overflow: visible; |
||||
} |
||||
|
||||
/** |
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE. |
||||
* 1. Remove the inheritance of text transform in Firefox. |
||||
*/ |
||||
|
||||
button, |
||||
select { /* 1 */ |
||||
text-transform: none; |
||||
} |
||||
|
||||
/** |
||||
* Correct the inability to style clickable types in iOS and Safari. |
||||
*/ |
||||
|
||||
button, |
||||
[type="button"], |
||||
[type="reset"], |
||||
[type="submit"] { |
||||
-webkit-appearance: button; |
||||
} |
||||
|
||||
/** |
||||
* Remove the inner border and padding in Firefox. |
||||
*/ |
||||
|
||||
button::-moz-focus-inner, |
||||
[type="button"]::-moz-focus-inner, |
||||
[type="reset"]::-moz-focus-inner, |
||||
[type="submit"]::-moz-focus-inner { |
||||
border-style: none; |
||||
padding: 0; |
||||
} |
||||
|
||||
/** |
||||
* Restore the focus styles unset by the previous rule. |
||||
*/ |
||||
|
||||
button:-moz-focusring, |
||||
[type="button"]:-moz-focusring, |
||||
[type="reset"]:-moz-focusring, |
||||
[type="submit"]:-moz-focusring { |
||||
outline: 1px dotted ButtonText; |
||||
} |
||||
|
||||
/** |
||||
* Correct the padding in Firefox. |
||||
*/ |
||||
|
||||
fieldset { |
||||
padding: 0.35em 0.75em 0.625em; |
||||
} |
||||
|
||||
/** |
||||
* 1. Correct the text wrapping in Edge and IE. |
||||
* 2. Correct the color inheritance from `fieldset` elements in IE. |
||||
* 3. Remove the padding so developers are not caught out when they zero out |
||||
* `fieldset` elements in all browsers. |
||||
*/ |
||||
|
||||
legend { |
||||
box-sizing: border-box; /* 1 */ |
||||
color: inherit; /* 2 */ |
||||
display: table; /* 1 */ |
||||
max-width: 100%; /* 1 */ |
||||
padding: 0; /* 3 */ |
||||
white-space: normal; /* 1 */ |
||||
} |
||||
|
||||
/** |
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera. |
||||
*/ |
||||
|
||||
progress { |
||||
vertical-align: baseline; |
||||
} |
||||
|
||||
/** |
||||
* Remove the default vertical scrollbar in IE 10+. |
||||
*/ |
||||
|
||||
textarea { |
||||
overflow: auto; |
||||
} |
||||
|
||||
/** |
||||
* 1. Add the correct box sizing in IE 10. |
||||
* 2. Remove the padding in IE 10. |
||||
*/ |
||||
|
||||
[type="checkbox"], |
||||
[type="radio"] { |
||||
box-sizing: border-box; /* 1 */ |
||||
padding: 0; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* Correct the cursor style of increment and decrement buttons in Chrome. |
||||
*/ |
||||
|
||||
[type="number"]::-webkit-inner-spin-button, |
||||
[type="number"]::-webkit-outer-spin-button { |
||||
height: auto; |
||||
} |
||||
|
||||
/** |
||||
* 1. Correct the odd appearance in Chrome and Safari. |
||||
* 2. Correct the outline style in Safari. |
||||
*/ |
||||
|
||||
[type="search"] { |
||||
-webkit-appearance: textfield; /* 1 */ |
||||
outline-offset: -2px; /* 2 */ |
||||
} |
||||
|
||||
/** |
||||
* Remove the inner padding in Chrome and Safari on macOS. |
||||
*/ |
||||
|
||||
[type="search"]::-webkit-search-decoration { |
||||
-webkit-appearance: none; |
||||
} |
||||
|
||||
/** |
||||
* 1. Correct the inability to style clickable types in iOS and Safari. |
||||
* 2. Change font properties to `inherit` in Safari. |
||||
*/ |
||||
|
||||
::-webkit-file-upload-button { |
||||
-webkit-appearance: button; /* 1 */ |
||||
font: inherit; /* 2 */ |
||||
} |
||||
|
||||
/* Interactive |
||||
========================================================================== */ |
||||
|
||||
/* |
||||
* Add the correct display in Edge, IE 10+, and Firefox. |
||||
*/ |
||||
|
||||
details { |
||||
display: block; |
||||
} |
||||
|
||||
/* |
||||
* Add the correct display in all browsers. |
||||
*/ |
||||
|
||||
summary { |
||||
display: list-item; |
||||
} |
||||
|
||||
/* Misc |
||||
========================================================================== */ |
||||
|
||||
/** |
||||
* Add the correct display in IE 10+. |
||||
*/ |
||||
|
||||
template { |
||||
display: none; |
||||
} |
||||
|
||||
/** |
||||
* Add the correct display in IE 10. |
||||
*/ |
||||
|
||||
[hidden] { |
||||
display: none; |
||||
} |
@ -1,8 +0,0 @@
@@ -1,8 +0,0 @@
|
||||
body { |
||||
font-size: 12px; |
||||
width: 300px; |
||||
max-width: 300px; |
||||
height: 558px; |
||||
max-height: 558px; |
||||
overflow: hidden; |
||||
} |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 495 B |
Before Width: | Height: | Size: 814 B |
Before Width: | Height: | Size: 1.2 KiB |
@ -1,33 +0,0 @@
@@ -1,33 +0,0 @@
|
||||
{ |
||||
"manifest_version": 2, |
||||
"name": "__MSG_name__", |
||||
"version": "1.0", |
||||
"default_locale": "zh_CN", |
||||
"description": "__MSG_description__", |
||||
"icons": { |
||||
"16": "images/get_started16.png", |
||||
"32": "images/get_started32.png", |
||||
"48": "images/get_started48.png", |
||||
"128": "images/get_started128.png" |
||||
}, |
||||
"browser_action": { |
||||
"default_popup": "popup.html", |
||||
"default_icon": { |
||||
"16": "images/get_started16.png", |
||||
"32": "images/get_started32.png", |
||||
"48": "images/get_started48.png", |
||||
"128": "images/get_started128.png" |
||||
} |
||||
}, |
||||
"background": { |
||||
"scripts": ["background.js"], |
||||
"persistent": false |
||||
}, |
||||
"homepage_url": "https://github.com/alvisisme", |
||||
"permissions": [ |
||||
"activeTab", |
||||
"bookmarks", |
||||
"storage" |
||||
], |
||||
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" |
||||
} |
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
{ |
||||
"name": "chrome-extension-syncmarks", |
||||
"version": "1.0.0", |
||||
"description": "A chrome extension to sync bookmarks", |
||||
"private": true, |
||||
"scripts": { |
||||
"serve": "vue-cli-service serve", |
||||
"build": "vue-cli-service build", |
||||
"lint": "vue-cli-service lint" |
||||
}, |
||||
"dependencies": { |
||||
"axios": "^0.21.1", |
||||
"core-js": "^3.6.5", |
||||
"normalize.css": "^8.0.1", |
||||
"vue": "^2.6.11" |
||||
}, |
||||
"devDependencies": { |
||||
"@vue/cli-plugin-babel": "~4.5.0", |
||||
"@vue/cli-plugin-eslint": "~4.5.0", |
||||
"@vue/cli-service": "~4.5.0", |
||||
"@vue/eslint-config-standard": "^5.1.2", |
||||
"babel-eslint": "^10.1.0", |
||||
"eslint": "^6.7.2", |
||||
"eslint-plugin-import": "^2.20.2", |
||||
"eslint-plugin-node": "^11.1.0", |
||||
"eslint-plugin-promise": "^4.2.1", |
||||
"eslint-plugin-standard": "^4.0.0", |
||||
"eslint-plugin-vue": "^6.2.2", |
||||
"html-webpack-plugin": "^5.3.1", |
||||
"less": "^3.0.4", |
||||
"less-loader": "^5.0.0", |
||||
"lint-staged": "^9.5.0", |
||||
"vue-template-compiler": "^2.6.11" |
||||
}, |
||||
"gitHooks": { |
||||
"pre-commit": "lint-staged" |
||||
}, |
||||
"lint-staged": { |
||||
"*.{js,jsx,vue}": [ |
||||
"vue-cli-service lint", |
||||
"git add" |
||||
] |
||||
} |
||||
} |
@ -1,21 +0,0 @@
@@ -1,21 +0,0 @@
|
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
||||
<title>Chrome Bookmarks Sync Tools</title> |
||||
</head> |
||||
<body> |
||||
<div> |
||||
<span>服务器地址</span> |
||||
<input id='server' type="text" value='http://192.168.31.238:3000' placeholder="http://192.168.31.161:3000"> |
||||
<button id='connect' type="button">连接服务器</button> |
||||
<span id='version'></span> |
||||
</div> |
||||
<button id='overwriteSync' type="button">同步(覆盖模式)</button> |
||||
<button id='mergeSync' type="button">同步(合并模式)</button> |
||||
<button id='upload' type="button" >备份</button> |
||||
<button id='removeAll' type="button" >清空</button> |
||||
<script src='./js/popup.js'></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
chrome.runtime.onInstalled.addListener(function() { |
||||
// 扩展第一次安装时触发
|
||||
// alert('安装完成')
|
||||
}) |
||||
|
||||
chrome.bookmarks.onCreated.addListener(function() { |
||||
// alert('新增书签')
|
||||
}) |
||||
// chrome.browserAction.setBadgeText({text: '↑'})
|
||||
// chrome.browserAction.setBadgeText({text: '↓'})
|
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 326 B |
After Width: | Height: | Size: 596 B |
After Width: | Height: | Size: 891 B |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
||||
<title><%= htmlWebpackPlugin.options.title %></title> |
||||
</head> |
||||
<body> |
||||
<noscript> |
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
||||
</noscript> |
||||
<div id="app"></div> |
||||
<!-- built files will be auto injected --> |
||||
</body> |
||||
</html> |
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
{ |
||||
"manifest_version": 2, |
||||
"name": "__MSG_name__", |
||||
"version": "1.0", |
||||
"default_locale": "zh_CN", |
||||
"description": "__MSG_description__", |
||||
"icons": { |
||||
"16": "images/bookmark16.png", |
||||
"32": "images/bookmark32.png", |
||||
"48": "images/bookmark48.png", |
||||
"128": "images/bookmark128.png" |
||||
}, |
||||
"browser_action": { |
||||
"default_popup": "popup.html", |
||||
"default_icon": { |
||||
"16": "images/bookmark16.png", |
||||
"32": "images/bookmark32.png", |
||||
"48": "images/bookmark48.png", |
||||
"128": "images/bookmark128.png" |
||||
} |
||||
}, |
||||
"background": { |
||||
"scripts": [ |
||||
"background.js" |
||||
], |
||||
"persistent": false |
||||
}, |
||||
"options_page": "options.html", |
||||
"homepage_url": "https://github.com/alvisisme", |
||||
"permissions": [ |
||||
"activeTab", |
||||
"bookmarks", |
||||
"storage" |
||||
], |
||||
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" |
||||
} |
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
<template> |
||||
<div id="app"> |
||||
<loading class="loading"></loading> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Loading from '@/components/loading.vue' |
||||
export default { |
||||
name: 'App', |
||||
components: { |
||||
Loading |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.loading { |
||||
height: 24px; |
||||
} |
||||
</style> |
||||
|
||||
<style lang="less"> |
||||
html,body { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
#app { |
||||
font-family: Avenir, Helvetica, Arial, sans-serif; |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
text-align: center; |
||||
color: #2c3e50; |
||||
width: 300px; |
||||
} |
||||
</style> |
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
<template> |
||||
<button class="v-button"> |
||||
<slot></slot> |
||||
</button> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'VButton', |
||||
props: { |
||||
msg: String |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.v-button { |
||||
color: red; |
||||
padding: 6px 24px; |
||||
} |
||||
</style> |
@ -0,0 +1,67 @@
@@ -0,0 +1,67 @@
|
||||
<template> |
||||
<div class="v-col" :class="classes"> |
||||
<slot></slot> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'vCol', |
||||
props: { |
||||
span: { |
||||
type: Number, |
||||
default: 24 |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
classes: { |
||||
} |
||||
} |
||||
}, |
||||
computed: { |
||||
|
||||
}, |
||||
methods: { |
||||
}, |
||||
created () { |
||||
this.classes[`v-col-${this.span}`] = true |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
[class*="v-col-"] { |
||||
float: left; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.v-col-0 { |
||||
display: none; |
||||
} |
||||
|
||||
// 栅格类函数循环 |
||||
.v-col-loop(@n, @i: 0) when (@i <= @n) { |
||||
.v-col-@{i} { |
||||
width: (1 / @n * @i * 100) * 1%; |
||||
} |
||||
|
||||
.v-col-offset-@{i} { |
||||
margin-left: (1 / @n * @i * 100) * 1%; |
||||
} |
||||
|
||||
.v-col-pull-@{i} { |
||||
position: relative; |
||||
right: (1 / @n * @i * 100) * 1%; |
||||
} |
||||
|
||||
.v-col-push-@{i} { |
||||
position: relative; |
||||
left: (1 / @n * @i * 100) * 1%; |
||||
} |
||||
|
||||
.v-col-loop(@n, (@i + 1)); |
||||
} |
||||
|
||||
.v-col-loop(24); |
||||
</style> |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
<template> |
||||
<div class="loading-bar"> |
||||
loading... |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'vLoading' |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.loading-bar { |
||||
width: 100%; |
||||
} |
||||
</style> |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
<template> |
||||
<div class="v-row"> |
||||
<slot></slot> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
name: 'VRow' |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
@import "~@/styles/mixins.less"; |
||||
|
||||
.v-row { |
||||
position: relative; |
||||
box-sizing: border-box; |
||||
|
||||
.utils-clearfix-mixin() |
||||
} |
||||
</style> |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
import Vue from 'vue' |
||||
import 'normalize.css' |
||||
|
||||
import App from './app.vue' |
||||
|
||||
Vue.config.productionTip = false |
||||
|
||||
new Vue({ |
||||
render: h => h(App) |
||||
}).$mount('#app') |
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
<template> |
||||
<div id="app"> |
||||
<v-row> |
||||
<h1>配置页面</h1> |
||||
</v-row> |
||||
<v-row> |
||||
配置项 |
||||
</v-row> |
||||
|
||||
<v-row> |
||||
<v-col :span=12> |
||||
<v-button>保存</v-button> |
||||
</v-col> |
||||
<v-col :span=12> |
||||
<v-button>取消</v-button> |
||||
</v-col> |
||||
</v-row> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import vRow from '@/components/vrow.vue' |
||||
import vCol from '@/components/vcol.vue' |
||||
import vButton from '@/components/vbutton.vue' |
||||
|
||||
export default { |
||||
name: 'App', |
||||
components: { |
||||
vRow, |
||||
vCol, |
||||
vButton |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.loading { |
||||
height: 24px; |
||||
} |
||||
</style> |
||||
|
||||
<style lang="less"> |
||||
html,body { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
#app { |
||||
font-family: Avenir, Helvetica, Arial, sans-serif; |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
text-align: center; |
||||
color: #2c3e50; |
||||
} |
||||
</style> |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
import Vue from 'vue' |
||||
import 'normalize.css' |
||||
|
||||
import App from './app.vue' |
||||
|
||||
Vue.config.productionTip = false |
||||
|
||||
new Vue({ |
||||
render: h => h(App) |
||||
}).$mount('#app') |
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
<template> |
||||
<div id="app"> |
||||
<v-loading class="loading" v-if="loading"></v-loading> |
||||
|
||||
<v-row> |
||||
<v-col :span=12> |
||||
最近更新: |
||||
</v-col> |
||||
<v-col :span=12> |
||||
{{updateTime}} |
||||
</v-col> |
||||
</v-row> |
||||
|
||||
<v-row> |
||||
<v-col :span=12> |
||||
<v-button>上传</v-button> |
||||
</v-col> |
||||
<v-col :span=12> |
||||
<v-button>下载</v-button> |
||||
</v-col> |
||||
</v-row> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import vLoading from '@/components/vloading.vue' |
||||
import vRow from '@/components/vrow.vue' |
||||
import vCol from '@/components/vcol.vue' |
||||
import vButton from '@/components/vbutton.vue' |
||||
|
||||
export default { |
||||
name: 'App', |
||||
components: { |
||||
vLoading, |
||||
vButton, |
||||
vRow, |
||||
vCol |
||||
}, |
||||
data () { |
||||
return { |
||||
loading: false, |
||||
updateTime: new Date() |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="less" scoped> |
||||
.loading { |
||||
height: 24px; |
||||
} |
||||
|
||||
.row { |
||||
position: relative; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.col { |
||||
position: relative; |
||||
box-sizing: border-box; |
||||
float: left; |
||||
} |
||||
|
||||
.col-12 { |
||||
width: 100% * 12 * 1 / 24; |
||||
} |
||||
</style> |
||||
|
||||
<style lang="less"> |
||||
html,body { |
||||
margin: 0; |
||||
padding: 0; |
||||
} |
||||
|
||||
#app { |
||||
font-family: Avenir, Helvetica, Arial, sans-serif; |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
text-align: center; |
||||
color: #2c3e50; |
||||
width: 300px; |
||||
} |
||||
</style> |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
import Vue from 'vue' |
||||
import 'normalize.css' |
||||
|
||||
import App from './app.vue' |
||||
|
||||
Vue.config.productionTip = false |
||||
|
||||
new Vue({ |
||||
render: h => h(App) |
||||
}).$mount('#app') |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
.utils-clearfix-mixin() { |
||||
&::before, |
||||
&::after { |
||||
display: table; |
||||
content: ""; |
||||
} |
||||
|
||||
&::after { |
||||
clear: both; |
||||
} |
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
const HtmlWebpackPlugin = require('html-webpack-plugin') |
||||
|
||||
module.exports = { |
||||
publicPath: '', |
||||
pages: { |
||||
popup: { |
||||
entry: 'src/pages/popup/main.js', |
||||
template: 'public/index.html', |
||||
filename: 'popup.html', |
||||
title: '书签同步助手', |
||||
chunks: ['chunk-vendors', 'chunk-common', 'popup'] // 'chunk-vendors', 'chunk-common' 是公用资源文件
|
||||
}, |
||||
options: { |
||||
entry: 'src/pages/options/main.js', |
||||
template: 'public/index.html', |
||||
filename: 'options.html', |
||||
title: '书签同步助手配置页', |
||||
chunks: ['chunk-vendors', 'chunk-common', 'options'] |
||||
} |
||||
} |
||||
} |
@ -1,23 +0,0 @@
@@ -1,23 +0,0 @@
|
||||
{ |
||||
"name": "chrome-extension-syncmarks", |
||||
"version": "1.0.0", |
||||
"description": "A chrome extension to sync bookmarks", |
||||
"main": "index.js", |
||||
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1" |
||||
}, |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "https://github.com/alvisisme/chrome-extension-syncmarks.git" |
||||
}, |
||||
"author": "", |
||||
"license": "ISC", |
||||
"devDependencies": { |
||||
"eslint": "^7.7.0", |
||||
"eslint-config-standard": "^14.1.1", |
||||
"eslint-plugin-import": "^2.22.0", |
||||
"eslint-plugin-node": "^11.1.0", |
||||
"eslint-plugin-promise": "^4.2.1", |
||||
"eslint-plugin-standard": "^4.0.1" |
||||
} |
||||
} |