build!: simplify build & support esm import (#4018)

* build!: simplify build & support native esm import

* build: refactor build

* refactor: reorganize files

* refactor: refactor build

* build: improve perf

* fix: scripts

* build: add rollup-plugin-filesize

* chore: scripts ignore no-console

* build: disable tree-shaking

* build: improve code

* build: add sourcemap

* build: add banner

* refactor: remove annotation

* build!: improve esm exports (#3871)

* build: improve esm import

* refactor: change mjs for esm version

* chore: improve exports map

* fix: add sideEffects

* refactor: improve alias

* build: upgrade dependencies
This commit is contained in:
三咲智子 2021-10-25 17:07:48 +08:00 committed by GitHub
parent ef8a3534e1
commit 4e99d0b5ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 560 additions and 710 deletions

View File

@ -29,8 +29,8 @@ jobs:
- name: Install dependencies
run: pnpm i --frozen-lockfile
- name: Fetch Crowdin token for pulling languages
run: pnpm docs:crowdin
- name: Init Crowdin token
run: pnpm run docs:crowdin-credentials
env:
CROWDIN_TOKEN: ${{secrets.CROWDIN_TOKEN}}

View File

@ -31,7 +31,7 @@ jobs:
run: pnpm build
- name: Init Crowdin token
run: pnpm docs:crowdin
run: pnpm run docs:crowdin-credentials
env:
CROWDIN_TOKEN: ${{secrets.CROWDIN_TOKEN}}

View File

@ -1,5 +1,6 @@
import path from 'path'
import { epOutput } from './utils/paths'
import { EP_PKG } from './utils/constants'
import type { ModuleFormat } from 'rollup'
export const modules = ['esm', 'cjs'] as const
@ -31,7 +32,7 @@ export const buildConfig: Record<Module, BuildInfo> = {
path: path.resolve(epOutput, 'es'),
},
bundle: {
path: 'element-plus/es',
path: `${EP_PKG}/es`,
},
},
cjs: {
@ -43,9 +44,13 @@ export const buildConfig: Record<Module, BuildInfo> = {
path: path.resolve(epOutput, 'lib'),
},
bundle: {
path: 'element-plus/lib',
path: `${EP_PKG}/lib`,
},
},
}
export const buildConfigEntries = Object.entries(
buildConfig
) as BuildConfigEntries
export type BuildConfig = typeof buildConfig
export type BuildConfigEntries = [Module, BuildInfo][]

View File

@ -1,122 +0,0 @@
import fs from 'fs'
import path from 'path'
import { series, parallel } from 'gulp'
import { rollup } from 'rollup'
import vue from 'rollup-plugin-vue'
import css from 'rollup-plugin-css-only'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import esbuild from 'rollup-plugin-esbuild'
import { sync as globSync } from 'fast-glob'
import filesize from 'rollup-plugin-filesize'
import { compRoot, buildOutput } from './utils/paths'
import {
generateExternal,
rollupPathRewriter,
writeBundles,
} from './utils/rollup'
import { run } from './utils/process'
import { withTaskName } from './utils/gulp'
import { genComponentTypes } from './component-types'
import { buildConfig } from './info'
import reporter from './size-reporter'
import type { OutputOptions } from 'rollup'
import type { Module, BuildConfigEntries } from './info'
const plugins = [
css(),
vue({
target: 'browser',
// css: false,
}),
nodeResolve(),
commonjs(),
esbuild(),
]
async function getComponents() {
const files = globSync('*', {
cwd: compRoot,
onlyDirectories: true,
})
return files.map((file) => ({
path: path.resolve(compRoot, file),
name: file,
}))
}
export async function buildEachComponent() {
const componentPaths = await getComponents()
const external = await generateExternal({ full: false })
const pathRewriter = await rollupPathRewriter()
const builds = componentPaths.map(
async ({ path: p, name: componentName }) => {
const entry = path.resolve(p, 'index.ts')
if (!fs.existsSync(entry)) return
const rollupConfig = {
input: entry,
plugins,
external,
}
const opts = (Object.entries(buildConfig) as BuildConfigEntries).map(
([module, config]): OutputOptions => ({
format: config.format,
file: path.resolve(
config.output.path,
'components',
componentName,
'index.js'
),
exports: module === 'cjs' ? 'named' : undefined,
paths: pathRewriter(module),
plugins: [filesize({ reporter })],
})
)
const bundle = await rollup(rollupConfig)
await writeBundles(bundle, opts)
}
)
await Promise.all(builds)
}
export async function buildComponentEntry() {
const entry = path.resolve(compRoot, 'index.ts')
const config = {
input: entry,
plugins,
external: () => true,
}
const opts = Object.values(buildConfig).map(
(config): OutputOptions => ({
format: config.format,
file: path.resolve(config.output.path, 'components/index.js'),
plugins: [filesize({ reporter })],
})
)
const bundle = await rollup(config)
await writeBundles(bundle, opts)
}
function copyTypes() {
const src = `${buildOutput}/types/components/`
const copy = (module: Module) =>
withTaskName(`copyTypes:${module}`, () =>
run(`rsync -a ${src} ${buildConfig[module].output.path}/components/`)
)
return parallel(copy('esm'), copy('cjs'))
}
export const buildComponent = series(
parallel(genComponentTypes, buildEachComponent, buildComponentEntry),
copyTypes()
)
export { genComponentTypes }

View File

@ -1,82 +0,0 @@
import path from 'path'
import fs from 'fs/promises'
import { bold } from 'chalk'
import glob from 'fast-glob'
import { Project, ScriptTarget, ModuleKind } from 'ts-morph'
import { parallel } from 'gulp'
import { epRoot, buildOutput, projRoot } from './utils/paths'
import { yellow, green } from './utils/log'
import { buildConfig } from './info'
import { withTaskName } from './utils/gulp'
import { run } from './utils/process'
import type { Module } from './info'
import type { SourceFile } from 'ts-morph'
const TSCONFIG_PATH = path.resolve(projRoot, 'tsconfig.json')
export const genEntryTypes = async () => {
const files = await glob('*.ts', {
cwd: epRoot,
absolute: true,
onlyFiles: true,
})
const project = new Project({
compilerOptions: {
module: ModuleKind.ESNext,
allowJs: true,
emitDeclarationOnly: true,
noEmitOnError: false,
outDir: path.resolve(buildOutput, 'entry/types'),
target: ScriptTarget.ESNext,
rootDir: epRoot,
strict: false,
},
skipFileDependencyResolution: true,
tsConfigFilePath: TSCONFIG_PATH,
skipAddingFilesFromTsConfig: true,
})
const sourceFiles: SourceFile[] = []
files.map((f) => {
const sourceFile = project.addSourceFileAtPath(f)
sourceFiles.push(sourceFile)
})
project.addSourceFilesAtPaths(path.resolve(projRoot, 'typings', '*.d.ts'))
const diagnostics = project.getPreEmitDiagnostics()
console.log(project.formatDiagnosticsWithColorAndContext(diagnostics))
await project.emit({
emitOnlyDtsFiles: true,
})
const tasks = sourceFiles.map(async (sourceFile) => {
yellow(`Emitting file: ${bold(sourceFile.getFilePath())}`)
const emitOutput = sourceFile.getEmitOutput()
for (const outputFile of emitOutput.getOutputFiles()) {
const filepath = outputFile.getFilePath()
await fs.mkdir(path.dirname(filepath), { recursive: true })
await fs.writeFile(
filepath,
outputFile.getText().replaceAll('@element-plus', '.'),
'utf8'
)
green(`Definition for file: ${bold(sourceFile.getBaseName())} generated`)
}
})
await Promise.all(tasks)
}
export const copyEntryTypes = (() => {
const src = path.resolve(buildOutput, 'entry/types')
const copy = (module: Module) =>
withTaskName(`copyEntryTypes:${module}`, () =>
run(`rsync -a ${src}/ ${buildConfig[module].output.path}/`)
)
return parallel(copy('esm'), copy('cjs'))
})()

View File

