Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.

Commit

Permalink
Multi entry (#6)
Browse files Browse the repository at this point in the history
* multi-entry

* fix error on renamedts when multiple inputs, add and update dependencies
  • Loading branch information
aelbore committed Jan 14, 2020
1 parent 6513f7a commit ca0e641
Show file tree
Hide file tree
Showing 6 changed files with 320 additions and 179 deletions.
14 changes: 8 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
{
"name": "aria-build",
"version": "0.0.23",
"version": "0.0.24",
"description": "Build any web components",
"main": "aria-build.js",
"bin": {
"aria-build": "./bin/aria-build.js"
},
"scripts": {
"files": "ts-node index.ts",
"fs": "aria-fs",
"build": "node ./bin/aria-build.js -d",
"bundle": "ts-node tools/bundle.ts",
Expand Down Expand Up @@ -35,21 +36,22 @@
"devDependencies": {
"@types/mocha": "^5.2.7",
"@types/mock-fs": "^4.10.0",
"@types/node": "^13.1.4",
"@types/node": "^13.1.6",
"aria-mocha": "^0.0.7",
"coveralls": "^3.0.9",
"mock-fs": "^4.10.4",
"typescript": "^3.7.4"
},
"dependencies": {
"@rollup/plugin-commonjs": "^11.0.1",
"@rollup/plugin-node-resolve": "^6.1.0",
"@rollup/plugin-multi-entry": "^3.0.0",
"@rollup/plugin-node-resolve": "^7.0.0",
"aria-fs": "0.0.9",
"rollup": "^1.28.0",
"rollup": "^1.29.0",
"rollup-plugin-minify-html-literals": "^1.2.2",
"rollup-plugin-terser": "^5.1.3",
"rollup-plugin-terser": "^5.2.0",
"rollup-plugin-typescript2": "^0.25.3",
"sade": "^1.7.0",
"ts-node": "^8.5.4"
"ts-node": "^8.6.2"
}
}
45 changes: 45 additions & 0 deletions src/build.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,51 @@ describe('build', () => {
])
})

it('should [bundle] single format (es) with multiple inputs', async () => {
const opitions: TSRollupConfig = {
input: [
'./src/file.ts',
'./src/other-file.ts'
],
output: {
file: './dist/output.js',
format: 'es'
},
tsconfig: {
compilerOptions: {
declaration: true
}
}
}

mock({
'dist': {},
'src/file.ts': content,
'src/other-file.ts': '',
'README.md': '',
'package.json': `
{
"name": "aria-sample"
}
`
})

await bundle(opitions)

const files = await globFiles('./dist/**/*')

expect(Array.isArray(files)).toBeTrue()
expect(files.length).equal(7)
await Promise.all([
assertFiles('./dist/src/other-file.d.ts'),
assertFiles('./dist/src/file.d.ts'),
assertFiles('./dist/output.js'),
assertFiles('./dist/aria-sample.d.ts'),
assertFiles('./dist/package.json'),
assertFiles('./dist/README.md')
])
})

it('should [bundle] multiple format (es,cjs) target node.', async () => {
const opitions: TSRollupConfig[] = [
{
Expand Down
3 changes: 2 additions & 1 deletion src/libs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import minifyHTML from 'rollup-plugin-minify-html-literals'

const commonjs = require('@rollup/plugin-commonjs')
const nodeResolve = require('@rollup/plugin-node-resolve')
const multiEntry = require('@rollup/plugin-multi-entry')
const typescript2 = require('rollup-plugin-typescript2')

export { rollup } from 'rollup'
export { terser } from 'rollup-plugin-terser'
export { commonjs, nodeResolve, typescript2, minifyHTML }
export { commonjs, nodeResolve, typescript2, minifyHTML, multiEntry }
11 changes: 6 additions & 5 deletions src/ts-rollup-config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { basename, join } from 'path'
import { commonjs, nodeResolve, typescript2 } from './libs'
import { commonjs, nodeResolve, typescript2, multiEntry } from './libs'
import { getPackageName, DEFAULT_VALUES, baseDir } from './utils'

export function onwarn(warning) {
Expand All @@ -8,7 +8,7 @@ export function onwarn(warning) {
}

export function createTSConfig(options: {
input?: string,
input?: string | string[],
file?: string,
tsconfig?: any,
pluginOptions?: any
Expand All @@ -18,7 +18,7 @@ export function createTSConfig(options: {
const transformers = tsconfig?.transformers ?? []
const compilerOptions = tsconfig?.compilerOptions ?? {}
const outputFile = file ? basename(file): '.rts2_cache'
const include = input ? { include: [ input ] }: {}
const include = input ? { include: Array.isArray(input) ? input: [ input ] }: {}

return {
transformers: [
Expand Down Expand Up @@ -60,7 +60,7 @@ export function createTSConfig(options: {
}

export interface TSRollupConfig {
input: string;
input: string | string[];
external?: string[];
output?: {
sourcemap?: boolean,
Expand All @@ -85,7 +85,7 @@ export function createTSRollupConfig(options: TSRollupConfig) {
? join(baseDir(), output.file)
: join(DEFAULT_VALUES.DIST_FOLDER, getPackageName() + '.js')

const entry = join(baseDir(), input)
const entry = Array.isArray(input) ? input: [ input ]

const beforePlugins = Array.isArray(plugins)
? []
Expand All @@ -105,6 +105,7 @@ export function createTSRollupConfig(options: TSRollupConfig) {
treeshake: true,
plugins: [
...beforePlugins,
multiEntry(),
typescript2(createTSConfig({
input: entry,
file,
Expand Down
27 changes: 23 additions & 4 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,40 @@ function pkgProps(options: any, pkgName: string) {
}

async function renameDtsFile(options: {
input: string,
input: string | string[],
output?: { file?: string },
filePath?: string
}) {
const { filePath, output, input } = options
const outDir = output.file ? dirname(output.file): DEFAULT_VALUES.DIST_FOLDER;

const pkgName = getPackageName(filePath)
const dtsInputFileName = getInputEntryFile(join(baseDir(), input)) + '.d.ts'

if (Array.isArray(input)) {
const dtsFiles = await globFiles(`./${outDir}/**/*.d.ts`)
.then(files => {
return files.map(file => {
const value = file
.replace(join(resolve(), outDir), '.')
.replace(/\\/g, '/')
.replace('.d.ts', '')
return `export * from '${value}'`
})
})
await writeFile(`./${outDir}/${pkgName}.d.ts`, dtsFiles.join('\n'))
}

const inputEntry = Array.isArray(input)
? pkgName
: getInputEntryFile(input)

const dtsInputFileName = inputEntry + '.d.ts'
const inputFullPath = join(outDir, dtsInputFileName)

const destFullPath = join(dirname(inputFullPath),
(getInputEntryFile(input).includes(pkgName) || getInputEntryFile(input).includes('index'))
(inputEntry.includes(pkgName) || inputEntry.includes('index'))
? pkgName + '.d.ts'
: getInputEntryFile(input) + '.d.ts'
: inputEntry + '.d.ts'
)

const isFileExist = await exist(destFullPath)
Expand Down
Loading

0 comments on commit ca0e641

Please sign in to comment.