Skip to content

Commit

Permalink
Fix: Build source incorrectly referenced the same file address
Browse files Browse the repository at this point in the history
  • Loading branch information
1aron committed Feb 20, 2024
1 parent c3b067f commit e19746b
Show file tree
Hide file tree
Showing 17 changed files with 70 additions and 163 deletions.
54 changes: 24 additions & 30 deletions packages/techor/src/commands/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const SRCFILE_EXT = '.{js,ts,jsx,cjs,tsx,mjs,mts}'
declare type OutputResults = (BuildOutputOptions & { artifact: (RollupOutputAsset | RollupOutputChunk) })[]
declare type BuildOutputOptions = BuildCommonOptions & { output: RollupOutputOptions }
declare type BuildOptions = {
rollupInput: RollupInputOptions,
input: RollupInputOptions,
outputOptionsList: BuildOutputOptions[]
}

Expand Down Expand Up @@ -126,12 +126,12 @@ export default (program: Command) => program.command('build [entryPaths...]')
(buildOptions.outputOptionsList).push(outputOptions)
} else {
buildOptions = {
rollupInput: config.build.input,
outputOptionsList: [outputOptions]
} as BuildOptions
buildOptions.rollupInput.input = input
buildOptions.rollupInput.external = (config.build.external && !isGlobalFile) && getWideExternal(config.build.external || []);
(buildOptions.rollupInput.plugins as RollupInputPluginOption[]).unshift(
buildOptions.input = extend({}, config.build.input)
buildOptions.input.input = input
buildOptions.input.external = (config.build.external && !isGlobalFile) && getWideExternal(config.build.external || []);
(buildOptions.input.plugins as RollupInputPluginOption[]).unshift(
...[
config.build.swc && swc(config.build.swc),
config.build.commonjs && commonjs(config.build.commonjs),
Expand Down Expand Up @@ -235,7 +235,7 @@ export default (program: Command) => program.command('build [entryPaths...]')
return
}

log.i`Start watching for file changes...`
if (config.build.watch) log.i`Start watching for file changes...`
const outputResults: OutputResults = []
const printOutputResults = (eachOutputResults: OutputResults, eachBuildStartTime: [number, number]) => {
const buildTime = process.hrtime(eachBuildStartTime)
Expand Down Expand Up @@ -283,33 +283,27 @@ export default (program: Command) => program.command('build [entryPaths...]')
log.ok(clsx(`Built **${chunks.length}** chunks`, config.build.declare && `and types`, `in ${prettyHartime(buildTime).replace(' ', '')}`))
}
const buildStartTime = process.hrtime()
const buildingInputs = []
const output = async (rollupBuild: RollupBuild, eachOutputOptionsList: BuildOutputOptions[], outputResults: OutputResults) => {
await Promise.all(
eachOutputOptionsList.map(async (eachOutputOptions) => {
const result = await rollupBuild.write(eachOutputOptions.output)
result.output
.forEach((chunkOrAsset) => {
outputResults.push({
...eachOutputOptions,
artifact: chunkOrAsset
})
})
})
)
}
await Promise.all(
[
...Array.from(buildMap.entries())
.map(async ([input, eachBuildOptions]) => {
buildingInputs.push(input)
const output = async (rollupBuild: RollupBuild, outputResults: OutputResults) => {
await Promise.all(
eachBuildOptions.outputOptionsList.map(async (eachOutputOptions) => {
const result = await rollupBuild.generate(eachOutputOptions.output)
result.output = result.output
.filter((chunkOrAsset) => {
outputResults.push({
...eachOutputOptions,
artifact: chunkOrAsset
})
return true
}) as RollupOutput['output']
if (result.output.length) {
await rollupBuild.write(eachOutputOptions.output)
}
})
)
}
if (config.build.watch) {
const watcher = rollupWatch({
...eachBuildOptions.rollupInput,
...eachBuildOptions.input,
watch: {
skipWrite: true
}
Expand All @@ -322,7 +316,7 @@ export default (program: Command) => program.command('build [entryPaths...]')
}
if (event.code === 'BUNDLE_END') {
const eachOutputResults = []
await output(event.result, eachOutputResults)
await output(event.result, eachBuildOptions.outputOptionsList, eachOutputResults)
printOutputResults(eachOutputResults, buildStartTime)
if (config.build.declare) console.log('')
}
Expand All @@ -335,8 +329,8 @@ export default (program: Command) => program.command('build [entryPaths...]')
log`[${event.toUpperCase()}] ${relative(process.cwd(), id)}`
})
} else {
const rollupBuild = await rollup(eachBuildOptions.rollupInput)
await output(rollupBuild, outputResults)
const rollupBuild = await rollup(eachBuildOptions.input)
await output(rollupBuild, eachBuildOptions.outputOptionsList, outputResults)
if (rollupBuild) {
// closes the rollupBuild
await rollupBuild.close()
Expand Down
24 changes: 24 additions & 0 deletions packages/techor/tests/bin/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "@test/bin",
"version": "1.0.0",
"private": true,
"bin": "./dist/bin/index.mjs",
"main": "./dist/index.cjs",
"jsnext:main": "./dist/index.mjs",
"esnext": "./dist/index.mjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"require": "./dist/index.cjs",
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist"
],
"dependencies": {
"ora": "^8.0.1"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#!/usr/bin/env node

import ora from 'ora'

const spinner = ora(`Initializing Master CSS`).start()

console.log(spinner)
1 change: 1 addition & 0 deletions packages/techor/tests/bin/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const main = 'main'
15 changes: 15 additions & 0 deletions packages/techor/tests/bin/test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { execSync } from 'node:child_process'
import { expectFileIncludes } from '../../../../utils/expect-file-includes'

beforeAll(() => {
execSync('tsx ../../src/bin build', { cwd: __dirname })
})

test('bin', () => {
expectFileIncludes('dist/bin/index.mjs', [`#!/usr/bin/env node`], { cwd: __dirname })
})

test('main', () => {
expectFileIncludes('dist/index.mjs', [`export { main };`], { cwd: __dirname })
expectFileIncludes('dist/index.cjs', [`exports.main = main;`], { cwd: __dirname })
})
File renamed without changes.
12 changes: 0 additions & 12 deletions packages/techor/tests/esm-bin/package.json

This file was deleted.

7 changes: 0 additions & 7 deletions packages/techor/tests/esm-bin/test.ts

This file was deleted.

12 changes: 6 additions & 6 deletions packages/techor/tests/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions packages/techor/tests/svelte/.gitignore

This file was deleted.

Empty file.
30 changes: 0 additions & 30 deletions packages/techor/tests/svelte/package.json

This file was deleted.

31 changes: 0 additions & 31 deletions packages/techor/tests/svelte/src/LazyCSSProvider.svelte

This file was deleted.

2 changes: 0 additions & 2 deletions packages/techor/tests/svelte/src/index.ts

This file was deleted.

9 changes: 0 additions & 9 deletions packages/techor/tests/svelte/src/lazy-css.ts

This file was deleted.

9 changes: 0 additions & 9 deletions packages/techor/tests/svelte/techor.ts

This file was deleted.

22 changes: 0 additions & 22 deletions packages/techor/tests/svelte/tsconfig.json

This file was deleted.

0 comments on commit e19746b

Please sign in to comment.