@ -1,64 +1,44 @@
import path from 'path'
import fs from 'fs'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import { rollup } from 'rollup'
import commonjs from '@rollup/plugin-commonjs'
import vue from 'rollup-plugin-vue'
import esbuild from 'rollup-plugin-esbuild'
import replace from '@rollup/plugin-replace'
import filesize from 'rollup-plugin-filesize'
import { parallel } from 'gulp'
import { genEntryTypes } from './entry-types'
import { RollupResolveEntryPlugin } from './rollup-plugin-entry'
import { version } from '../packages/element-plus/version'
import { ElementPlusAlias } from './plugins/element-plus-alias'
import { epRoot, epOutput } from './utils/paths'
import { yellow, green } from './utils/log'
import {
generateExternal,
rollupPathRewriter,
writeBundles,
} from './utils/rollup'
import { buildConfig } from './info'
import { run } from './utils/process'
import { generateExternal, writeBundles } from './utils/rollup'
import { withTaskName } from './utils/gulp'
import type { BuildConfigEntries } from './info'
import type { RollupOptions, OutputOptions, InputOptions } from 'rollup'
const getConfig = async (
opt: {
minify?: boolean
sourceMap?: boolean
plugins?: InputOptions['plugins']
} = {}
): Promise<RollupOptions> => ({
input: path.resolve(epRoot, 'index.ts'),
plugins: [
nodeResolve(),
vue({
target: 'browser',
// css: false,
exposeFilename: false,
}),
commonjs(),
esbuild({
minify: opt.minify,
sourceMap: opt.sourceMap,
}),
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
...(opt.plugins ?? []),
],
external: await generateExternal({ full: true }),
})
export const buildFull = (minify: boolean) => async () => {
const bundle = await rollup(
await getConfig({
plugins: [RollupResolveEntryPlugin()],
minify,
sourceMap: minify,
})
)
const bundle = await rollup({
input: path.resolve(epRoot, 'index.ts'),
plugins: [
await ElementPlusAlias(),
nodeResolve({
extensions: ['.mjs', '.js', '.json', '.ts'],
}),
vue({
target: 'browser',
exposeFilename: false,
}),
commonjs(),
esbuild({ minify, sourceMap: minify }),
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
// options
preventAssignment: true,
}),
filesize(),
],
external: await generateExternal({ full: true }),
})
const banner = `/*! Element Plus v${version} */\n`
await writeBundles(bundle, [
{
format: 'umd',
@ -69,6 +49,7 @@ export const buildFull = (minify: boolean) => async () => {
vue: 'Vue',
},
sourcemap: minify,
banner,
},
{
format: 'esm',
@ -77,51 +58,12 @@ export const buildFull = (minify: boolean) => async () => {
`dist/index.full${minify ? '.min' : ''}.mjs`
),
sourcemap: minify,
banner,
},
])
}
export const buildEntry = async () => {
const entryFiles = await fs.promises.readdir(epRoot, {
withFileTypes: true,
})
const entryPoints = entryFiles
.filter((f) => f.isFile())
.filter((f) => !['package.json', 'README.md'].includes(f.name))
.map((f) => path.resolve(epRoot, f.name))
const bundle = await rollup({
...(await getConfig()),
input: entryPoints,
external: () => true,
})
yellow('Generating entries')
const rewriter = await rollupPathRewriter()
writeBundles(
bundle,
(Object.entries(buildConfig) as BuildConfigEntries).map(
([module, config]): OutputOptions => ({
format: config.format,
dir: config.output.path,
exports: config.format === 'cjs' ? 'named' : undefined,
paths: rewriter(module),
})
)
)
green('entries generated')
}
export const copyFullStyle = () =>
Promise.all([
run(`cp ${epOutput}/theme-chalk/index.css ${epOutput}/dist/index.css`),
run(`cp -R ${epOutput}/theme-chalk/fonts ${epOutput}/dist/fonts`),
])
export const buildFullBundle = parallel(
withTaskName('buildFullMinified', buildFull(true)),
withTaskName('buildFull', buildFull(false)),
buildEntry,
genEntryTypes
withTaskName('buildFull', buildFull(false))
)

View File

