fix: create module json first

Signed-off-by: Innei <i@innei.in>
This commit is contained in:
Innei
2024-08-16 16:31:16 +08:00
parent 3f5fcd8634
commit d4660361d8
6 changed files with 31 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
import cluster from 'node:cluster'
import { mkdirSync } from 'node:fs'
import { mkdirSync, writeFileSync } from 'node:fs'
import { Logger } from '@nestjs/common'
@@ -21,7 +21,7 @@ import './dayjs.global'
import '@mx-space/external/zx-global'
// 建立目录
function mkdirs() {
function createAppFolders() {
if (!CLUSTER.enable || cluster.isPrimary) {
mkdirSync(DATA_DIR, { recursive: true })
Logger.log(chalk.blue(`数据目录已经建好:${DATA_DIR}`))
@@ -35,8 +35,14 @@ function mkdirs() {
Logger.log(chalk.blue(`文件存放目录已经建好:${STATIC_FILE_DIR}`))
mkdirSync(STATIC_FILE_TRASH_DIR, { recursive: true })
Logger.log(chalk.blue(`文件回收站目录已经建好:${STATIC_FILE_TRASH_DIR}`))
// mkdirSync(THEME_DIR, { recursive: true })
// Logger.log(chalk.blue(`主题目录已经建好:${THEME_DIR}`))
const packageJSON = `${DATA_DIR}/package.json`
const hasPKG = fs.existsSync(packageJSON)
if (!hasPKG) {
writeFileSync(packageJSON, '{"name":"modules"}', {
flag: 'a',
})
}
}
}
@@ -60,9 +66,9 @@ function nodeEnvInjection() {
process.env.CBOR_NATIVE_ACCELERATION_DISABLED = 'true'
}
export function register() {
export function initializeApp() {
registerGlobal()
nodeEnvInjection()
registerJSONGlobal()
mkdirs()
createAppFolders()
}

View File

@@ -6,7 +6,7 @@ import { DEBUG_MODE } from './app.config'
import { registerForMemoryDump } from './dump'
import { logger } from './global/consola.global'
import { isMainCluster, isMainProcess } from './global/env.global'
import { register } from './global/index.global'
import { initializeApp } from './global/index.global'
import { migrateDatabase } from './migration/migrate'
process.title = `Mix Space (${cluster.isPrimary ? 'master' : 'worker'}) - ${
@@ -14,7 +14,7 @@ process.title = `Mix Space (${cluster.isPrimary ? 'master' : 'worker'}) - ${
}`
async function main() {
register()
initializeApp()
if (isMainProcess) {
await migrateDatabase()

View File

@@ -2,7 +2,7 @@ import { plainToInstance } from 'class-transformer'
import type { IConfigKeys } from '~/modules/configs/configs.interface'
import { ENCRYPT } from '~/app.config'
import { register } from '~/global/index.global'
import { initializeApp } from '~/global/index.global'
import { generateDefaultConfig } from '~/modules/configs/configs.default'
import * as optionDtos from '~/modules/configs/configs.dto'
import { encryptObject } from '~/modules/configs/configs.encrypt.util'
@@ -25,7 +25,7 @@ Object.entries(optionDtos).reduce((obj, [key, value]) => {
}, {})
async function main() {
await register()
await initializeApp()
const connection = await getDatabaseConnection()
const db = connection.db!
const configs: any[] = []

View File

@@ -2,7 +2,7 @@ import { encode } from 'blurhash'
import type { ImageModel } from '~/shared/model/image.model'
import type { Sharp } from 'sharp'
import { Injectable, Logger } from '@nestjs/common'
import { Injectable, Logger, OnModuleInit } from '@nestjs/common'
import { ConfigsService } from '~/modules/configs/configs.service'
import { pickImagesFromMarkdown } from '~/utils/pic.util'
@@ -11,19 +11,20 @@ import { requireDepsWithInstall } from '~/utils/tool.util'
import { HttpService } from './helper.http.service'
@Injectable()
export class ImageService {
export class ImageService implements OnModuleInit {
private logger: Logger
constructor(
private readonly httpService: HttpService,
private readonly configsService: ConfigsService,
) {
this.logger = new Logger(ImageService.name)
}
if (!isDev) {
requireDepsWithInstall('sharp').catch((error: any) => {
this.logger.error(`sharp install failed: ${error.message}`)
})
}
onModuleInit() {
requireDepsWithInstall('sharp').catch((error: any) => {
this.logger.error(`sharp install failed: ${error.message}`)
console.error(error)
})
}
async saveImageDimensionsFromMarkdownText(

View File

@@ -1,9 +1,9 @@
import { repl } from '@nestjs/core'
import { register } from './global/index.global'
import { initializeApp } from './global/index.global'
async function bootstrap() {
register()
initializeApp()
const { AppModule } = await import('./app.module')
await repl(AppModule)
}

View File

@@ -1,9 +1,11 @@
import { createHash } from 'node:crypto'
import { createRequire } from 'node:module'
import { join } from 'node:path'
import { cloneDeep } from 'lodash'
import { installPackage } from '@antfu/install-pkg'
import { NODE_REQUIRE_PATH } from '~/constants/path.constant'
import { logger } from '~/global/consola.global'
export const md5 = (text: string) =>
@@ -156,11 +158,12 @@ export function escapeXml(unsafe: string) {
export const requireDepsWithInstall = async (deps: string) => {
try {
const require = createRequire(NODE_REQUIRE_PATH)
return require(require.resolve(deps))
} catch {
logger.info(`Installing ${deps}...`)
await installPackage(deps, { silent: false })
await installPackage(deps, { silent: false, cwd: NODE_REQUIRE_PATH })
const require = createRequire(NODE_REQUIRE_PATH)
return require(deps)
}
}