2.0.2 • Published 4 years ago

@minjs1cn/compiler v2.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

@minjs1cn/compiler

单文件编译,支持less、ts、js,单独支持vue的sfc。如果需要支持jsx,请安装对应的babel预设,例如支持vue,安装:@vue/preset-jsx

Usage

const {
  compileJs,
  compileStyle,
  setModuleEnv,
  setNodeEnv,
  isScript,
  isStyle
} = require('@minjs1cn/compiler');

/**
 * 编译文件夹内所有文件
 * @param dir 
 */
async function compileDir(dir: string) {
  const files = fs.readdirSync(dir)
  await Promise.all(
    files.map(filename => {
      const filePath = path.join(dir, filename)
      // 如果是文件夹,则继续递归
      if (fs.lstatSync(filePath).isDirectory()) {
        return compileDir(filePath)
      }
      return compileFile(filePath)
    })
  )
}

/**
 * 编译文件
 * @param filename 
 * @returns 
 */
function compileFile(filename: string) {
  // 如果是脚本文件
  if (isScript(filename)) {
    return compileJs(filename)
  }
  // 如果是样式文件
  if (isStyle(filename)) {
    return compileStyle(filename)
  }
  // 移除无效文件
  return fs.remove(filename)
}

// 设置环境变量
setNodeEnv('production')
// 设置模块类型 esmodule | commonjs
setModuleEnv('esmodule')
// 拷贝源码
await fs.copy('src', 'lib')
// 开始编译
await compileDir('lib')