relative paths and so on

This commit is contained in:
folex 2019-06-26 17:21:46 +03:00
parent 967c89c2f2
commit fbbe0aec7b
5 changed files with 153 additions and 78 deletions

66
convert.sh Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/perl -w
use strict;
use Getopt::Declare;
use Cwd;
use File::Find;
use HTML::TreeBuilder;
use URI::URL qw(url);
use File::Copy;
use IO::File;
use vars qw($VERSION $BASE_URL $BACKUP $DIRECTORY @WANTED_TYPES);
$VERSION = (qw$Revision: 1.1 $)[1];
#Load the definition and grab the command-line parameters
my $opts = Getopt::Declare->new( do{ local $/; <DATA> } );
#Cycle through this directory, and all those underneath it
find(\&wanted, $DIRECTORY || getcwd);
#Parse each HTML file and make a backup
#of it using File::Copy::copy.
sub wanted {
return unless $File::Find::name =~ /html?$/;
#Extract Links from the file
my $h = HTML::TreeBuilder->new;
$h->parse_file($File::Find::name);
my $link_elements = $h->extract_links(@WANTED_TYPES);
return unless @$link_elements;
#Grab each img src and re-write them so they are relative URL's
foreach my $link_element (@$link_elements) {
my $link = shift @$link_element; #URL value
my $element = shift @$link_element; #HTML::Element Object
my $url = url($link)->canonical;
next unless $url->can('host_port') and
$BASE_URL->host_port eq $url->host_port;
#Sigh.. The following is because extract_links() doesn't
#tell you which attribute $link belongs to, except to say
#it is the value of an attribute in $element.. somewhere.
#Given the $link, find out which attribute it was for
my ($attr) = grep {
defined $element->attr($_) and $link eq $element->attr($_)
} @{ $HTML::Tagset::linkElements{$element->tag} };
#Re-write the attribute in the HTML::Element Tree
#Note: $BASE_URL needs to be quoted here.
$element->attr($attr, $url->path("$BASE_URL"));
}
#Make a backup of the file before over-writing it
copy $File::Find::name => $File::Find::name.'.bak'
if defined $BACKUP;
#Save the updated file
my $fh = IO::File->new($File::Find::name, O_RDWR)
or die "Could not open $File::Find::name: $!";
$fh->print($h->as_HTML);
}

View File

@ -1 +1 @@
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=/favicon.ico><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.2/animate.min.css><title>game</title><link href=/css/app.be4ca99e.css rel=preload as=style><link href=/js/app.eb976afe.js rel=preload as=script><link href=/js/chunk-vendors.6f8ae286.js rel=preload as=script><link href=/css/app.be4ca99e.css rel=stylesheet></head><body><noscript><strong>We're sorry but game doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/js/chunk-vendors.6f8ae286.js></script><script src=/js/app.eb976afe.js></script></body></html> <!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.2/animate.min.css><title>game</title><link href=css/app.be4ca99e.css rel=preload as=style><link href=js/app.eb976afe.js rel=preload as=script><link href=js/chunk-vendors.6f8ae286.js rel=preload as=script><link href=css/app.be4ca99e.css rel=stylesheet></head><body><noscript><strong>We're sorry but game doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.6f8ae286.js></script><script src=js/app.eb976afe.js></script></body></html>

113
package-lock.json generated
View File

