Skip to content

Commit

Permalink
feat: reduce tarball mem useage
Browse files Browse the repository at this point in the history
  • Loading branch information
nonzzz committed Aug 26, 2024
1 parent a6ae417 commit f7421ea
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 21 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"eslint.useFlatConfig": true,
"editor.defaultFormatter": "dprint.dprint",
"dprint.path": "./node_modules/dprint/dprint",
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
},
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
},
"dependencies": {
"@rollup/pluginutils": "^5.1.0",
"tar-mini": "^0.1.0"
"tar-mini": "^0.1.1"
},
"resolutions": {
"is-core-module": "npm:@nolyfill/is-core-module@^1",
Expand Down
12 changes: 6 additions & 6 deletions src/compress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ export function createTarBall() {
root: ''
}

const setOptions = (tarballOPtions: TarballOptions) => Object.assign(options, tarballOPtions)

const add = (meta: TarballFileMeta) => {
pack.add(stringToBytes(meta.content), { filename: meta.filename })
}

const write = () => {
const setup = async (tarballOPtions: TarballOptions) => {
Object.assign(options, tarballOPtions)

const promises = options.dests.map(dest => {
const expected = slash(path.resolve(options.root, dest + '.tar'))
const parent = slash(path.dirname(expected))
Expand All @@ -80,19 +80,19 @@ export function createTarBall() {
}
return new Promise<void>((resolve, reject) => {
const w = fs.createWriteStream(expected)

w.on('error', reject)
w.on('finish', resolve)
pack.receiver.pipe(w)
})
})

return Promise.all(promises)
}

const context = {
add,
write,
setOptions
setup,
done: () => pack.done()
}

return context
Expand Down
32 changes: 23 additions & 9 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ function tarball(opts: ViteTarballPluginOptions = {}): Plugin {
outputs.push(...handleOutputOption(config))
root = config.root
dests = userDest ? [userDest] : outputs
tarball.setOptions({ dests, root })
// No need to add source to pack in configResolved stage
// If we do at the start stage. The build task will be slow.
ctx = compression.getPluginAPI(config.plugins)
Expand All @@ -114,6 +113,9 @@ function tarball(opts: ViteTarballPluginOptions = {}): Plugin {
}
const plugin = config.plugins.find(p => p.name === VITE_INTERNAL_ANALYSIS_PLUGIN)
if (!plugin) throw new Error("[vite-plugin-tarball] can't be work in versions lower than vite at 2.0.0")

// create dest dir
tarball.setup({ dests, root })
},
async writeBundle(_, bundles) {
for (const fileName in bundles) {
Expand All @@ -135,18 +137,22 @@ function tarball(opts: ViteTarballPluginOptions = {}): Plugin {
}
}
await queue.wait()
await tarball.write()
tarball.done()
}
}
}

function compression(): Plugin
function compression<T extends UserCompressionOptions | undefined, A extends Algorithm | AlgorithmFunction<T> | AlgorithmFunction<undefined>>(
opts: A extends Algorithm
? Pretty<ViteCompressionPluginConfigAlgorithm<A>>
function compression<
T extends UserCompressionOptions | undefined,
A extends Algorithm | AlgorithmFunction<T> | AlgorithmFunction<undefined>
>(
opts: A extends Algorithm ? Pretty<ViteCompressionPluginConfigAlgorithm<A>>
: ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>
): Plugin
function compression<T extends UserCompressionOptions>(opts: ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>): Plugin
function compression<T extends UserCompressionOptions>(
opts: ViteCompressionPluginConfigFunction<T, AlgorithmFunction<T>>
): Plugin
function compression(opts: ViteWithoutCompressionPluginConfigFunction): Plugin
function compression<T extends UserCompressionOptions, A extends Algorithm>(
opts: ViteCompressionPluginConfig<T, A> = {}
Expand Down Expand Up @@ -207,7 +213,7 @@ function compression<T extends UserCompressionOptions, A extends Algorithm>(

let viteAnalyzerPlugin = null

const plugin = <Plugin>{
const plugin = <Plugin> {
name: VITE_COMPRESSION_PLUGIN,
apply: 'build',
enforce: 'post',
Expand Down Expand Up @@ -242,7 +248,9 @@ function compression<T extends UserCompressionOptions, A extends Algorithm>(
statics.push(file)
})
viteAnalyzerPlugin = config.plugins.find(p => p.name === VITE_INTERNAL_ANALYSIS_PLUGIN)
if (!viteAnalyzerPlugin) throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0")
if (!viteAnalyzerPlugin) {
throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0")
}
},
async closeBundle() {
// parallel run
Expand Down Expand Up @@ -292,4 +300,10 @@ export { compression, defineCompressionOption, tarball }

export default compression

export type { Algorithm, CompressionOptions, ViteCompressionPluginConfig, ViteTarballPluginOptions, ViteCompressionPluginOption } from './interface'
export type {
Algorithm,
CompressionOptions,
ViteCompressionPluginConfig,
ViteCompressionPluginOption,
ViteTarballPluginOptions
} from './interface'
10 changes: 5 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5397,10 +5397,10 @@ __metadata:
languageName: node
linkType: hard

"tar-mini@npm:^0.1.0":
version: 0.1.0
resolution: "tar-mini@npm:0.1.0"
checksum: 10/03957e8f573d303e93a5110bb3cd6e0abaccde7880f2690c2bb6f3e3341ef6887a8e1716e433a189ed8c455ee6d41fa133957a5cbba0c15dbeea14312789b654
"tar-mini@npm:^0.1.1":
version: 0.1.1
resolution: "tar-mini@npm:0.1.1"
checksum: 10/62f69990e6f6c0015653ec62ea271f5ed64e6ae6183ad17d5cfefc53ec5372a492c2c2096a9eac7af14c327ebe74cefd20e6a8a1bcdbbd30dd612273e33239d4
languageName: node
linkType: hard

Expand Down Expand Up @@ -5721,7 +5721,7 @@ __metadata:
rollup-plugin-dts: "npm:^6.1.1"
rollup-plugin-swc3: "npm:^0.11.2"
sirv: "npm:^2.0.3"
tar-mini: "npm:^0.1.0"
tar-mini: "npm:^0.1.1"
typescript: "npm:^5.3.3"
vite: "npm:^5.3.4"
vitest: "npm:^2.0.3"
Expand Down

0 comments on commit f7421ea

Please sign in to comment.