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

Multi entry #6

Merged
merged 2 commits into from
Jan 14, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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