@ -1,54 +1,66 @@
import path from 'path'
import { series, parallel } from 'gulp'
import { copyStyle } from './style'
import { copyEntryTypes } from './entry-types'
import { run } from './utils/process'
import { withTaskName } from './utils/gulp'
import { epOutput, epPackage, projRoot } from './utils/paths'
import { copyFullStyle } from './full-bundle'
import { buildOutput, epOutput, epPackage, projRoot } from './utils/paths'
import { buildConfig } from './build-info'
import type { TaskFunction } from 'gulp'
import type { Module } from './build-info'
const runTask = (name: string) =>
withTaskName(name, () => run(`pnpm run build ${name}`))
export const copySourceCode = async () => {
await run(`cp -R packages ${epOutput}`)
await run(`cp ${epPackage} ${epOutput}/package.json`)
export const copyFiles = () => {
const copyTypings = async () => {
const src = path.resolve(projRoot, 'typings', 'global.d.ts')
await run(`cp ${src} ${epOutput}`)
}
return Promise.all([
run(`cp ${epPackage} ${path.join(epOutput, 'package.json')}`),
run(`cp README.md ${epOutput}`),
copyTypings(),
])
}
export const copyREADME = async () => {
await run(`cp README.md ${epOutput}`)
export const copyTypesDefinitions: TaskFunction = (done) => {
const src = `${buildOutput}/types/`
const copy = (module: Module) =>
withTaskName(`copyTypes:${module}`, () =>
run(`rsync -a ${src} ${buildConfig[module].output.path}/`)
)
return parallel(copy('esm'), copy('cjs'))(done)
}
export const copyDefinitions = async () => {
const files = [path.resolve(projRoot, 'typings', 'global.d.ts')]
await run(`cp ${files.join(' ')} ${epOutput}`)
export const copyFullStyle = async () => {
await run(`mkdir -p ${epOutput}/dist/fonts`)
await Promise.all([
run(`cp ${epOutput}/theme-chalk/index.css ${epOutput}/dist/index.css`),
run(`cp -R ${epOutput}/theme-chalk/fonts ${epOutput}/dist`),
])
}
export default series(
withTaskName('clean', () => run('pnpm run clean')),
parallel(
runTask('buildComponent'),
runTask('buildStyle'),
runTask('buildModules'),
runTask('buildFullBundle'),
runTask('generateTypesDefinitions'),
runTask('buildHelper'),
withTaskName('buildEachPackages', () =>
run('pnpm run --filter ./packages --parallel --stream build')
series(
withTaskName('buildThemeChalk', () =>
run('pnpm run -C packages/theme-chalk build')
),
copyFullStyle
)
),
parallel(
copyStyle(),
copyFullStyle,
copyEntryTypes,
copySourceCode,
copyREADME,
copyDefinitions
)
parallel(copyTypesDefinitions, copyFiles)
)
export * from './component'
export * from './style'
export * from './types-definitions'
export * from './modules'
export * from './full-bundle'
export * from './entry-types'
export * from './helper'

57
build/modules.ts Normal file
View File

@ -0,0 +1,57 @@
import { rollup } from 'rollup'
import vue from 'rollup-plugin-vue'
import css from 'rollup-plugin-css-only'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import esbuild from 'rollup-plugin-esbuild'
import filesize from 'rollup-plugin-filesize'
import glob from 'fast-glob'
import { epRoot, pkgRoot } from './utils/paths'
import { ElementPlusAlias } from './plugins/element-plus-alias'
import { generateExternal, writeBundles } from './utils/rollup'
import { excludeFiles } from './utils/pkg'
import { reporter } from './plugins/size-reporter'
import { buildConfigEntries } from './build-info'
import type { OutputOptions } from 'rollup'
export const buildModules = async () => {
const input = excludeFiles(
await glob('**/*.{js,ts,vue}', {
cwd: pkgRoot,
absolute: true,
onlyFiles: true,
})
)
const bundle = await rollup({
input,
plugins: [
await ElementPlusAlias(),
css(),
vue({ target: 'browser' }),
nodeResolve({
extensions: ['.mjs', '.js', '.json', '.ts'],
}),
commonjs(),
esbuild({
sourceMap: true,
}),
filesize({ reporter }),
],
external: await generateExternal({ full: false }),
treeshake: false,
})
await writeBundles(
bundle,
buildConfigEntries.map(([module, config]): OutputOptions => {
return {
format: config.format,
dir: config.output.path,
exports: module === 'cjs' ? 'named' : undefined,
preserveModules: true,
preserveModulesRoot: epRoot,
sourcemap: true,
entryFileNames: `[name].${config.ext}`,
}
})
)
}

View File

@ -1,54 +0,0 @@
import path from 'path'
import ts from 'gulp-typescript'
import { src, dest, series, parallel } from 'gulp'
import { withTaskName, gulpPathRewriter } from './utils/gulp'
import { buildConfig } from './info'
import { epOutput, projRoot } from './utils/paths'
import { getPackageManifest } from './utils/pkg'
import { EP_PREFIX } from './constants'
import type { BuildConfigEntries } from './info'
export const buildPackage = (pkgPath: string) => {
const manifest = getPackageManifest(path.resolve(pkgPath, 'package.json'))
const pkgName = manifest.name!.replace(`${EP_PREFIX}/`, '')
const tasks = (Object.entries(buildConfig) as BuildConfigEntries).map(
([module, config]) => {
const output = path.resolve(pkgPath, 'dist', config.output.name)
const build = () => {
const tsConfig = path.resolve(projRoot, 'tsconfig.json')
const inputs = [
'**/*.ts',
'!node_modules',
'!gulpfile.ts',
'!__test?(s)__/*',
'!test?(s)/*',
path.resolve(projRoot, 'typings', '*.d.ts'),
]
return withTaskName(`build:${pkgName}:${module}`, () =>
src(inputs)
.pipe(
ts.createProject(tsConfig, {
module: config.module,
strict: false,
})()
)
.pipe(gulpPathRewriter(module))
.pipe(dest(output))
)
}
const copy = () =>
withTaskName(`copy:${pkgName}:${module}`, () =>
src(`${output}/**`).pipe(
dest(path.resolve(epOutput, config.output.name, pkgName))
)
)
return series(build(), copy())
}
)
return parallel(...tasks)
}

View File

@ -0,0 +1,29 @@
import { EP_PKG, EP_PREFIX } from '../utils/constants'
import { getDistPackages } from '../utils/pkg'
import type { Plugin } from 'rollup'
export async function ElementPlusAlias(): Promise<Plugin> {
const pkgs = await getDistPackages()
return {
name: 'element-plus-alias-plugin',
resolveId(id, importer, options) {
if (!id.startsWith(EP_PREFIX)) return
const THEME_CHALK = `${EP_PREFIX}/theme-chalk`
if (id.startsWith(THEME_CHALK)) {
return {
id: id.replaceAll(THEME_CHALK, `${EP_PKG}/theme-chalk`),
external: 'absolute',
}
}
let updatedId = id
for (const pkg of pkgs) {
if (id.startsWith(pkg.name))
updatedId = updatedId.replace(pkg.name, pkg.dir)
}
return this.resolve(id, importer, { skipSelf: true, ...options })
},
}
}

View File

@ -0,0 +1,9 @@
import { cyan, bold, yellow, green } from 'chalk'
import type { FileSizeReporter } from 'rollup-plugin-filesize'
export const reporter: FileSizeReporter = (opt, outputOptions, info) => {
return `${cyan(bold(info.fileName))}: bundle size ${yellow(
info.bundleSize
)} -> minified ${green(info.minSize)}`
}

View File

@ -1,23 +0,0 @@
import path from 'path'
import type { Plugin } from 'rollup'
export function RollupResolveEntryPlugin(): Plugin {
return {
name: 'element-plus-entry-plugin',
transform(code, id) {
if (id.includes('packages')) {
return {
code: code.replace(
/@element-plus\/(components|directives|utils|hooks|tokens|locale)/g,
`${path.relative(
path.dirname(id),
path.resolve(__dirname, '../packages')
)}/$1`
),
map: null,
}
}
return { code, map: null }
},
}
}

View File

@ -1,18 +0,0 @@
import { cyan, bold, yellow, green } from 'chalk'
import type { FileSizeReporter } from 'rollup-plugin-filesize'
const reporter: FileSizeReporter = (opt, outputOptions, info) => {
const values = [
info.fileName ? [`${outputOptions.file?.split('packages/').pop()}`] : [],
[`${info.bundleSize}`],
...(info.minSize ? [`${info.minSize}`] : []),
]
return `${cyan(bold(values[0]))}: bundle size ${yellow(
values[1]
)} -> minified ${green(values[2])}`
}
export default reporter

View File

@ -1,44 +0,0 @@
import path from 'path'
import { parallel, dest, src } from 'gulp'
import ts from 'gulp-typescript'
import { buildOutput, compRoot } from './utils/paths'
import { buildConfig } from './info'
import { withTaskName, gulpPathRewriter } from './utils/gulp'
import { run } from './utils/process'
import type { Module } from './info'
const inputs = path.resolve(compRoot, '**/style/*.ts')
const output = path.resolve(buildOutput, 'styles')
const tsProject = (module: Module) =>
ts.createProject('tsconfig.json', {
declaration: true,
target: 'ESNext',
skipLibCheck: true,
module: buildConfig[module].module,
})()
const build = (module: Module) =>
withTaskName(`buildStyle:${module}`, () =>
src(inputs)
.pipe(gulpPathRewriter(module))
.pipe(tsProject(module))
.pipe(dest(path.resolve(output, buildConfig[module].output.name)))
)
export const buildStyle = parallel(build('esm'), build('cjs'))
export const copyStyle = () => {
const copy = (module: Module) => {
const config = buildConfig[module]
const src = path.resolve(buildOutput, 'styles', config.output.name)
const dst = path.resolve(config.output.path, 'components')
return withTaskName(`copyStyle:${module}`, () =>
run(`rsync -a ${src}/ ${dst}/`)
)
}
return parallel(copy('esm'), copy('cjs'))
}

View File

@ -6,9 +6,10 @@ import glob from 'fast-glob'
import { bold } from 'chalk'
import { green, red, yellow } from './utils/log'
import { buildOutput, compRoot, projRoot } from './utils/paths'
import { buildOutput, pkgRoot, projRoot } from './utils/paths'
import { pathRewriter } from './utils/pkg'
import { excludeFiles, pathRewriter } from './utils/pkg'
import { run } from './utils/process'
import type { SourceFile } from 'ts-morph'
const TSCONFIG_PATH = path.resolve(projRoot, 'tsconfig.json')
@ -17,7 +18,7 @@ const outDir = path.resolve(buildOutput, 'types')
/**
* fork = require( https://github.com/egoist/vue-dts-gen/blob/main/src/index.ts
*/
export const genComponentTypes = async () => {
export const generateTypesDefinitions = async () => {
const project = new Project({
compilerOptions: {
allowJs: true,
@ -35,27 +36,12 @@ export const genComponentTypes = async () => {
skipAddingFilesFromTsConfig: true,
})
const excludedFiles = [
/\/demo\/\w+\.vue$/,
'mock',
'package.json',
'spec',
'test',
'css',
'.DS_Store',
'node_modules',
]
const filePaths = (
await glob('**/*', {
cwd: compRoot,
onlyFiles: true,
const filePaths = excludeFiles(
await glob('**/*.{js,ts,vue}', {
cwd: pkgRoot,
absolute: true,
onlyFiles: true,
})
).filter(
(path) =>
!excludedFiles.some((f) =>
f instanceof RegExp ? f.test(path) : path.includes(f)
)
)
const sourceFiles: SourceFile[] = []
@ -93,7 +79,6 @@ export const genComponentTypes = async () => {
)
const diagnostics = project.getPreEmitDiagnostics()
console.log(project.formatDiagnosticsWithColorAndContext(diagnostics))
await project.emit({
@ -101,7 +86,7 @@ export const genComponentTypes = async () => {
})
const tasks = sourceFiles.map(async (sourceFile) => {
const relativePath = path.relative(compRoot, sourceFile.getFilePath())
const relativePath = path.relative(pkgRoot, sourceFile.getFilePath())
yellow(`Generating definition for file: ${bold(relativePath)}`)
const emitOutput = sourceFile.getEmitOutput()
@ -119,14 +104,22 @@ export const genComponentTypes = async () => {
await fs.writeFile(
filepath,
pathRewriter('esm', true)(outputFile.getText()),
pathRewriter('esm')(outputFile.getText()),
'utf8'
)
green(`Definition for file: ${bold(relativePath)} generated`)
})
await Promise.all(tasks)
})
await Promise.all(tasks)
const epFiles = await glob('**/*', {
cwd: path.resolve(outDir, 'element-plus'),
absolute: true,
})
await run(`mv ${epFiles.join(' ')} ${outDir}`)
await run(`rmdir ${path.resolve(outDir, 'element-plus')}`)
}

View File

@ -1 +1,2 @@
export const EP_PREFIX = '@element-plus'
export const EP_PKG = 'element-plus'

View File

@ -1,17 +1,4 @@
import through2 from 'through2'
import { pathRewriter } from './pkg'
import type { TaskFunction } from 'gulp'
import type { Module } from '../info'
export const withTaskName = <T extends TaskFunction>(name: string, fn: T) =>
Object.assign(fn, { displayName: name })
export const gulpPathRewriter = (module: Module) => {
const rewriter = pathRewriter(module, true)
return through2.obj((file, _, cb) => {
const contents: string = file.contents.toString()
file.contents = Buffer.from(rewriter(contents))
cb(null, file)
})
}

View File

@ -4,6 +4,7 @@ import chalk from 'chalk'
export function cyan(str: string) {
console.log(chalk.cyan(str))
}
export function yellow(str: string) {
console.log(chalk.yellow(str))
}

View File

@ -1,24 +1,18 @@
import findWorkspacePackages from '@pnpm/find-workspace-packages'
import { buildConfig } from '../info'
import { EP_PREFIX } from '../constants'
import { projRoot } from './paths'
import type { Module } from '../info'
import { buildConfig } from '../build-info'
import { EP_PREFIX } from './constants'
import { pkgRoot, projRoot } from './paths'
import type { Module } from '../build-info'
import type { ProjectManifest } from '@pnpm/types'
export const getWorkspacePackages = () => findWorkspacePackages(projRoot)
export const getWorkspaceNames = async () => {
export const getWorkspaceNames = async (dir = projRoot) => {
const pkgs = await findWorkspacePackages(projRoot)
return pkgs
.filter((pkg) => pkg.dir.startsWith(dir))
.map((pkg) => pkg.manifest.name)
.filter((name): name is string => !!name)
}
export const getWorkspacePackageManifest = async (
name: string
): Promise<ProjectManifest> => {
const packages = await getWorkspacePackages()
const { manifest } = packages.find((pkg) => pkg.manifest.name === name)!
return manifest
}
export const getPackageManifest = (pkgPath: string) => {
// eslint-disable-next-line @typescript-eslint/no-var-requires
@ -31,13 +25,35 @@ export const getPackageDependencies = (pkgPath: string): string[] => {
return Object.keys(dependencies ?? {})
}
export const pathRewriter = (module: Module, replaceAll: boolean) => {
const replaceName = replaceAll ? 'replaceAll' : 'replace'
export const pathRewriter = (module: Module) => {
const config = buildConfig[module]
return (id: string) => {
id = id[replaceName](`${EP_PREFIX}/theme-chalk`, 'element-plus/theme-chalk')
id = id[replaceName](`${EP_PREFIX}/`, `${config.bundle.path}/`)
id = id.replaceAll(`${EP_PREFIX}/theme-chalk`, 'element-plus/theme-chalk')
// TODO: handle @element-plus/icons
id = id.replaceAll(`${EP_PREFIX}/`, `${config.bundle.path}/`)
return id
}
}
export const excludeFiles = (files: string[]) => {
const excludes = ['node_modules', 'test', 'mock', 'gulpfile', 'dist']
return files.filter(
(path) => !excludes.some((exclude) => path.includes(exclude))
)
}
/**
* get package list (theme-chalk excluded)
*/
export const getDistPackages = async () =>
(await getWorkspacePackages())
.map((pkg) => ({ name: pkg.manifest.name, dir: pkg.dir }))
.filter(
(pkg): pkg is { name: string; dir: string } =>
!!pkg.name &&
!!pkg.dir &&
pkg.name.startsWith(EP_PREFIX) &&
pkg.dir.startsWith(pkgRoot) &&
pkg.name !== `${EP_PREFIX}/theme-chalk`
)

View File

@ -1,13 +1,11 @@
import { spawn } from 'child_process'
import { green } from './log'
import { green } from 'chalk'
import { projRoot } from './paths'
export const run = async (command: string, cwd: string = projRoot) =>
new Promise<void>((resolve, reject) => {
const args = command.split(' ')
const cmd = args.shift()!
green(`run: ${cmd} ${args.join(' ')}`)
const [cmd, ...args] = command.split(' ')
console.log(`run: ${green(`${cmd} ${args.join(' ')}`)}`)
const app = spawn(cmd, args, {
cwd,
stdio: 'inherit',

View File

@ -1,26 +1,15 @@
import { EP_PREFIX } from '../constants'
import { epPackage } from './paths'
import {
getWorkspacePackages,
getPackageDependencies,
getWorkspaceNames,
pathRewriter,
} from './pkg'
import type { Module } from '../info'
import { getPackageDependencies } from './pkg'
import type { OutputOptions, RollupBuild } from 'rollup'
export const generateExternal = async (options: { full: boolean }) => {
const monoPackages = (await getWorkspacePackages())
.map((pkg) => pkg.manifest.name)
// filter root package
.filter((name): name is string => !!name)
return (id: string) => {
const packages: string[] = ['vue']
if (!options.full) {
const depPackages = getPackageDependencies(epPackage)
packages.push('@vue', ...monoPackages, ...depPackages)
packages.push('element-plus/theme-chalk')
// dependencies
packages.push('@vue', ...getPackageDependencies(epPackage))
}
return [...new Set(packages)].some(
@ -32,21 +21,3 @@ export const generateExternal = async (options: { full: boolean }) => {
export function writeBundles(bundle: RollupBuild, options: OutputOptions[]) {
return Promise.all(options.map((option) => bundle.write(option)))
}
export const rollupPathRewriter = async () => {
const workspacePkgs = (await getWorkspaceNames()).filter((pkg) =>
pkg.startsWith(EP_PREFIX)
)
return (module: Module) => {
const rewriter = pathRewriter(module, false)
return (id: string) => {
if (workspacePkgs.some((pkg) => id.startsWith(pkg))) {
return rewriter(id)
} else {
return ''
}
}
}
}

View File

@ -1,22 +1,26 @@
import path from 'path'
import fs from 'fs'
import fs from 'fs/promises'
import chalk from 'chalk'
import { errorAndExit } from './utils/log'
import { errorAndExit } from '../../../build/utils/log'
import { docRoot } from '../utils/paths'
const credentialPlaceholder = 'API_TOKEN_PLACEHOLDER'
const CREDENTIAL = process.env.CROWDIN_TOKEN
if (!CREDENTIAL) {
errorAndExit(new Error('Environment variable CROWDIN_TOKEN cannot be empty'))
}
;(async () => {
console.info(chalk.cyan('Fetching Crowdin credential'))
const configPath = path.resolve(__dirname, '../docs/crowdin.yml')
const configPath = path.resolve(docRoot, 'crowdin.yml')
try {
const file = await fs.promises.readFile(configPath, {
const file = await fs.readFile(configPath, {
encoding: 'utf-8',
})
await fs.promises.writeFile(
await fs.writeFile(
configPath,
file.replace(credentialPlaceholder, CREDENTIAL!)
file.replace(credentialPlaceholder, CREDENTIAL)
)
console.info(chalk.green('Crowdin credential update successfully'))
} catch (e: any) {

View File

@ -3,6 +3,7 @@ import path from 'path'
import chalk from 'chalk'
import { docRoot } from '../utils/paths'
import { errorAndExit } from '../../../build/utils/log'
// NB: this file is only for generating files that enables developers to develop the website.
const componentLocaleRoot = path.resolve(docRoot, '.vitepress/crowdin')
@ -101,11 +102,10 @@ main()
.then(() => {
console.log(chalk.green('Locale for website development generated'))
})
.catch((e) => {
if (e.message === exists) {
.catch((err) => {
if (err.message === exists) {
// do nothing
} else {
console.log(chalk.red(e.message))
throw e
errorAndExit(err)
}
})

View File

@ -5,7 +5,8 @@
"dev": "pnpm gen-locale && vitepress dev .",
"build": "cross-env NODE_ENV=production && vitepress build .",
"serve": "cross-env NODE_ENV=production && vitepress serve .",
"gen-locale": "rimraf .vitepress/i18n && sucrase-node .vitepress/build/crowdin-generate.ts"
"gen-locale": "rimraf .vitepress/i18n && sucrase-node .vitepress/build/crowdin-generate.ts",
"crowdin-credentials": "sucrase-node .vitepress/build/crowdin-credentials.ts"
},
"dependencies": {
"@vueuse/core": "^6.7.3",

View File

@ -14,19 +14,19 @@
"test": "jest",
"dev": "pnpm -C play dev",
"gen": "bash ./scripts/gc.sh",
"gen:version": "sucrase-node build/gen-version.ts",
"update:version": "sucrase-node build/update-version.ts",
"gen:version": "sucrase-node scripts/gen-version.ts",
"update:version": "sucrase-node scripts/update-version.ts",
"clean": "pnpm run clean:lib && pnpm run clean -r --stream",
"clean:lib": "rimraf dist",
"build": "gulp -f build/gulpfile.ts",
"build": "gulp --require sucrase/register/ts -f build/gulpfile.ts",
"format": "prettier --write .",
"lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --max-warnings 0 && pretty-quick --check --branch dev",
"lint:fix": "eslint --fix . --ext .vue,.js,.ts,.jsx,.tsx && pretty-quick --branch dev",
"docs:dev": "pnpm -C docs dev",
"docs:build": "pnpm -C docs build",
"docs:serve": "pnpm -C docs serve",
"docs:gen-locale": "pnpm -C docs gen-locale",
"docs:crowdin": "sucrase-node build/crowdin-credentials.ts",
"docs:dev": "pnpm run -C docs dev",
"docs:build": "pnpm run -C docs build",
"docs:serve": "pnpm run -C docs serve",
"docs:gen-locale": "pnpm run -C docs gen-locale",
"docs:crowdin-credentials": "pnpm run -C docs crowdin-credentials",
"prepare": "husky install",
"postinstall": "pnpm gen:version"
},
@ -57,7 +57,7 @@
"@element-plus/tokens": "workspace:*",
"@element-plus/utils": "workspace:*",
"@popperjs/core": "^2.10.2",
"@vueuse/core": "~6.1.0",
"@vueuse/core": "^6.7.3",
"async-validator": "^4.0.7",
"dayjs": "^1.10.7",
"lodash": "^4.17.21",
@ -68,11 +68,11 @@
"devDependencies": {
"@commitlint/cli": "^13.2.1",
"@commitlint/config-conventional": "^13.2.0",
"@pnpm/find-workspace-packages": "^3.1.19",
"@pnpm/find-workspace-packages": "^3.1.20",
"@pnpm/logger": "^4.0.0",
"@pnpm/types": "^7.4.0",
"@rollup/plugin-commonjs": "^15.1.0",
"@rollup/plugin-node-resolve": "^9.0.0",
"@rollup/plugin-node-resolve": "^13.0.6",
"@rollup/plugin-replace": "^3.0.0",
"@sucrase/jest-plugin": "^2.1.1",
"@types/gulp": "^4.0.9",
@ -87,7 +87,7 @@
"chalk": "^4.1.2",
"components-helper": "^1.0.4",
"cz-conventional-changelog": "^3.3.0",
"esbuild": "~0.13.8",
"esbuild": "~0.13.9",
"eslint": "^8.0.1",
"eslint-config-prettier": "^8.3.0",
"eslint-define-config": "^1.1.1",
@ -118,6 +118,6 @@
"vue": "^3.2.20",
"vue-jest": "5.0.0-alpha.10",
"vue-router": "^4.0.12",
"vue-tsc": "^0.28.7"
"vue-tsc": "^0.28.8"
}
}

View File

@ -1,3 +0,0 @@
import { buildPackage } from '../../build/packages'
export default buildPackage(__dirname)

View File

@ -10,9 +10,5 @@
"peerDependencies": {
"vue": "^3.2.0"
},
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
},
"gitHead": "c69724230befa8fede0e6b9c37fb0b7e39fd7cdd"
}

View File

@ -12,8 +12,17 @@
"vue"
],
"license": "MIT",
"exports": {
".": {
"require": "./lib/index.js",
"import": "./es/index.mjs"
},
"./es": "./es/index.mjs",
"./lib": "./lib/index.js",
"./*": "./*"
},
"main": "lib/index.js",
"module": "es/index.js",
"module": "es/index.mjs",
"style": "dist/index.css",
"unpkg": "dist/index.full.js",
"jsdelivr": "dist/index.full.js",
@ -22,7 +31,9 @@
"theme-chalk/*.css",
"theme-chalk/src/*.scss",
"es/components/*/style/*",
"lib/components/*/style/*"
"lib/components/*/style/*",
"lib/components/*/src/**",
"es/components/*/src/**"
],
"repository": {
"type": "git",
@ -37,7 +48,7 @@
"dependencies": {
"@element-plus/icons": "^0.0.11",
"@popperjs/core": "^2.10.2",
"@vueuse/core": "~6.1.0",
"@vueuse/core": "^6.7.3",
"async-validator": "^4.0.7",
"dayjs": "^1.10.7",
"lodash": "^4.17.21",

View File

@ -1,3 +0,0 @@
import { buildPackage } from '../../build/packages'
export default buildPackage(__dirname)

View File

@ -11,9 +11,5 @@
"peerDependencies": {
"vue": "^3.2.0"
},
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
},
"gitHead": "c69724230befa8fede0e6b9c37fb0b7e39fd7cdd"
}

View File

@ -4,7 +4,7 @@ import { buildProps } from '@element-plus/utils/props'
import { useGlobalConfig } from '@element-plus/utils/util'
import type { ExtractPropTypes } from 'vue'
import type { MaybeRef } from '@vueuse/shared'
import type { MaybeRef } from '@vueuse/core'
const sizes = ['', 'large', 'medium', 'small', 'mini'] as const

View File

@ -1,3 +0,0 @@
import { buildPackage } from '../../build/packages'
export default buildPackage(__dirname)

View File

@ -8,9 +8,5 @@
"jsdelivr": "index.js",
"types": "index.d.ts",
"license": "MIT",
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
},
"gitHead": "c69724230befa8fede0e6b9c37fb0b7e39fd7cdd"
}

View File

@ -8,7 +8,7 @@
"style": "index.css",
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
"build": "gulp --require sucrase/register/ts"
},
"repository": {
"type": "git",

View File

@ -1,3 +0,0 @@
import { buildPackage } from '../../build/packages'
export default buildPackage(__dirname)

View File

@ -5,10 +5,6 @@
"peerDependencies": {
"vue": "^3.2.0"
},
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
},
"main": "index.ts",
"module": "index.ts",
"types": "index.d.js",

View File

@ -1,3 +0,0 @@
import { buildPackage } from '../../build/packages'
export default buildPackage(__dirname)

View File

@ -5,9 +5,5 @@
"peerDependencies": {
"vue": "^3.2.0"
},
"scripts": {
"clean": "rimraf dist",
"build": "gulp"
},
"gitHead": "c69724230befa8fede0e6b9c37fb0b7e39fd7cdd"
}

View File

@ -15,12 +15,12 @@ importers:
'@element-plus/theme-chalk': workspace:*
'@element-plus/tokens': workspace:*
'@element-plus/utils': workspace:*
'@pnpm/find-workspace-packages': ^3.1.19
'@pnpm/find-workspace-packages': ^3.1.20
'@pnpm/logger': ^4.0.0
'@pnpm/types': ^7.4.0
'@popperjs/core': ^2.10.2
'@rollup/plugin-commonjs': ^15.1.0
'@rollup/plugin-node-resolve': ^9.0.0
'@rollup/plugin-node-resolve': ^13.0.6
'@rollup/plugin-replace': ^3.0.0
'@sucrase/jest-plugin': ^2.1.1
'@types/gulp': ^4.0.9
@ -32,13 +32,13 @@ importers:
'@typescript-eslint/parser': ^5.1.0
'@vue/compiler-sfc': ^3.2.20
'@vue/test-utils': 2.0.0-rc.15
'@vueuse/core': ~6.1.0
'@vueuse/core': ^6.7.3
async-validator: ^4.0.7
chalk: ^4.1.2
components-helper: ^1.0.4
cz-conventional-changelog: ^3.3.0
dayjs: ^1.10.7
esbuild: ~0.13.8
esbuild: ~0.13.9
eslint: ^8.0.1
eslint-config-prettier: ^8.3.0
eslint-define-config: ^1.1.1
@ -73,7 +73,7 @@ importers:
vue: ^3.2.20
vue-jest: 5.0.0-alpha.10
vue-router: ^4.0.12
vue-tsc: ^0.28.7
vue-tsc: ^0.28.8
dependencies:
'@element-plus/components': link:packages/components
'@element-plus/directives': link:packages/directives
@ -85,7 +85,7 @@ importers:
'@element-plus/tokens': link:packages/tokens
'@element-plus/utils': link:packages/utils
'@popperjs/core': 2.10.2
'@vueuse/core': 6.1.0_vue@3.2.20
'@vueuse/core': 6.7.3_vue@3.2.20
async-validator: 4.0.7
dayjs: 1.10.7
lodash: 4.17.21
@ -95,11 +95,11 @@ importers:
devDependencies:
'@commitlint/cli': 13.2.1
'@commitlint/config-conventional': 13.2.0
'@pnpm/find-workspace-packages': 3.1.19_@pnpm+logger@4.0.0
'@pnpm/find-workspace-packages': 3.1.20_@pnpm+logger@4.0.0
'@pnpm/logger': 4.0.0
'@pnpm/types': 7.4.0
'@rollup/plugin-commonjs': 15.1.0_rollup@2.58.0
'@rollup/plugin-node-resolve': 9.0.0_rollup@2.58.0
'@rollup/plugin-node-resolve': 13.0.6_rollup@2.58.0
'@rollup/plugin-replace': 3.0.0_rollup@2.58.0
'@sucrase/jest-plugin': 2.1.1
'@types/gulp': 4.0.9
@ -114,7 +114,7 @@ importers:
chalk: 4.1.2
components-helper: 1.0.4
cz-conventional-changelog: 3.3.0
esbuild: 0.13.8
esbuild: 0.13.9
eslint: 8.0.1
eslint-config-prettier: 8.3.0_eslint@8.0.1
eslint-define-config: 1.1.1
@ -133,7 +133,7 @@ importers:
rimraf: 3.0.2
rollup: 2.58.0
rollup-plugin-css-only: 3.1.0_rollup@2.58.0
rollup-plugin-esbuild: 4.6.0_esbuild@0.13.8+rollup@2.58.0
rollup-plugin-esbuild: 4.6.0_esbuild@0.13.9+rollup@2.58.0
rollup-plugin-filesize: 9.1.1
rollup-plugin-vue: 6.0.0_@vue+compiler-sfc@3.2.20
sass: 1.43.3
@ -145,7 +145,7 @@ importers:
vue: 3.2.20
vue-jest: 5.0.0-alpha.10_0afda5a8ee2bde20d828cf7b22352ce5
vue-router: 4.0.12_vue@3.2.20
vue-tsc: 0.28.7_typescript@4.4.4
vue-tsc: 0.28.8_typescript@4.4.4
docs:
specifiers:
@ -190,7 +190,7 @@ importers:
specifiers:
'@element-plus/icons': ^0.0.11
'@popperjs/core': ^2.10.2
'@vueuse/core': ~6.1.0
'@vueuse/core': ^6.7.3
async-validator: ^4.0.7
dayjs: ^1.10.7
lodash: ^4.17.21
@ -200,7 +200,7 @@ importers:
dependencies:
'@element-plus/icons': 0.0.11
'@popperjs/core': 2.10.2
'@vueuse/core': 6.1.0_vue@3.2.20
'@vueuse/core': 6.7.3_vue@3.2.20
async-validator: 4.0.7
dayjs: 1.10.7
lodash: 4.17.21
@ -250,9 +250,9 @@ importers:
vite: ^2.6.10
dependencies:
'@vitejs/plugin-vue': 1.9.3_vite@2.6.10
vite: 2.6.10
vite: 2.6.10_sass@1.43.3
devDependencies:
unplugin-vue-components: 0.16.0_vite@2.6.10
unplugin-vue-components: 0.16.0_5526dbcc4fc39ff4d6a8525c3fd94908
packages:
@ -1304,15 +1304,15 @@ packages:
load-json-file: 6.2.0
dev: true
/@pnpm/cli-utils/0.6.27_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-7c4+Bcm5d59H7VbcgYwS2ewCZojlh/XEpxnNOPDsHnDjCutlQNKd+LidPbaJcBpLmrhebHCIfcK/fIHm3H3Qtg==}
/@pnpm/cli-utils/0.6.28_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-hIVSsH5x+iQRLJz5tGQ0vXDb9UzMRmrdRNl+F3zAkx4toBvsvuCwRjH15KUvLRImGtfgwU1J2mr+lnvGbGlBPw==}
engines: {node: '>=12.17'}
peerDependencies:
'@pnpm/logger': ^4.0.0
dependencies:
'@pnpm/cli-meta': 2.0.0
'@pnpm/config': 13.3.0_@pnpm+logger@4.0.0
'@pnpm/default-reporter': 8.3.3_@pnpm+logger@4.0.0
'@pnpm/config': 13.4.0_@pnpm+logger@4.0.0
'@pnpm/default-reporter': 8.3.4_@pnpm+logger@4.0.0
'@pnpm/error': 2.0.0
'@pnpm/logger': 4.0.0
'@pnpm/manifest-utils': 2.1.0_@pnpm+logger@4.0.0
@ -1322,8 +1322,8 @@ packages:
load-json-file: 6.2.0
dev: true
/@pnpm/config/13.3.0_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-qJAdMUMtKZNizmM41KVTNUtHmd8Y3hS39eOQo/WSNfz5ihZc+tIloh+EHTQXBrYZghatUTg1kTR1GvQQPYUH0Q==}
/@pnpm/config/13.4.0_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-R4p48ulA84JBeRVbv3T0YdjWDyUzFaSO2K2dqaC8b7M1XKWYWCSnXMZeQh5eHt534NznQBjD/nAXna49cK/igA==}
engines: {node: '>=12.17'}
dependencies:
'@pnpm/constants': 5.0.0
@ -1357,11 +1357,11 @@ packages:
'@pnpm/types': 7.4.0
dev: true
/@pnpm/default-reporter/8.3.3_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-nvc/Hplwph9y3td9tXTcjQKdAvTa7EJldKUVgIN2mfsGO01ReLmwLDlmAe0tQZ3vbylX+ZJMNXduPcSwqimikg==}
/@pnpm/default-reporter/8.3.4_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-c44uPNqi9tVRbgVrVf4JWgn+6lK+6J8XXf6qL1j4H/Vx62aLLEVVEQ8kBtb9Ohv6NkwE14Xe1JUGtSKo38cwIA==}
engines: {node: '>=12.17'}
dependencies:
'@pnpm/config': 13.3.0_@pnpm+logger@4.0.0
'@pnpm/config': 13.4.0_@pnpm+logger@4.0.0
'@pnpm/core-loggers': 6.0.4_@pnpm+logger@4.0.0
'@pnpm/error': 2.0.0
'@pnpm/types': 7.4.0
@ -1375,7 +1375,7 @@ packages:
right-pad: 1.0.1
rxjs: 7.4.0
semver: 7.3.5
stacktracey: 1.2.127
stacktracey: 2.1.7
string-length: 4.0.2
strip-ansi: 6.0.1
transitivePeerDependencies:
@ -1387,11 +1387,11 @@ packages:
engines: {node: '>=12.17'}
dev: true
/@pnpm/find-workspace-packages/3.1.19_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-PllCHDIeEBlBPpGei5L/XYgwUaza+YhKpxpFbMPIbQWApBNF0o8pR8FxfS2ig05w+2HzJ1ewqCCPaXl5GqfRtw==}
/@pnpm/find-workspace-packages/3.1.20_@pnpm+logger@4.0.0:
resolution: {integrity: sha512-QOEO8S6axdH9Mr6iEybuHzPjnaWk+1xvZrmVdid5dD+y2R9oXnsLkYtyURh/P6pfUJ0D6WTZcSnA3Z9kzUOWyw==}
engines: {node: '>=12.17'}
dependencies:
'@pnpm/cli-utils': 0.6.27_@pnpm+logger@4.0.0
'@pnpm/cli-utils': 0.6.28_@pnpm+logger@4.0.0
'@pnpm/constants': 5.0.0
'@pnpm/types': 7.4.0
find-packages: 8.0.5
@ -1529,15 +1529,15 @@ packages:
rollup: 2.58.0
dev: true
/@rollup/plugin-node-resolve/9.0.0_rollup@2.58.0:
resolution: {integrity: sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==}
/@rollup/plugin-node-resolve/13.0.6_rollup@2.58.0:
resolution: {integrity: sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==}
engines: {node: '>= 10.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0
rollup: ^2.42.0
dependencies:
'@rollup/pluginutils': 3.1.0_rollup@2.58.0
'@types/resolve': 1.17.1
builtin-modules: 3.1.0
builtin-modules: 3.2.0
deepmerge: 4.2.2
is-module: 1.0.0
resolve: 1.20.0
@ -1785,6 +1785,10 @@ packages:
resolution: {integrity: sha512-yV1nWZPlMFpoXyoknm4S56y2nlTAuFYaJuQtYRAOU7xA/FJ9RY0Xm7QOkaYMMmr8ESdHIuUb6oQgR/0+2NqlyA==}
dev: true
/@types/node/16.11.4:
resolution: {integrity: sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==}
dev: true
/@types/normalize-package-data/2.4.0:
resolution: {integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==}
dev: true
@ -1800,7 +1804,7 @@ packages:
/@types/resolve/1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies:
'@types/node': 14.11.10
'@types/node': 16.11.4
dev: true
/@types/sass/1.16.1:
@ -1989,18 +1993,18 @@ packages:
peerDependencies:
vite: ^2.5.10
dependencies:
vite: 2.6.10
vite: 2.6.10_sass@1.43.3
dev: false
/@volar/code-gen/0.28.7:
resolution: {integrity: sha512-cprWUzpGVCPsBpTKVUhfHEYpJBsjLYe/quvtU+PLAsXS7EcxSG+jMPNXWUyB6IhBcW5hrgMhIYfuWzhOvEESxQ==}
/@volar/code-gen/0.28.8:
resolution: {integrity: sha512-zoU+qz5Txx2HNWxDp0ACxOj2/fSFvqKaj9spAuqSQbZvrf+FWN8cnuod/JCBRhHnvb4ie9Z/NLkMid6Hfxirag==}
dependencies:
'@volar/shared': 0.28.7
'@volar/source-map': 0.28.7
'@volar/shared': 0.28.8
'@volar/source-map': 0.28.8
dev: true
/@volar/html2pug/0.28.7:
resolution: {integrity: sha512-HdxZYKVJJv3lRJfOB1sbyAdqyowVRMbvQtCejcvqEvAjaU7PYJLd974RMKf9eSpalFXtnRwXRZKKlNz18jicsQ==}
/@volar/html2pug/0.28.8:
resolution: {integrity: sha512-Yli7lNeRky100ubeCg0f47itPzOZx1rC/3yDkbeAOnL1blyNK7hvMEquth+EwWl8W1qEnpdqFJQR2CY5cntyjw==}
dependencies:
domelementtype: 2.2.0
domhandler: 4.2.2
@ -2008,29 +2012,29 @@ packages:
pug: 3.0.2
dev: true
/@volar/shared/0.28.7:
resolution: {integrity: sha512-binrWo2vjrQhUSBc7f/cn3Jq/qTLz+2kc13R+htWPxEBXPHcAqOspkOzLN9J3jQ4q4TA4kK1ZiSKGdIz4e41Tg==}
/@volar/shared/0.28.8:
resolution: {integrity: sha512-jYm3HUbRjd5QPbBNvfD+W2fZxGjzY7QspRNAlbv0onL5zcFTz2kAQb/CYxp7WLxwKiLqjQ9A4G5BbBZvhzeMQw==}
dependencies:
upath: 2.0.1
vscode-jsonrpc: 8.0.0-next.3
vscode-uri: 3.0.2
dev: true
/@volar/source-map/0.28.7:
resolution: {integrity: sha512-cjF0Em5MXtG687eenrURqJMNE6sN/MQzUtrrCsEp+bvP7Eaje0ugdhV9IZo0Q3aufbhtyUU7MOezptvhEiP+YA==}
/@volar/source-map/0.28.8:
resolution: {integrity: sha512-+j6Mted0Dz2zD67dWqGg0pDomFWRrU/xYn36RjQd+UOgBEYV6i7aWqTNosc3W8FXbzbZoKosZfvEPVNpxbmxNg==}
dependencies:
'@volar/shared': 0.28.7
'@volar/shared': 0.28.8
dev: true
/@volar/transforms/0.28.7:
resolution: {integrity: sha512-0quLXRC8rxHb/Ptmp8qr730cE8gCGZrJuoDEQ1+XE0IKGyF+jhvqJsdjh5JL8vdBQbkV5Vpo7pSo5mwUPAarSQ==}
/@volar/transforms/0.28.8:
resolution: {integrity: sha512-1oUw0luHZlBPgq3ZmkZMhIyXAvX3G5Rzp5Zx5jnMRK40yn/rUB2S+VSw1XNbb9HvG+WAOc8uLEJfaeDYNkfxqg==}
dependencies:
'@volar/shared': 0.28.7
'@volar/shared': 0.28.8
vscode-languageserver: 8.0.0-next.3
dev: true
/@vscode/emmet-helper/2.8.1:
resolution: {integrity: sha512-4aVKk7sjtNPLKqVq5Td1EgtB+4kE/enExA4RUpYmVVKawqusRemZ+LzzzBxxnHRTOrIBermY8kXQsqjutDPyYQ==}
/@vscode/emmet-helper/2.8.2:
resolution: {integrity: sha512-A/+pkBYQq2JTow1A2flfTmEOmiF780KpdkoX7VBjQ7wujeA+CFUPd17YdeIa9aim20+J5Jp7SFujPDwVFiQucQ==}
dependencies:
emmet: 2.3.4
jsonc-parser: 2.3.1
@ -3029,8 +3033,8 @@ packages:
ieee754: 1.2.1
dev: true
/builtin-modules/3.1.0:
resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==}
/builtin-modules/3.2.0:
resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==}
engines: {node: '>=6'}
dev: true
@ -4179,6 +4183,15 @@ packages:
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/esbuild-android-arm64/0.13.9:
resolution: {integrity: sha512-Ty0hKldtjJVLHwUwbKR4GFPiXBo5iQ3aE1OLBar9lh3myaRkUGEb+Ypl74LEKa0+t/9lS3Ev1N5+5P2Sq6UvNQ==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-64/0.13.8:
@ -4186,6 +4199,15 @@ packages:
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/esbuild-darwin-64/0.13.9:
resolution: {integrity: sha512-Ay0/b98v0oYp3ApXNQ7QPbaSkCT9WjBU6h8bMB1SYrQ/PmHgwph91fb9V0pfOLKK1rYWypfrNbI0MyT2tWN+rQ==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-arm64/0.13.8:
@ -4193,6 +4215,15 @@ packages:
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/esbuild-darwin-arm64/0.13.9:
resolution: {integrity: sha512-nJB8chaJdWathCe6EyIiMIqfyEzbuXPyNsPlL3bYRB1zFCF8feXT874D4IHbJ/w8B6BpY3sM1Clr/I/DK8E4ow==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-64/0.13.8:
@ -4200,6 +4231,15 @@ packages:
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/esbuild-freebsd-64/0.13.9:
resolution: {integrity: sha512-ktaBujf12XLkVXLGx7WjFcmh1tt34tm7gP4pHkhvbzbHrq+BbXwcl4EsW+5JT9VNKl7slOGf4Qnua/VW7ZcnIw==}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-arm64/0.13.8:
@ -4207,6 +4247,15 @@ packages:
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/esbuild-freebsd-arm64/0.13.9:
resolution: {integrity: sha512-vVa5zps4dmwpXwv/amxVpIWvFJuUPWQkpV+PYtZUW9lqjXsQ3LBHP51Q1cXZZBIrqwszLsEyJPa5GuDOY15hzQ==}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-32/0.13.8:
@ -4214,6 +4263,15 @@ packages:
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-32/0.13.9:
resolution: {integrity: sha512-HxoW9QNqhO8VW1l7aBiYQH4lobeHq85+blZ4nlZ7sg5CNhGRRwnMlV6S08VYKz6V0YKnHb5OqJxx2HZuTZ7tgQ==}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-64/0.13.8:
@ -4221,6 +4279,15 @@ packages:
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-64/0.13.9:
resolution: {integrity: sha512-L+eAR8o1lAUr9g64RXnBLuWZjAItAOWSUpvkchpa6QvSnXFA/nG6PgGsOBEqhDXl9qYEpGI0ReDrFkf8ByapvQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm/0.13.8:
@ -4228,6 +4295,15 @@ packages:
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-arm/0.13.9:
resolution: {integrity: sha512-DT0S+ufCVXatPZHjkCaBgZSFIV8FzY4GEHz/BlkitTWzUvT1dIUXjPIRPnqBUVa+0AyS1bZSfHzv9hTT4LHz7A==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm64/0.13.8:
@ -4235,6 +4311,15 @@ packages:
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-arm64/0.13.9:
resolution: {integrity: sha512-IjbhZpW5VQYK4nVI4dj/mLvH5oXAIf57OI8BYVkCqrdVXJwR8nVrSqux3zJSY+ElrkOK3DtG9iTPpmqvBXaU0g==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-mips64le/0.13.8:
@ -4242,6 +4327,15 @@ packages:
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-mips64le/0.13.9:
resolution: {integrity: sha512-ec9RgAM4r+fe1ZmG16qeMwEHdcIvqeW8tpnpkfSQu9T4487KtQF6lg3TQasTarrLLEe7Qpy+E+r4VwC8eeZySQ==}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-ppc64le/0.13.8:
@ -4249,6 +4343,15 @@ packages:
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/esbuild-linux-ppc64le/0.13.9:
resolution: {integrity: sha512-7b2/wg8T1n/L1BgCWlMSez0aXfGkNjFuOqMBQdnTti3LRuUwzGJcrhRf/FdZGJ5/evML9mqu60vLRuXW1TdXCg==}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-netbsd-64/0.13.8:
@ -4256,6 +4359,15 @@ packages:
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: false
optional: true
/esbuild-netbsd-64/0.13.9:
resolution: {integrity: sha512-PiZu3h4+Szj0iZPgvuD2Y0isOXnlNetmF6jMcOwW54BScwynW24/baE+z7PfDyNFgjV04Ga2THdcpbKBDhgWQw==}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-openbsd-64/0.13.8:
@ -4263,6 +4375,15 @@ packages:
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: false
optional: true
/esbuild-openbsd-64/0.13.9:
resolution: {integrity: sha512-SJKN4Ez+ilY7mu+1gAdGQ9N6dktBfbEkiOAvw+hT7xHrNnTnrTGH0FT4qx9dazB9HX6D04L4PXmVOyynqi+oEQ==}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-sunos-64/0.13.8:
@ -4270,6 +4391,15 @@ packages:
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: false
optional: true
/esbuild-sunos-64/0.13.9:
resolution: {integrity: sha512-9N0RjZ7cElE8ifrS0nBrLQgBMQNPiIIKO2GzLXy7Ms8AM3KjfLiV2G2+9O0B9paXjRAHchIwazTeOyeWb1vyWA==}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-32/0.13.8:
@ -4277,6 +4407,15 @@ packages:
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/esbuild-windows-32/0.13.9:
resolution: {integrity: sha512-awxWs1kns+RfjhqBbTbdlePjqZrAE2XMaAQJNg9dtu+C7ghC3QKsqXbu0C26OuF5YeAdJcq9q+IdG6WPLjvj9w==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-64/0.13.8:
@ -4284,6 +4423,15 @@ packages:
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/esbuild-windows-64/0.13.9:
resolution: {integrity: sha512-VmA9GQMCzOr8rFfD72Dum1+AWhJui7ZO6sYwp6rBHYu4vLmWITTSUsd/zgXXmZuHBPkkvxLJLF8XsKFCRKflJA==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-arm64/0.13.8:
@ -4291,6 +4439,15 @@ packages:
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/esbuild-windows-arm64/0.13.9:
resolution: {integrity: sha512-P/jPY2JwmTpgEPh9BkXpCe690tcDSSo0K9BHTniSeEAEz26kPpqldVa4XDm0R+hNnFA7ecEgNskr4QAxE1ry0w==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild/0.12.29:
@ -4321,6 +4478,31 @@ packages:
esbuild-windows-32: 0.13.8
esbuild-windows-64: 0.13.8
esbuild-windows-arm64: 0.13.8
dev: false
/esbuild/0.13.9:
resolution: {integrity: sha512-8bYcckmisXjGvBMeylp1PRtu21uOoCDFAgXGGF2BR241zYQDN6ZLNvcmQlnQ7olG0p6PRWmJI8WVH3ca8viPuw==}
hasBin: true
requiresBuild: true
optionalDependencies:
esbuild-android-arm64: 0.13.9
esbuild-darwin-64: 0.13.9
esbuild-darwin-arm64: 0.13.9
esbuild-freebsd-64: 0.13.9
esbuild-freebsd-arm64: 0.13.9
esbuild-linux-32: 0.13.9
esbuild-linux-64: 0.13.9
esbuild-linux-arm: 0.13.9
esbuild-linux-arm64: 0.13.9
esbuild-linux-mips64le: 0.13.9
esbuild-linux-ppc64le: 0.13.9
esbuild-netbsd-64: 0.13.9
esbuild-openbsd-64: 0.13.9
esbuild-sunos-64: 0.13.9
esbuild-windows-32: 0.13.9
esbuild-windows-64: 0.13.9
esbuild-windows-arm64: 0.13.9
dev: true
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
@ -5113,8 +5295,8 @@ packages:
engines: {node: '>=8.0.0'}
dev: true
/get-source/1.0.42:
resolution: {integrity: sha512-uM5xCIG5w2meVbiZaID4ajH6J8OfApqhlKXtZwsS/IIM9PLb0b2kc5sRdy78yEDfxsIYEWNk0OVxai6OpDCExA==}
/get-source/2.0.12:
resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
dependencies:
data-uri-to-buffer: 2.0.2
source-map: 0.6.1
@ -8855,7 +9037,7 @@ packages:
rollup: 2.58.0
dev: true
/rollup-plugin-esbuild/4.6.0_esbuild@0.13.8+rollup@2.58.0:
/rollup-plugin-esbuild/4.6.0_esbuild@0.13.9+rollup@2.58.0:
resolution: {integrity: sha512-fjihkrOCy7qeNDd1VmtWw39UA4b6a96NVrsuK6eg1SArnWoS3G4xLoW7liF0oRQU7+ONPr/Gjxz9cv+WLRhaGA==}
engines: {node: '>=12'}
peerDependencies:
@ -8863,7 +9045,7 @@ packages:
rollup: ^1.20.0 || ^2.0.0
dependencies:
'@rollup/pluginutils': 4.1.1
esbuild: 0.13.8
esbuild: 0.13.9
joycon: 3.0.1
jsonc-parser: 3.0.0
rollup: 2.58.0
@ -9335,11 +9517,11 @@ packages:
escape-string-regexp: 2.0.0
dev: true
/stacktracey/1.2.127:
resolution: {integrity: sha512-tj3BObW/adLIAQGGQ0flRTADrCv6KQ4VgncUO8NrQ7pk/H6pGMtXxQLjZYw66eqPDTC1DHtnBwGSmG+Wx/D/kg==}
/stacktracey/2.1.7:
resolution: {integrity: sha512-/w8uiORLKmSndIoXcrs09yAfwr34rMpToeXageRKM2a5UhNOLLp1Iag6UP7O0IOYd7zDLNQVOUYHruXmK5dv0w==}
dependencies:
as-table: 1.0.55
get-source: 1.0.42
get-source: 2.0.12
dev: true
/static-extend/0.1.2:
@ -10090,7 +10272,7 @@ packages:
engines: {node: '>= 10.0.0'}
dev: true
/unplugin-vue-components/0.16.0_vite@2.6.10:
/unplugin-vue-components/0.16.0_5526dbcc4fc39ff4d6a8525c3fd94908:
resolution: {integrity: sha512-BM/5p6/btLgDjUxf290cKbzbaGow95NFibhp+TSQhL0wyb1Q6sP0nmlqOvGnpLANFq0+urXxXDloMLlTJH6Fww==}
engines: {node: '>=14'}
peerDependencies:
@ -10105,7 +10287,8 @@ packages:
magic-string: 0.25.7
minimatch: 3.0.4
resolve: 1.20.0
unplugin: 0.2.16_vite@2.6.10
unplugin: 0.2.16_rollup@2.58.0+vite@2.6.10
vue: 3.2.20
transitivePeerDependencies:
- rollup
- supports-color
@ -10113,7 +10296,7 @@ packages:
- webpack
dev: true
/unplugin/0.2.16_vite@2.6.10:
/unplugin/0.2.16_rollup@2.58.0+vite@2.6.10:
resolution: {integrity: sha512-KkXatHba0baJszSHW+2e8EQU/5Bz7rYwzYXu8wUeq97tE6K3wvub+7OWSuRv04LttvzNLsJ2jXEyR35gofv74Q==}
peerDependencies:
rollup: ^2.50.0
@ -10127,7 +10310,8 @@ packages:
webpack:
optional: true
dependencies:
vite: 2.6.10
rollup: 2.58.0
vite: 2.6.10_sass@1.43.3
webpack-virtual-modules: 0.4.3
dev: true
@ -10312,7 +10496,7 @@ packages:
fsevents: 2.3.2
dev: true
/vite/2.6.10:
/vite/2.6.10_sass@1.43.3:
resolution: {integrity: sha512-XbevwpDJMs3lKiGEj0UQScsOCpwHIjFgfzPnFVkPgnxsF9oPv1uGyckLg58XkXv6LnO46KN9yZqJzINFmAxtUg==}
engines: {node: '>=12.2.0'}
hasBin: true
@ -10332,6 +10516,7 @@ packages:
postcss: 8.3.11
resolve: 1.20.0
rollup: 2.58.0
sass: 1.43.3
optionalDependencies:
fsevents: 2.3.2
dev: false
@ -10443,22 +10628,22 @@ packages:
resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==}
dev: true
/vscode-pug-languageservice/0.28.7:
resolution: {integrity: sha512-LMeR/be3qm63xsamMFCn9/fcu0PKeIS1ci7ou9CcOwxIK7Zr/vGAmG2K0uNIKzm/w7I20F6855RVf9Ne2QHb4Q==}
/vscode-pug-languageservice/0.28.8:
resolution: {integrity: sha512-qMs5OPyKINc1SSR6lkLEp7PCvySeuA7fkU6yqmMLmhR5reEhks5T6QqpYrOfbsMco3wkKnqp7p4CA/Xo282Rhw==}
dependencies:
'@volar/code-gen': 0.28.7
'@volar/shared': 0.28.7
'@volar/source-map': 0.28.7
'@volar/transforms': 0.28.7
'@volar/code-gen': 0.28.8
'@volar/shared': 0.28.8
'@volar/source-map': 0.28.8
'@volar/transforms': 0.28.8
pug-lexer: 5.0.1
pug-parser: 6.0.0
vscode-languageserver: 8.0.0-next.3
dev: true
/vscode-typescript-languageservice/0.28.7:
resolution: {integrity: sha512-CLrcnDlISMl9cKLFVubKfaa2fp0Y1sULeCoqUw0JsBRcz+2U67ETalUkolr8iw59oGwINybJ/VyfWnsNFLt9FA==}
/vscode-typescript-languageservice/0.28.8:
resolution: {integrity: sha512-qtvAkVQzMrJS/aaSdgVIaiUpy4e2o4wD2dml+L6Efsn0pzkM9EqAbRWNQP/gc1rcNRcvu1kFVCFdLag/eAKFag==}
dependencies:
'@volar/shared': 0.28.7
'@volar/shared': 0.28.8
semver: 7.3.5
upath: 2.0.1
vscode-languageserver: 8.0.0-next.3
@ -10473,15 +10658,15 @@ packages:
resolution: {integrity: sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==}
dev: true
/vscode-vue-languageservice/0.28.7:
resolution: {integrity: sha512-zguYZIDTqtTL4rPBZewqdTu2wpivlcw/dah6BcRKPSdJIXIncvCy/BoS0mKb+AvME6ltiQBTCAoF98d8XZRfxg==}
/vscode-vue-languageservice/0.28.8:
resolution: {integrity: sha512-IPKLwOyzLXWsNqd3LOBZ/nuB/Jkoyp+UVw5fwa5stZxBmc7zLaZJEnXWmsDMBYZQsc+6D4TJK2mO8Tvh52RiFQ==}
dependencies:
'@volar/code-gen': 0.28.7
'@volar/html2pug': 0.28.7
'@volar/shared': 0.28.7
'@volar/source-map': 0.28.7
'@volar/transforms': 0.28.7
'@vscode/emmet-helper': 2.8.1
'@volar/code-gen': 0.28.8
'@volar/html2pug': 0.28.8
'@volar/shared': 0.28.8
'@volar/source-map': 0.28.8
'@volar/transforms': 0.28.8
'@vscode/emmet-helper': 2.8.2
'@vue/compiler-dom': 3.2.20
'@vue/reactivity': 3.2.20
'@vue/shared': 3.2.20
@ -10492,8 +10677,8 @@ packages:
vscode-json-languageservice: 4.1.8
vscode-languageserver: 8.0.0-next.3
vscode-languageserver-textdocument: 1.0.2
vscode-pug-languageservice: 0.28.7
vscode-typescript-languageservice: 0.28.7
vscode-pug-languageservice: 0.28.8
vscode-typescript-languageservice: 0.28.8
dev: true
/vue-demi/0.11.4_vue@3.2.20:
@ -10567,14 +10752,15 @@ packages:
vue: 3.2.20
dev: true
/vue-tsc/0.28.7_typescript@4.4.4:
resolution: {integrity: sha512-s3H29Aa2PVpJ0EKPGKllTIwgmcOTNe+Uo3jHkX+F+wSYBmVLt7ZHeYJD5K35PwM6QZ2ryKcaDn5cDIq683Gb1g==}
/vue-tsc/0.28.8_typescript@4.4.4:
resolution: {integrity: sha512-nvS0+hzklcOZXlO5Hjfh7eWAE4r5VJNlcgT25Knp7Sh7rX7GKUj0faKj/bPupJuVQSfti7cAfVItAYw3JsM0QA==}
hasBin: true
peerDependencies:
typescript: '*'
dependencies:
'@volar/shared': 0.28.8
typescript: 4.4.4
vscode-vue-languageservice: 0.28.7
vscode-vue-languageservice: 0.28.8
dev: true
/vue/3.2.20:

5
scripts/.eslintrc.js Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
rules: {
'no-console': 'off',
},
}

View File

@ -1,7 +1,7 @@
import fs from 'fs'
import { epPackage } from './utils/paths'
import { cyan, red, yellow, green } from './utils/log'
import { getPackageManifest } from './utils/pkg'
import { epPackage } from '../build/utils/paths'
import { cyan, red, yellow, green } from '../build/utils/log'
import { getPackageManifest } from '../build/utils/pkg'
const tagVersion = process.env.TAG_VERSION
const gitHead = process.env.GIT_HEAD