packages/next-components/build.ts
import { compile, getCompileConfig } from '../../scripts/build'
import ts from 'typescript'
import tsImportPluginFactory from 'ts-import-plugin'
import glob from 'glob'
import * as fs from 'fs-extra'
const transformer = tsImportPluginFactory({
libraryName: '@alifd/next',
//style: importPath => `${importPath}/style`,
})
function buildESM() {
const { fileNames, options } = getCompileConfig(require.resolve('./tsconfig.json'), {
outDir: './esm',
module: ts.ModuleKind.ESNext
})
compile(fileNames, options)
console.log('esm build successfully')
}
const TEMP_OUT_DIR = './temp_esm'
function buildTempESM() {
const { fileNames, options } = getCompileConfig(require.resolve('./tsconfig.json'), {
outDir: TEMP_OUT_DIR,
module: ts.ModuleKind.ESNext
})
compile(fileNames, options, { before: [transformer] })
console.log('temporary esm build successfully')
}
function clearTempESM() {
fs.removeSync(TEMP_OUT_DIR)
console.log('clear temporary esm build successfully')
}
function buildES5() {
const rootNames = glob.sync(`${TEMP_OUT_DIR}/**/*.js`)
compile(rootNames, {
allowJs: true,
esModuleInterop: true,
moduleResolution: ts.ModuleResolutionKind.NodeJs,
module: ts.ModuleKind.CommonJS,
target: ts.ScriptTarget.ES5,
outDir: './lib',
declaration: false,
})
console.log('es5 build successfully')
}
buildESM()
buildTempESM()
buildES5()
clearTempESM()