@ -3194,7 +3194,8 @@
"version": "4.6.0", "version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true "dev": true,
"optional": true
}, },
"coa": { "coa": {
"version": "2.0.2", "version": "2.0.2",
@ -5863,7 +5864,8 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@ -5884,12 +5886,14 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
@ -5904,17 +5908,20 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
@ -6031,7 +6038,8 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
@ -6043,6 +6051,7 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
@ -6057,6 +6066,7 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
@ -6064,12 +6074,14 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.3.5",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.0" "yallist": "^3.0.0"
@ -6088,6 +6100,7 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
@ -6168,7 +6181,8 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
@ -6180,6 +6194,7 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@ -6265,7 +6280,8 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
@ -6301,6 +6317,7 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
@ -6320,6 +6337,7 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
@ -6363,12 +6381,14 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
} }
} }
}, },
@ -10777,7 +10797,8 @@
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
"dev": true "dev": true,
"optional": true
}, },
"rx-lite-aggregates": { "rx-lite-aggregates": {
"version": "4.0.8", "version": "4.0.8",
@ -12522,14 +12543,6 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true "dev": true
}, },
"typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"requires": {
"is-typedarray": "^1.0.0"
}
},
"typical": { "typical": {
"version": "2.6.1", "version": "2.6.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
@ -13317,8 +13330,32 @@
"integrity": "sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw==", "integrity": "sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw==",
"requires": { "requires": {
"underscore": "1.8.3", "underscore": "1.8.3",
"web3-core-helpers": "1.0.0-beta.37", "web3-core-helpers": "1.0.0-beta.37"
"websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" },
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"websocket": {
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"requires": {
"debug": "^2.2.0",
"nan": "^2.3.3",
"typedarray-to-buffer": "^3.1.2",
"yaeti": "^0.0.6"
}
}
} }
}, },
"web3-shh": { "web3-shh": {
@ -13706,31 +13743,6 @@
"source-map": "~0.6.1" "source-map": "~0.6.1"
} }
}, },
"websocket": {
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible",
"requires": {
"debug": "^2.2.0",
"nan": "^2.3.3",
"typedarray-to-buffer": "^3.1.2",
"yaeti": "^0.0.6"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"websocket-driver": { "websocket-driver": {
"version": "0.7.3", "version": "0.7.3",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
@ -13905,11 +13917,6 @@
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true "dev": true
}, },
"yaeti": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
"integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc="
},
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",

View File

@ -4,7 +4,7 @@
.treasure-btn(@click='lootModal = true') .treasure-btn(@click='lootModal = true')
.treasure-modal(v-if='lootModal') .treasure-modal(v-if='lootModal')
.title LOOTBOX .title LOOTBOX
img.loot(src='/loot.png') img.loot(src='../../public/loot.png')
.btns .btns
.exit(@click='lootModal = false') Cancel .exit(@click='lootModal = false') Cancel
.open(@click='openLootbox') OPEN .open(@click='openLootbox') OPEN
@ -33,15 +33,15 @@
.exit(@click='marketModal = false') Cancel .exit(@click='marketModal = false') Cancel
.quick .quick
.quick-item .quick-item
img(v-if='items.length>0' :src='"/weapeon_"+items[0][1]+".png"') img(v-if='items.length>0' :src='"../../public/weapeon_"+items[0][1]+".png"')
.quick-item .quick-item
img(v-if='items&&items[1]' :src='"/weapeon_"+items[1][1]+".png"') img(v-if='items&&items[1]' :src='"../../public/weapeon_"+items[1][1]+".png"')
.quick-item .quick-item
img(v-if='items&&items[2]' :src='"/weapeon_"+items[2][1]+".png"') img(v-if='items&&items[2]' :src='"../../public/weapeon_"+items[2][1]+".png"')
.quick-item .quick-item
img(v-if='items&&items[3]' :src='"/weapeon_"+items[3][1]+".png"') img(v-if='items&&items[3]' :src='"../../public/weapeon_"+items[3][1]+".png"')
.quick-item .quick-item
img(v-if='items&&items[4]' :src='"/weapeon_"+items[4][1]+".png"') img(v-if='items&&items[4]' :src='"../../public/weapeon_"+items[4][1]+".png"')
.money Cash {{money}}$ .money Cash {{money}}$
.game(@click='shoot') .game(@click='shoot')
.playerFriend(v-for='p in players' :style='{ "left": p.left + "px", "top": p.top + "px", "transform": "rotate("+p.rotate+"deg)" }') .playerFriend(v-for='p in players' :style='{ "left": p.left + "px", "top": p.top + "px", "transform": "rotate("+p.rotate+"deg)" }')
@ -96,7 +96,7 @@ export default {
let id = randomInteger(500, 2000000) let id = randomInteger(500, 2000000)
let x = Math.floor(randomInteger(50, window.innerWidth - 50)) let x = Math.floor(randomInteger(50, window.innerWidth - 50))
let y = Math.floor(randomInteger(50, window.innerHeight - 50)) let y = Math.floor(randomInteger(50, window.innerHeight - 50))
window.session.request(`INSERT INTO enemies VALUES(${id}, 100, ${x}, ${y})`).result().then((r) => { window.session.request(`INSERT INTO enemies VALUES(${id}, 100, ${x}, ${y})`).then((r) => {
this.enemies.push({ this.enemies.push({
left: x, left: x,
top: y, top: y,
@ -214,19 +214,19 @@ export default {
this.enemies.forEach((v, j)=> { this.enemies.forEach((v, j)=> {
if(Math.abs(v.left - e.left) < 30 && Math.abs(v.top - e.top) < 30){ if(Math.abs(v.left - e.left) < 30 && Math.abs(v.top - e.top) < 30){
this.bullets.splice(i, 1) this.bullets.splice(i, 1)
if(v.hp - 10 < 0){ if(v.hp - 10 <= 0){
this.enemies.splice(j, 1) this.enemies.splice(j, 1)
window.session.request(`DELETE FROM ENEMIES WHERE id = ${v.id}`).result().then(r=>{ console.log('killed')
console.log('killed') window.session.request(`DELETE FROM ENEMIES WHERE id = ${v.id}`)
})
this.money += 10 this.money += 10
console.log("SETTING CASH TO " + this.money + " GAME IS " + window.localStorage.getItem("game"))
window.session.request(`UPDATE users SET cash = ${this.money} WHERE id = ${window.localStorage.getItem("game")}`) window.session.request(`UPDATE users SET cash = ${this.money} WHERE id = ${window.localStorage.getItem("game")}`)
this.level = this.level>5?5:this.level + 1 this.level = this.level>5?5:this.level + 1
for(let l=0; l<this.level; l++){ for(let l=0; l<this.level; l++){
let id = randomInteger(500, 2000000) let id = randomInteger(500, 2000000)
let x = Math.floor(randomInteger(50, window.innerWidth - 50)) let x = Math.floor(randomInteger(50, window.innerWidth - 50))
let y = Math.floor(randomInteger(50, window.innerHeight - 50)) let y = Math.floor(randomInteger(50, window.innerHeight - 50))
window.session.request(`INSERT INTO enemies VALUES(${id}, 100, ${x}, ${y})`).result().then((r) => { window.session.request(`INSERT INTO enemies VALUES(${id}, 100, ${x}, ${y})`).then((r) => {
this.enemies.push({ this.enemies.push({
left: x, left: x,
top: y, top: y,
@ -237,9 +237,9 @@ export default {
} }
}else { }else {
v.hp -= 10 v.hp -= 10
window.session.request(`UPDATE enemies SET hp = ${v.hp - 10} WHERE id = ${v.id}`).result().then((r) => { console.log("CASH IS " + this.money + " GAME IS " + window.localStorage.getItem("game"))
console.log('dmg') window.session.request(`UPDATE enemies SET hp = ${v.hp - 10} WHERE id = ${v.id}`)
}) console.log('dmg')
} }
} }
}) })
@ -261,7 +261,6 @@ export default {
console.log("Session created"); console.log("Session created");
window.session = s; window.session = s;
this.getItems() this.getItems()
window.session.request(`SELECT * FROM users`).result().then((r) => {console.log(r.asString())})
}); });
setTimeout(()=>{ setTimeout(()=>{
var arrow = document.getElementById("player"); var arrow = document.getElementById("player");
@ -422,7 +421,7 @@ export default {
width: 90px width: 90px
height: 90px height: 90px
background-repeat: no-repeat background-repeat: no-repeat
background: center center rgba(233,30,99, .4) url(/treasure.png) no-repeat background: center center rgba(233,30,99, .4) url('../../public/treasure.png') no-repeat
border-top-left-radius: 25px border-top-left-radius: 25px
border-bottom-left-radius: 25px border-bottom-left-radius: 25px
border-left: 5px solid rgb(233,30,99) border-left: 5px solid rgb(233,30,99)
@ -536,7 +535,7 @@ export default {
width: 90px width: 90px
height: 90px height: 90px
background-repeat: no-repeat background-repeat: no-repeat
background: center center rgba(233,30,99, .4) url(/auction.png) no-repeat background: center center rgba(233,30,99, .4) url('../../public/auction.png') no-repeat
border-top-left-radius: 25px border-top-left-radius: 25px
border-bottom-left-radius: 25px border-bottom-left-radius: 25px
border-left: 5px solid rgb(233,30,99) border-left: 5px solid rgb(233,30,99)
@ -554,7 +553,7 @@ export default {
width: 90px width: 90px
height: 90px height: 90px
background-repeat: no-repeat background-repeat: no-repeat
background: center center rgba(233,30,99, .4) url(/rucksack.png) no-repeat background: center center rgba(233,30,99, .4) url('../../public/rucksack.png') no-repeat
border-top-left-radius: 25px border-top-left-radius: 25px
border-bottom-left-radius: 25px border-bottom-left-radius: 25px
border-left: 5px solid rgb(233,30,99) border-left: 5px solid rgb(233,30,99)
@ -571,16 +570,16 @@ export default {
right: 15px right: 15px
top: 15px top: 15px
.game .game
background: url('/stone2_b.jpg') background: url('../../public/stone2_b.jpg')
background-size: 42px 32px background-size: 42px 32px
width: 100vw width: 100vw
height: 100vh height: 100vh
cursor: url('/crosshair.png'), auto; cursor: url('../../public/crosshair.png'), auto;
.enemy .enemy
width: 40px width: 40px
height: 40px height: 40px
position: absolute position: absolute
background-image: url(/enemy.png) background-image: url('../../public/enemy.png')
background-size: 100% 100% background-size: 100% 100%
.hp .hp
background: red background: red
@ -593,14 +592,14 @@ export default {
width: 40px width: 40px
height: 40px height: 40px
position: absolute position: absolute
background-image: url(/player.png) background-image: url('../../public/player.png')
background-size: 100% 100% background-size: 100% 100%
transition: top .3s, left .3s transition: top .3s, left .3s
.player .player
width: 40px width: 40px
height: 40px height: 40px
position: absolute position: absolute
background-image: url(/player.png) background-image: url('../../public/player.png')
background-size: 100% 100% background-size: 100% 100%
transition: top .3s, left .3s transition: top .3s, left .3s
.bullet .bullet

3
vue.config.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
publicPath: ''
}