mirror of https://github.com/halo-dev/halo
chore: remove moment dependency. (halo-dev/console#256)
parent
75cd1476c8
commit
ce46fee0bb
|
@ -2462,18 +2462,6 @@
|
|||
"supports-color": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
@ -2603,31 +2591,6 @@
|
|||
"webpack-sources": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.8",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.8.tgz",
|
||||
"integrity": "sha512-oouKUQWWHbSihqSD7mhymGPX1OQ4hedzAHyvm8RdyHh6m3oIvoRF+NM45i/bhNOlo8jCnuJhaSUf/6oDjv978g==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
||||
|
@ -6083,6 +6046,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"dayjs": {
|
||||
"version": "1.8.36",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz",
|
||||
"integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw=="
|
||||
},
|
||||
"de-indent": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
|
||||
|
@ -16154,6 +16122,88 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.8",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.8.tgz",
|
||||
"integrity": "sha512-oouKUQWWHbSihqSD7mhymGPX1OQ4hedzAHyvm8RdyHh6m3oIvoRF+NM45i/bhNOlo8jCnuJhaSUf/6oDjv978g==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-ls": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.1.tgz",
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
"dependencies": {
|
||||
"ant-design-vue": "^1.6.5",
|
||||
"axios": "^0.19.2",
|
||||
"dayjs": "^1.8.36",
|
||||
"enquire.js": "^2.1.6",
|
||||
"filepond": "^4.20.1",
|
||||
"filepond-plugin-image-preview": "^4.6.4",
|
||||
"flv.js": "^1.5.0",
|
||||
"halo-editor": "^2.8.2",
|
||||
"marked": "^1.1.1",
|
||||
"moment": "^2.27.0",
|
||||
"tiny-pinyin": "^1.3.0",
|
||||
"verte": "^0.0.12",
|
||||
"vue": "^2.6.12",
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
import dayjs from 'dayjs'
|
||||
import 'dayjs/locale/zh-cn'
|
||||
dayjs.locale('zh-cn')
|
||||
|
||||
function datetimeFormat(datetime = new Date(), pattern = 'YYYY-MM-DD HH:mm') {
|
||||
return dayjs(datetime).format(pattern)
|
||||
}
|
||||
|
||||
function timeAgo(datetime) {
|
||||
var currentTime = new Date().getTime()
|
||||
var between = currentTime - datetime
|
||||
var days = Math.floor(between / (24 * 3600 * 1000))
|
||||
if (days === 0) {
|
||||
var leave1 = between % (24 * 3600 * 1000)
|
||||
var hours = Math.floor(leave1 / (3600 * 1000))
|
||||
if (hours === 0) {
|
||||
var leave2 = leave1 % (3600 * 1000)
|
||||
var minutes = Math.floor(leave2 / (60 * 1000))
|
||||
if (minutes === 0) {
|
||||
var leave3 = leave2 % (60 * 1000)
|
||||
var seconds = Math.round(leave3 / 1000)
|
||||
return seconds + ' 秒前'
|
||||
}
|
||||
return minutes + ' 分钟前'
|
||||
}
|
||||
return hours + ' 小时前'
|
||||
}
|
||||
if (days < 0) return '刚刚'
|
||||
if (days < 5) {
|
||||
return days + ' 天前'
|
||||
} else {
|
||||
return dayjs(datetime).format('YYYY-MM-DD HH:mm')
|
||||
}
|
||||
}
|
||||
|
||||
export { datetimeFormat, timeAgo }
|
|
@ -1,10 +1,10 @@
|
|||
import Vue from 'vue'
|
||||
import moment from 'moment'
|
||||
import 'moment/locale/zh-cn'
|
||||
import {
|
||||
timeAgo
|
||||
} from '@/utils/util'
|
||||
moment.locale('zh-cn')
|
||||
|
||||
import dayjs from 'dayjs'
|
||||
import 'dayjs/locale/zh-cn'
|
||||
|
||||
import { timeAgo } from '@/utils/datetime'
|
||||
dayjs.locale('zh-cn')
|
||||
|
||||
Vue.filter('NumberFormat', function(value) {
|
||||
if (!value) {
|
||||
|
@ -14,20 +14,16 @@ Vue.filter('NumberFormat', function(value) {
|
|||
return intPartFormat
|
||||
})
|
||||
|
||||
Vue.filter('dayjs', function(dataStr, pattern = 'YYYY-MM-DD HH:mm') {
|
||||
return moment(dataStr).format(pattern)
|
||||
})
|
||||
|
||||
Vue.filter('moment', function(dataStr, pattern = 'YYYY-MM-DD HH:mm') {
|
||||
return moment(dataStr).format(pattern)
|
||||
return dayjs(dataStr).format(pattern)
|
||||
})
|
||||
|
||||
Vue.filter('moment_post_date', function(dataStr, pattern = '/YYYY/MM/') {
|
||||
return moment(dataStr).format(pattern)
|
||||
return dayjs(dataStr).format(pattern)
|
||||
})
|
||||
|
||||
Vue.filter('moment_post_day', function(dataStr, pattern = '/YYYY/MM/DD/') {
|
||||
return moment(dataStr).format(pattern)
|
||||
return dayjs(dataStr).format(pattern)
|
||||
})
|
||||
|
||||
Vue.filter('timeAgo', timeAgo)
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
import moment from 'moment'
|
||||
import 'moment/locale/zh-cn'
|
||||
/**
|
||||
* 触发 window.resize
|
||||
*/
|
||||
|
||||
export function triggerWindowResizeEvent() {
|
||||
const event = document.createEvent('HTMLEvents')
|
||||
event.initEvent('resize', true, true)
|
||||
|
@ -10,41 +6,10 @@ export function triggerWindowResizeEvent() {
|
|||
window.dispatchEvent(event)
|
||||
}
|
||||
|
||||
export function timeAgo(time) {
|
||||
var currentTime = new Date().getTime()
|
||||
var between = currentTime - time
|
||||
var days = Math.floor(between / (24 * 3600 * 1000))
|
||||
if (days === 0) {
|
||||
var leave1 = between % (24 * 3600 * 1000)
|
||||
var hours = Math.floor(leave1 / (3600 * 1000))
|
||||
if (hours === 0) {
|
||||
var leave2 = leave1 % (3600 * 1000)
|
||||
var minutes = Math.floor(leave2 / (60 * 1000))
|
||||
if (minutes === 0) {
|
||||
var leave3 = leave2 % (60 * 1000)
|
||||
var seconds = Math.round(leave3 / 1000)
|
||||
return seconds + ' 秒前'
|
||||
}
|
||||
return minutes + ' 分钟前'
|
||||
}
|
||||
return hours + ' 小时前'
|
||||
}
|
||||
if (days < 0) return '刚刚'
|
||||
if (days < 5) {
|
||||
return days + ' 天前'
|
||||
} else {
|
||||
return moment(time).format('YYYY-MM-DD HH:mm')
|
||||
}
|
||||
}
|
||||
|
||||
export function isObject(value) {
|
||||
return value && typeof value === 'object' && value.constructor === Object
|
||||
}
|
||||
|
||||
export function datetimeFormat(value, pattern = 'YYYY-MM-DD HH:mm') {
|
||||
return moment(value).format(pattern)
|
||||
}
|
||||
|
||||
// decode html tag
|
||||
export function decodeHTML(html) {
|
||||
let elem = document.createElement('div')
|
||||
|
|
|
@ -74,7 +74,8 @@
|
|||
<script>
|
||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
// import { mapGetters } from 'vuex'
|
||||
import moment from 'moment'
|
||||
import { datetimeFormat } from '@/utils/datetime'
|
||||
|
||||
import PostSettingDrawer from './components/PostSettingDrawer'
|
||||
import AttachmentDrawer from '../attachment/components/AttachmentDrawer'
|
||||
import FooterToolBar from '@/components/FooterToolbar'
|
||||
|
@ -88,7 +89,7 @@ export default {
|
|||
PostSettingDrawer,
|
||||
FooterToolBar,
|
||||
AttachmentDrawer,
|
||||
MarkdownEditor
|
||||
MarkdownEditor,
|
||||
// RichTextEditor
|
||||
},
|
||||
data() {
|
||||
|
@ -102,7 +103,7 @@ export default {
|
|||
contentChanges: 0,
|
||||
draftSaving: false,
|
||||
previewSaving: false,
|
||||
draftSavederrored: false
|
||||
draftSavederrored: false,
|
||||
}
|
||||
},
|
||||
beforeRouteEnter(to, from, next) {
|
||||
|
@ -150,7 +151,7 @@ export default {
|
|||
},
|
||||
onCancel() {
|
||||
next(false)
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
},
|
||||
|
@ -171,12 +172,12 @@ export default {
|
|||
if (newValue) {
|
||||
this.contentChanges++
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
temporaryContent() {
|
||||
return this.postToStage.originalContent
|
||||
}
|
||||
},
|
||||
// ...mapGetters(['options'])
|
||||
},
|
||||
methods: {
|
||||
|
@ -184,7 +185,7 @@ export default {
|
|||
this.$log.debug('Draft only: ' + draftOnly)
|
||||
this.postToStage.status = 'DRAFT'
|
||||
if (!this.postToStage.title) {
|
||||
this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
|
||||
this.postToStage.title = datetimeFormat(new Date(), 'YYYY-MM-DD-HH-mm-ss')
|
||||
}
|
||||
this.draftSaving = true
|
||||
if (this.postToStage.id) {
|
||||
|
@ -240,7 +241,7 @@ export default {
|
|||
handlePreview() {
|
||||
this.postToStage.status = 'DRAFT'
|
||||
if (!this.postToStage.title) {
|
||||
this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
|
||||
this.postToStage.title = datetimeFormat(new Date(), 'YYYY-MM-DD-HH-mm-ss')
|
||||
}
|
||||
this.previewSaving = true
|
||||
if (this.postToStage.id) {
|
||||
|
@ -295,7 +296,7 @@ export default {
|
|||
},
|
||||
onRefreshPostMetasFromSetting(metas) {
|
||||
this.selectedMetas = metas
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -322,10 +322,9 @@ import TagSelect from './TagSelect'
|
|||
|
||||
// libs
|
||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
import moment from 'moment'
|
||||
import { datetimeFormat } from '@/utils/datetime'
|
||||
import pinyin from 'tiny-pinyin'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { datetimeFormat } from '@/utils/util'
|
||||
|
||||
// apis
|
||||
import categoryApi from '@/api/category'
|
||||
|
@ -421,9 +420,9 @@ export default {
|
|||
pickerDefaultValue() {
|
||||
if (this.selectedPost.createTime) {
|
||||
var date = new Date(this.selectedPost.createTime)
|
||||
return moment(date, 'YYYY-MM-DD HH:mm:ss')
|
||||
return datetimeFormat(date, 'YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
return moment(new Date(), 'YYYY-MM-DD HH:mm:ss')
|
||||
return datetimeFormat(new Date(), 'YYYY-MM-DD HH:mm:ss')
|
||||
},
|
||||
fullPath() {
|
||||
const permalinkType = this.options.post_permalink_type
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
<script>
|
||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
// import { mapGetters } from 'vuex'
|
||||
import moment from 'moment'
|
||||
import { datetimeFormat } from '@/utils/datetime'
|
||||
import SheetSettingDrawer from './components/SheetSettingDrawer'
|
||||
import AttachmentDrawer from '../attachment/components/AttachmentDrawer'
|
||||
import FooterToolBar from '@/components/FooterToolbar'
|
||||
|
@ -175,7 +175,7 @@ export default {
|
|||
this.$log.debug('Draft only: ' + draftOnly)
|
||||
this.sheetToStage.status = 'DRAFT'
|
||||
if (!this.sheetToStage.title) {
|
||||
this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
|
||||
this.sheetToStage.title = datetimeFormat(new Date(), 'YYYY-MM-DD-HH-mm-ss')
|
||||
}
|
||||
this.draftSaving = true
|
||||
if (this.sheetToStage.id) {
|
||||
|
@ -229,7 +229,7 @@ export default {
|
|||
handlePreview() {
|
||||
this.sheetToStage.status = 'DRAFT'
|
||||
if (!this.sheetToStage.title) {
|
||||
this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
|
||||
this.sheetToStage.title = datetimeFormat(new Date(), 'YYYY-MM-DD-HH-mm-ss')
|
||||
}
|
||||
this.previewSaving = true
|
||||
if (this.sheetToStage.id) {
|
||||
|
|
|
@ -234,7 +234,7 @@
|
|||
<script>
|
||||
// libs
|
||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
import moment from 'moment'
|
||||
import { datetimeFormat } from '@/utils/datetime'
|
||||
import { mapGetters } from 'vuex'
|
||||
import pinyin from 'tiny-pinyin'
|
||||
|
||||
|
@ -301,9 +301,9 @@ export default {
|
|||
pickerDefaultValue() {
|
||||
if (this.selectedSheet.createTime) {
|
||||
var date = new Date(this.selectedSheet.createTime)
|
||||
return moment(date, 'YYYY-MM-DD HH:mm:ss')
|
||||
return datetimeFormat(date, 'YYYY-MM-DD HH:mm:ss')
|
||||
}
|
||||
return moment(new Date(), 'YYYY-MM-DD HH:mm:ss')
|
||||
return datetimeFormat(new Date(), 'YYYY-MM-DD HH:mm:ss')
|
||||
},
|
||||
fullPath() {
|
||||
const blogUrl = this.options.blog_url
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
import { codemirror } from 'vue-codemirror-lite'
|
||||
import 'codemirror/mode/shell/shell.js'
|
||||
import adminApi from '@/api/admin'
|
||||
import moment from 'moment'
|
||||
import { datetimeFormat } from '@/utils/datetime'
|
||||
export default {
|
||||
name: 'RuntimeLogs',
|
||||
components: {
|
||||
|
@ -90,7 +90,7 @@ export default {
|
|||
var downloadElement = document.createElement('a')
|
||||
var href = window.URL.createObjectURL(blob)
|
||||
downloadElement.href = href
|
||||
downloadElement.download = 'halo-log-' + moment(new Date(), 'YYYY-MM-DD-HH-mm-ss') + '.log'
|
||||
downloadElement.download = 'halo-log-' + datetimeFormat(new Date(), 'YYYY-MM-DD-HH-mm-ss') + '.log'
|
||||
document.body.appendChild(downloadElement)
|
||||
downloadElement.click()
|
||||
document.body.removeChild(downloadElement)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
|
||||
function resolve(dir) {
|
||||
return path.join(__dirname, dir)
|
||||
|
@ -8,11 +7,6 @@ function resolve(dir) {
|
|||
// vue.config.js
|
||||
module.exports = {
|
||||
publicPath: process.env.PUBLIC_PATH,
|
||||
configureWebpack: {
|
||||
plugins: [
|
||||
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
|
||||
]
|
||||
},
|
||||
|
||||
chainWebpack: (config) => {
|
||||
config.resolve.alias
|
||||
|
|
Loading…
Reference in New Issue