Skip to content

Commit

Permalink
feat: ext option
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Apr 23, 2021
1 parent 0e2a060 commit f2c1bc6
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ While there are tools like [tsc](https://www.typescriptlang.org/docs/handbook/co
## 🚀 Usage

```bash
npx mkdist [rootDir] [--src=src] [--dist=dist] [--format=cjs|esm] [-d|--declaration]
npx mkdist [rootDir] [--src=src] [--dist=dist] [--format=cjs|esm] [-d|--declaration] [--ext=mjs|js|ts]
```

## License
Expand Down
3 changes: 2 additions & 1 deletion src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ async function main () {

if (args.help) {
// eslint-disable-next-line no-console
console.log('Usage: npx mkdist [rootDir] [--src=src] [--dist=dist] [--format=cjs|esm] [-d|--declaration]')
console.log('Usage: npx mkdist [rootDir] [--src=src] [--dist=dist] [--format=cjs|esm] [-d|--declaration] [--ext=mjs|js|ts]')
process.exit(0)
}

Expand All @@ -15,6 +15,7 @@ async function main () {
srcDir: args.src,
distDir: args.dist,
format: args.format,
ext: args.ext,
declaration: Boolean(args.declaration || args.d)
})

Expand Down
15 changes: 8 additions & 7 deletions src/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,24 @@ export type LoaderResult = OutputFile[] | undefined

export type LoadFile = (input: InputFile) => LoaderResult | Promise<LoaderResult>

export interface LoaderOptions {
ext?: 'mjs' | 'js' | 'ts',
format?: 'cjs' | 'esm',
declaration?: boolean
}

export interface LoaderContext {
loadFile: LoadFile,
options: {
format?: 'cjs' | 'esm',
declaration?: boolean
}
options: LoaderOptions
}

export type Loader = (input: InputFile, context: LoaderContext)
=> LoaderResult | Promise<LoaderResult>

export const defaultLoaders: Loader[] = [vueLoader, jsLoader]

export interface CreateLoaderOptions {
export interface CreateLoaderOptions extends LoaderOptions {
loaders?: Loader[]
format?: LoaderContext['options']['format']
declaration?: LoaderContext['options']['declaration']
}

export function createLoader (loaderOptions: CreateLoaderOptions = {}) {
Expand Down
2 changes: 1 addition & 1 deletion src/loaders/js.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const jsLoader: Loader = async (input, { options }) => {
output.push({
contents,
path: input.path,
extension: isCjs ? '.js' : '.mjs'
extension: options.ext ? `.${options.ext}` : (isCjs ? '.js' : '.mjs')
})

return output
Expand Down
9 changes: 4 additions & 5 deletions src/make.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
import globby from 'globby'
import { resolve, extname, join, basename, dirname } from 'upath'
import { emptyDir, mkdirp, copyFile, readFile, writeFile, unlink } from 'fs-extra'
import { InputFile, CreateLoaderOptions, createLoader, OutputFile, LoaderResult } from './loader'
import { InputFile, LoaderOptions, createLoader, OutputFile, LoaderResult } from './loader'
import { getDeclarations } from './utils/dts'

interface mkdistOptions {
export interface MkdistOptions extends LoaderOptions {
rootDir?: string
srcDir?: string
distDir?: string
cleanDist?: boolean
format?: CreateLoaderOptions['format']
declaration?: CreateLoaderOptions['declaration']
}

export async function mkdist (options: mkdistOptions /* istanbul ignore next */ = {}) {
export async function mkdist (options: MkdistOptions /* istanbul ignore next */ = {}) {
// Resolve srcDir and distDir relative to rootDir
options.rootDir = resolve(process.cwd(), options.rootDir || '.')
options.srcDir = resolve(options.rootDir, options.srcDir || 'src')
Expand Down Expand Up @@ -42,6 +40,7 @@ export async function mkdist (options: mkdistOptions /* istanbul ignore next */

const { loadFile } = createLoader({
format: options.format,
ext: options.ext,
declaration: options.declaration
})

Expand Down

0 comments on commit f2c1bc6

Please sign in to comment.