mirror of
https://github.com/pterodactyl/documentation.git
synced 2025-12-11 14:00:27 -06:00
upgrade vuepress and evertythin else to latest version
apart from tailwind
This commit is contained in:
parent
ccebf9cd6c
commit
0d99fbae04
@ -2,7 +2,14 @@ module.exports = {
|
|||||||
base: '/',
|
base: '/',
|
||||||
title: 'Pterodactyl',
|
title: 'Pterodactyl',
|
||||||
description: 'The open-source server management solution.',
|
description: 'The open-source server management solution.',
|
||||||
ga: 'UA-87324178-1',
|
plugins: [
|
||||||
|
['@vuepress/google-analytics', {
|
||||||
|
ga: 'UA-12345678-9'
|
||||||
|
},],
|
||||||
|
['@vuepress/search', {
|
||||||
|
searchMaxSuggestions: 10
|
||||||
|
}]
|
||||||
|
],
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
serve: {
|
serve: {
|
||||||
hot: {
|
hot: {
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="theme-container"
|
<div
|
||||||
|
class="theme-container"
|
||||||
:class="pageClasses"
|
:class="pageClasses"
|
||||||
@touchstart="onTouchStart"
|
@touchstart="onTouchStart"
|
||||||
@touchend="onTouchEnd">
|
@touchend="onTouchEnd"
|
||||||
|
>
|
||||||
<Navbar v-if="shouldShowNavbar" @toggle-sidebar="toggleSidebar" />
|
<Navbar v-if="shouldShowNavbar" @toggle-sidebar="toggleSidebar" />
|
||||||
<div class="sidebar-mask" @click="toggleSidebar(false)"></div>
|
<div class="sidebar-mask" @click="toggleSidebar(false)"></div>
|
||||||
<Sidebar :items="sidebarItems" @toggle-sidebar="toggleSidebar">
|
<Sidebar :items="sidebarItems" @toggle-sidebar="toggleSidebar">
|
||||||
@ -21,13 +23,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Vue from 'vue';
|
import Vue from "vue";
|
||||||
import nprogress from 'nprogress';
|
import nprogress from "nprogress";
|
||||||
import Home from './Home.vue';
|
import Home from "./Home.vue";
|
||||||
import Navbar from './Navbar.vue';
|
import Navbar from "./Navbar.vue";
|
||||||
import Page from './Page.vue';
|
import Page from "./Page.vue";
|
||||||
import Sidebar from './Sidebar.vue';
|
import Sidebar from "./Sidebar.vue";
|
||||||
import { resolveSidebarItems } from './util';
|
import { resolveSidebarItems } from "./util";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Home, Page, Sidebar, Navbar },
|
components: { Home, Page, Sidebar, Navbar },
|
||||||
@ -41,9 +43,7 @@
|
|||||||
shouldShowNavbar() {
|
shouldShowNavbar() {
|
||||||
const { themeConfig } = this.$site;
|
const { themeConfig } = this.$site;
|
||||||
const { frontmatter } = this.$page;
|
const { frontmatter } = this.$page;
|
||||||
if (
|
if (frontmatter.navbar === false || themeConfig.navbar === false) {
|
||||||
frontmatter.navbar === false ||
|
|
||||||
themeConfig.navbar === false) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
@ -75,9 +75,9 @@
|
|||||||
const userPageClass = this.$page.frontmatter.pageClass;
|
const userPageClass = this.$page.frontmatter.pageClass;
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'no-navbar': ! this.shouldShowNavbar,
|
"no-navbar": !this.shouldShowNavbar,
|
||||||
'sidebar-open': this.isSidebarOpen,
|
"sidebar-open": this.isSidebarOpen,
|
||||||
'no-sidebar': ! this.shouldShowSidebar
|
"no-sidebar": !this.shouldShowSidebar
|
||||||
},
|
},
|
||||||
userPageClass
|
userPageClass
|
||||||
];
|
];
|
||||||
@ -85,7 +85,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
window.addEventListener('scroll', this.onScroll);
|
window.addEventListener("scroll", this.onScroll);
|
||||||
|
|
||||||
// configure progress bar
|
// configure progress bar
|
||||||
nprogress.configure({ showSpinner: false });
|
nprogress.configure({ showSpinner: false });
|
||||||
@ -105,7 +105,7 @@
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
toggleSidebar(to) {
|
toggleSidebar(to) {
|
||||||
this.isSidebarOpen = typeof to === 'boolean' ? to : ! this.isSidebarOpen;
|
this.isSidebarOpen = typeof to === "boolean" ? to : !this.isSidebarOpen;
|
||||||
},
|
},
|
||||||
// side swipe
|
// side swipe
|
||||||
onTouchStart(e) {
|
onTouchStart(e) {
|
||||||
@ -130,4 +130,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style src="prismjs/themes/prism-tomorrow.css"></style>
|
<style src="prismjs/themes/prism-tomorrow.css"></style>
|
||||||
<style src="./styles/main.css" lang="postcss"></style>
|
<style lang="postcss">
|
||||||
|
@import "./styles/main.css";
|
||||||
|
</style>
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<header class="nav">
|
<header class="nav">
|
||||||
<SidebarButton class="block md:hidden flex-no-shrink" @toggle-sidebar="$emit('toggle-sidebar')"/>
|
<SidebarButton
|
||||||
|
class="block md:hidden flex-no-shrink"
|
||||||
|
@toggle-sidebar="$emit('toggle-sidebar')"
|
||||||
|
/>
|
||||||
<div class="logo-container">
|
<div class="logo-container">
|
||||||
<router-link :to="$localePath" class="home-link">
|
<router-link :to="$localePath" class="home-link">
|
||||||
<img class="logo"
|
<img class="logo" v-if="$site.themeConfig.logo" :src="$withBase($site.themeConfig.logo)" />
|
||||||
v-if="$site.themeConfig.logo"
|
<span
|
||||||
:src="$withBase($site.themeConfig.logo)">
|
class="site-name hidden md:inline"
|
||||||
<span class="site-name hidden md:inline"
|
|
||||||
v-if="$siteTitle"
|
v-if="$siteTitle"
|
||||||
:class="{ 'can-hide': $site.themeConfig.logo }">
|
:class="{ 'can-hide': $site.themeConfig.logo }"
|
||||||
{{ $siteTitle }}
|
>{{ $siteTitle }}</span>
|
||||||
</span>
|
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
@ -23,20 +24,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import SidebarButton from './SidebarButton.vue';
|
import SidebarButton from "./SidebarButton.vue";
|
||||||
import AlgoliaSearchBox from '@AlgoliaSearchBox';
|
import SearchBox from "./SearchBox.vue";
|
||||||
import SearchBox from './SearchBox.vue';
|
import NavLinks from "./NavLinks.vue";
|
||||||
import NavLinks from './NavLinks.vue';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { SidebarButton, NavLinks, SearchBox, AlgoliaSearchBox },
|
components: { SidebarButton, NavLinks, SearchBox },
|
||||||
computed: {
|
computed: {}
|
||||||
algolia() {
|
|
||||||
return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {};
|
|
||||||
},
|
|
||||||
isAlgoliaSearch() {
|
|
||||||
return this.algolia && this.algolia.apiKey && this.algolia.indexName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<slot name="top" />
|
<slot name="top" />
|
||||||
<Content :custom="false"/>
|
<Content class="content" :custom="false" />
|
||||||
<div class="page-edit">
|
<div class="page-edit">
|
||||||
<div class="edit-link" v-if="editLink">
|
<div class="edit-link" v-if="editLink">
|
||||||
<a :href="editLink" target="_blank" rel="noopener noreferrer">{{ editLinkText }}</a>
|
<a :href="editLink" target="_blank" rel="noopener noreferrer">{{ editLinkText }}</a>
|
||||||
@ -16,7 +16,8 @@
|
|||||||
<p class="inner"></p>
|
<p class="inner"></p>
|
||||||
<div class="prev">
|
<div class="prev">
|
||||||
<span v-if="prev">
|
<span v-if="prev">
|
||||||
← <router-link v-if="prev" :to="prev.path">{{ prev.title || prev.path }}</router-link>
|
←
|
||||||
|
<router-link v-if="prev" :to="prev.path">{{ prev.title || prev.path }}</router-link>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="next">
|
<div class="next">
|
||||||
@ -30,10 +31,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { resolvePage, normalize, outboundRE, endingSlashRE } from './util';
|
import { resolvePage, normalize, outboundRE, endingSlashRE } from "./util";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: ['sidebarItems'],
|
props: ["sidebarItems"],
|
||||||
computed: {
|
computed: {
|
||||||
lastUpdated() {
|
lastUpdated() {
|
||||||
if (this.$page.lastUpdated) {
|
if (this.$page.lastUpdated) {
|
||||||
@ -41,13 +42,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
lastUpdatedText() {
|
lastUpdatedText() {
|
||||||
if (typeof this.$themeLocaleConfig.lastUpdated === 'string') {
|
if (typeof this.$themeLocaleConfig.lastUpdated === "string") {
|
||||||
return this.$themeLocaleConfig.lastUpdated;
|
return this.$themeLocaleConfig.lastUpdated;
|
||||||
}
|
}
|
||||||
if (typeof this.$site.themeConfig.lastUpdated === 'string') {
|
if (typeof this.$site.themeConfig.lastUpdated === "string") {
|
||||||
return this.$site.themeConfig.lastUpdated;
|
return this.$site.themeConfig.lastUpdated;
|
||||||
}
|
}
|
||||||
return 'Last Updated';
|
return "Last Updated";
|
||||||
},
|
},
|
||||||
prev() {
|
prev() {
|
||||||
const prev = this.$page.frontmatter.prev;
|
const prev = this.$page.frontmatter.prev;
|
||||||
@ -76,16 +77,16 @@
|
|||||||
const {
|
const {
|
||||||
repo,
|
repo,
|
||||||
editLinks,
|
editLinks,
|
||||||
docsDir = '',
|
docsDir = "",
|
||||||
docsBranch = 'master',
|
docsBranch = "master",
|
||||||
docsRepo = repo
|
docsRepo = repo
|
||||||
} = this.$site.themeConfig;
|
} = this.$site.themeConfig;
|
||||||
|
|
||||||
let path = normalize(this.$page.path);
|
let path = normalize(this.$page.path);
|
||||||
if (endingSlashRE.test(path)) {
|
if (endingSlashRE.test(path)) {
|
||||||
path += 'README.md';
|
path += "README.md";
|
||||||
} else {
|
} else {
|
||||||
path += '.md';
|
path += ".md";
|
||||||
}
|
}
|
||||||
if (docsRepo && editLinks) {
|
if (docsRepo && editLinks) {
|
||||||
return this.createEditLink(repo, docsRepo, docsDir, docsBranch, path);
|
return this.createEditLink(repo, docsRepo, docsDir, docsBranch, path);
|
||||||
@ -103,13 +104,11 @@
|
|||||||
createEditLink(repo, docsRepo, docsDir, docsBranch, path) {
|
createEditLink(repo, docsRepo, docsDir, docsBranch, path) {
|
||||||
const bitbucket = /bitbucket.org/;
|
const bitbucket = /bitbucket.org/;
|
||||||
if (bitbucket.test(repo)) {
|
if (bitbucket.test(repo)) {
|
||||||
const base = outboundRE.test(docsRepo)
|
const base = outboundRE.test(docsRepo) ? docsRepo : repo;
|
||||||
? docsRepo
|
|
||||||
: repo;
|
|
||||||
return (
|
return (
|
||||||
base.replace(endingSlashRE, '') +
|
base.replace(endingSlashRE, "") +
|
||||||
`/${docsBranch}` +
|
`/${docsBranch}` +
|
||||||
(docsDir ? '/' + docsDir.replace(endingSlashRE, '') : '') +
|
(docsDir ? "/" + docsDir.replace(endingSlashRE, "") : "") +
|
||||||
path +
|
path +
|
||||||
`?mode=edit&spa=0&at=${docsBranch}&fileviewer=file-view-default`
|
`?mode=edit&spa=0&at=${docsBranch}&fileviewer=file-view-default`
|
||||||
);
|
);
|
||||||
@ -120,9 +119,9 @@
|
|||||||
: `https://github.com/${docsRepo}`;
|
: `https://github.com/${docsRepo}`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
base.replace(endingSlashRE, '') +
|
base.replace(endingSlashRE, "") +
|
||||||
`/edit/${docsBranch}` +
|
`/edit/${docsBranch}` +
|
||||||
(docsDir ? '/' + docsDir.replace(endingSlashRE, '') : '') +
|
(docsDir ? "/" + docsDir.replace(endingSlashRE, "") : "") +
|
||||||
path
|
path
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -140,15 +139,15 @@
|
|||||||
function find(page, items, offset) {
|
function find(page, items, offset) {
|
||||||
const res = [];
|
const res = [];
|
||||||
items.forEach(item => {
|
items.forEach(item => {
|
||||||
if (item.type === 'group') {
|
if (item.type === "group") {
|
||||||
res.push(...item.children || []);
|
res.push(...(item.children || []));
|
||||||
} else {
|
} else {
|
||||||
res.push(item);
|
res.push(item);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for (let i = 0; i < res.length; i++) {
|
for (let i = 0; i < res.length; i++) {
|
||||||
const cur = res[i];
|
const cur = res[i];
|
||||||
if (cur.type === 'page' && cur.path === page.path) {
|
if (cur.type === "page" && cur.path === page.path) {
|
||||||
return res[i + offset];
|
return res[i + offset];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,14 +11,18 @@
|
|||||||
@blur="focused = false"
|
@blur="focused = false"
|
||||||
@keyup.enter="go(focusIndex)"
|
@keyup.enter="go(focusIndex)"
|
||||||
@keyup.up="onUp"
|
@keyup.up="onUp"
|
||||||
@keyup.down="onDown">
|
@keyup.down="onDown"
|
||||||
|
/>
|
||||||
<div class="suggestion-container" v-if="showSuggestions" @mouseleave="unfocus">
|
<div class="suggestion-container" v-if="showSuggestions" @mouseleave="unfocus">
|
||||||
<div class="suggestion-padding"></div>
|
<div class="suggestion-padding"></div>
|
||||||
<ul class="suggestions" :class="{ 'align-right': alignRight }">
|
<ul class="suggestions" :class="{ 'align-right': alignRight }">
|
||||||
<li class="suggestion" v-for="(s, i) in suggestions"
|
<li
|
||||||
|
class="suggestion"
|
||||||
|
v-for="(s, i) in suggestions"
|
||||||
:class="{ focused: i === focusIndex }"
|
:class="{ focused: i === focusIndex }"
|
||||||
@mousedown="go(i)"
|
@mousedown="go(i)"
|
||||||
@mouseenter="focus(i)">
|
@mouseenter="focus(i)"
|
||||||
|
>
|
||||||
<a :href="s.path" @click.prevent>
|
<a :href="s.path" @click.prevent>
|
||||||
<span class="page-title">{{ s.title || s.path }}</span>
|
<span class="page-title">{{ s.title || s.path }}</span>
|
||||||
<span v-if="s.header" class="header">> {{ s.header.title }}</span>
|
<span v-if="s.header" class="header">> {{ s.header.title }}</span>
|
||||||
@ -33,18 +37,14 @@
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
query: '',
|
query: "",
|
||||||
focused: false,
|
focused: false,
|
||||||
focusIndex: 0
|
focusIndex: 0
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
showSuggestions() {
|
showSuggestions() {
|
||||||
return (
|
return this.focused && this.suggestions && this.suggestions.length;
|
||||||
this.focused &&
|
|
||||||
this.suggestions &&
|
|
||||||
this.suggestions.length
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
suggestions() {
|
suggestions() {
|
||||||
const query = this.query.trim().toLowerCase();
|
const query = this.query.trim().toLowerCase();
|
||||||
@ -55,10 +55,8 @@
|
|||||||
const { pages, themeConfig } = this.$site;
|
const { pages, themeConfig } = this.$site;
|
||||||
const max = themeConfig.searchMaxSuggestions || 5;
|
const max = themeConfig.searchMaxSuggestions || 5;
|
||||||
const localePath = this.$localePath;
|
const localePath = this.$localePath;
|
||||||
const matches = item => (
|
const matches = item =>
|
||||||
item.title &&
|
item.title && item.title.toLowerCase().indexOf(query) > -1;
|
||||||
item.title.toLowerCase().indexOf(query) > - 1
|
|
||||||
);
|
|
||||||
const res = [];
|
const res = [];
|
||||||
for (let i = 0; i < pages.length; i++) {
|
for (let i = 0; i < pages.length; i++) {
|
||||||
if (res.length >= max) break;
|
if (res.length >= max) break;
|
||||||
@ -74,10 +72,12 @@
|
|||||||
if (res.length >= max) break;
|
if (res.length >= max) break;
|
||||||
const h = p.headers[j];
|
const h = p.headers[j];
|
||||||
if (matches(h)) {
|
if (matches(h)) {
|
||||||
res.push(Object.assign({}, p, {
|
res.push(
|
||||||
path: p.path + '#' + h.slug,
|
Object.assign({}, p, {
|
||||||
|
path: p.path + "#" + h.slug,
|
||||||
header: h
|
header: h
|
||||||
}));
|
})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,11 +94,11 @@
|
|||||||
methods: {
|
methods: {
|
||||||
getPageLocalePath(page) {
|
getPageLocalePath(page) {
|
||||||
for (const localePath in this.$site.locales || {}) {
|
for (const localePath in this.$site.locales || {}) {
|
||||||
if (localePath !== '/' && page.path.indexOf(localePath) === 0) {
|
if (localePath !== "/" && page.path.indexOf(localePath) === 0) {
|
||||||
return localePath;
|
return localePath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return '/';
|
return "/";
|
||||||
},
|
},
|
||||||
onUp() {
|
onUp() {
|
||||||
if (this.showSuggestions) {
|
if (this.showSuggestions) {
|
||||||
@ -123,7 +123,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.$router.push(this.suggestions[i].path);
|
this.$router.push(this.suggestions[i].path);
|
||||||
this.query = '';
|
this.query = "";
|
||||||
this.focusIndex = 0;
|
this.focusIndex = 0;
|
||||||
},
|
},
|
||||||
focus(i) {
|
focus(i) {
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'et-line';
|
font-family: 'et-line';
|
||||||
src:url('../fonts/et-line/et-line.eot');
|
src:url('./fonts/et-line/et-line.eot');
|
||||||
src:url('../fonts/et-line/et-line.eot?#iefix') format('embedded-opentype'),
|
src:url('./fonts/et-line/et-line.eot?#iefix') format('embedded-opentype'),
|
||||||
url('../fonts/et-line/et-line.woff') format('woff'),
|
url('./fonts/et-line/et-line.woff') format('woff'),
|
||||||
url('../fonts/et-line/et-line.ttf') format('truetype'),
|
url('./fonts/et-line/et-line.ttf') format('truetype'),
|
||||||
url('../fonts/et-line/et-line.svg#et-line') format('svg');
|
url('./fonts/et-line/et-line.svg#et-line') format('svg');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -118,7 +118,7 @@
|
|||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
/* Slider */
|
/* Slider */
|
||||||
.slick-loading .slick-list {
|
.slick-loading .slick-list {
|
||||||
background: #fff url('../../public/frontpage/loading.svg') center center no-repeat;
|
background: #fff url('../public/frontpage/loading.svg') center center no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Icons */
|
/* Icons */
|
||||||
@ -127,8 +127,8 @@
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
||||||
src: url('../fonts/slick/slick.eot');
|
src: url('./fonts/slick/slick.eot');
|
||||||
src: url('../fonts/slick/slick.eot?#iefix') format('embedded-opentype'), url('../fonts/slick/slick.woff') format('woff'), url('../fonts/slick/slick.ttf') format('truetype'), url('../fonts/slick/slick.svg#slick') format('svg');
|
src: url('./fonts/slick/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick/slick.woff') format('woff'), url('./fonts/slick/slick.ttf') format('truetype'), url('./fonts/slick/slick.svg#slick') format('svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Arrows */
|
/* Arrows */
|
||||||
|
|||||||
11
package.json
11
package.json
@ -1,19 +1,20 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vuepress/plugin-google-analytics": "^1.0.0-rc.1",
|
||||||
"jquery": "^3.3.1",
|
"jquery": "^3.3.1",
|
||||||
"slick-carousel": "^1.8.1",
|
"slick-carousel": "^1.8.1",
|
||||||
"vuepress": "^0.14.8"
|
"vuepress": "^1.4.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "./node_modules/vuepress/bin/vuepress.js build",
|
"build": "vuepress build",
|
||||||
"watch": "./node_modules/vuepress/bin/vuepress.js dev"
|
"watch": "vuepress dev"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^9.0.1",
|
"autoprefixer": "^9.0.1",
|
||||||
"cssnano": "^4.0.3",
|
"cssnano": "^4.0.3",
|
||||||
"lodash": "^4.17.13",
|
"lodash": "^4.17.13",
|
||||||
"postcss-import": "^11.1.0",
|
"postcss-import": "^12.0.0",
|
||||||
"precss": "^3.1.2",
|
"precss": "^4.0.0",
|
||||||
"tailwindcss": "^0.6.4"
|
"tailwindcss": "^0.6.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user