Skip to content

Commit

Permalink
feat: convert vue-cli pages config
Browse files Browse the repository at this point in the history
  • Loading branch information
konpeki622 committed Jul 22, 2021
1 parent 0a3cafc commit f22dd48
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/cli/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export async function start (config : Config): Promise<void> {
await geneViteConfig(rootDir, rootDir, config)

// generate index.html must be after generate vite.config.js
geneIndexHtml(rootDir, config, astParsingResult)
await geneIndexHtml(rootDir, config, astParsingResult)
printReport(config.reportType, config.rootDir, beginTime) // output conversion

// generate patches
Expand Down
24 changes: 18 additions & 6 deletions src/generate/geneIndexHtml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@ import { Config } from '../config/config'
import { AstParsingResult } from '../ast-parse/astParse'
import { TransformationType } from '../ast-parse/transformations'
import { recordConver } from '../utils/report'
import { parseVueCliConfig } from '../config/parse'

export function geneIndexHtml (rootDir: string, config: Config, astParsingResult?: AstParsingResult): void {
export async function geneIndexHtml (rootDir: string, config: Config, astParsingResult?: AstParsingResult): Promise<void> {
const outputIndexPath: string = path.resolve(rootDir, 'index.html')
const projectType: string = config.projectType

let entries : string[] = []
if (config.entry !== undefined && config.entry !== '' && config.entry.length !== 0 && JSON.stringify(config.entry) !== '{}') {
entries = getEntries(rootDir, config.entry)
} else {
entries = getDefaultEntries(rootDir)
entries = await getDefaultEntries(rootDir, projectType)
}

const injectedContent = generateWithVueCliPublicIndex(astParsingResult, entries, projectType)
Expand Down Expand Up @@ -54,19 +55,30 @@ export function generateWithVueCliPublicIndex (astParsingResult: AstParsingResul
return stringFormat(indexHtmlContent, generateEntriesHtml(entries))
}

function getDefaultEntries (rootDir: string): string[] {
async function getDefaultEntries (rootDir: string, projectType: string): Promise<string[]> {
const entries: string[] = []
// TODO: vue-cli pages config
if (projectType !== 'webpack') {
const vueConfigFile = path.resolve(rootDir, 'vue.config.js')
const vueConfig = await parseVueCliConfig(vueConfigFile)
const entryConfig = vueConfig.pages
if (entryConfig) {
Object.keys(entryConfig).forEach(key => {
const entryPath: string = Object.prototype.toString.call(entryConfig[key]) === '[object String]' ? entryConfig[key] : entryConfig[key].entry
entries.push(entryPath)
})
}
}
let mainFile = path.resolve(rootDir, 'src/main.ts')
if (fs.existsSync(mainFile)) {
entries.push('/src/main.ts')
if (!entries.some(entryPath => entryPath === 'src/main.ts')) entries.push('/src/main.ts')
return entries
}
mainFile = path.resolve(rootDir, 'src/main.js')
if (fs.existsSync(mainFile)) {
entries.push('/src/main.js')
if (!entries.some(entryPath => entryPath === 'src/main.js')) entries.push('/src/main.js')
return entries
}
// TODO: vue-cli pages config
return entries
}

Expand Down

0 comments on commit f22dd48

Please sign in to comment.