alibaba/noform

View on GitHub
packages/next/build.ts

Summary

Maintainability
C
1 day
Test Coverage
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()