feat: support more cli options for build command#1258
Merged
Timeless0911 merged 6 commits intomainfrom Oct 17, 2025
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR adds comprehensive CLI option support for the rslib build command, allowing users to override config file settings through command line parameters. The feature supports commonly used build options like format, entry points, output directory, bundling mode, and other build configurations.
Key changes:
- Added extensive CLI option parsing for build command parameters
- Implemented option overriding functionality that applies CLI values over config file settings
- Updated documentation to reflect new CLI capabilities
Reviewed Changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/core/src/cli/initConfig.ts | New module implementing CLI option parsing and config merging logic |
| packages/core/src/cli/commands.ts | Added CLI option definitions and updated command handlers to use new config system |
| packages/core/src/cli/init.ts | Removed original init function (replaced by initConfig) |
| tests/integration/cli/build/build.test.ts | Added comprehensive tests for CLI option functionality |
| tests/scripts/shared.ts | Enhanced test utilities with config extraction and better error handling |
| website/docs/*/guide/basic/cli.mdx | Updated documentation with new CLI options for both English and Chinese |
| packages/core/tests/config.test.ts | Added unit tests for CLI option application |
| packages/core/tests/cli.test.ts | Added unit tests for option parsing functions |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
✅ Deploy Preview for rslib ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
b4e70c7 to
2deb738
Compare
72d4d03 to
9c9b4b0
Compare
1b31856 to
6e60e06
Compare
48648b9 to
f342082
Compare
Contributor
|
https://rslib.rs/guide/basic/cli#rslib-build I think we should also update cli options here. |
11 11 1 doc thank u win32. doc
a151025 to
25faba7
Compare
15a37c3 to
78ac3c2
Compare
Timeless0911
approved these changes
Oct 17, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Support more CLI options for build command, which have a higher priority than the fields in the config file.
Note that not all configuratios will be exposed via the CLI, as some can be structurally complex.
In the next phase, we plan to remove the requirement for a configuration file entirely, allowing builds to be performed purely through CLI parameters. For example:
rslib build --format=cjs --dist-path=dist/cjs.Options table
Click to expand
Top-level
RslibConfigmoderoot-r, --root <root>logLevel--log-level <level>devserversourceoutputsecurityperformancemoduleFederationpluginsenvironmentsprovider_privateMetalib--lib <id>(repeatable filter)Shared environment options (top-level &
lib[])Source
source/lib[].sourcesource.alias/lib[].source.aliassource.aliasStrategy/lib[].source.aliasStrategysource.assetsInclude/lib[].source.assetsIncludesource.include/lib[].source.includesource.entry/lib[].source.entry--entry <name=path>(per lib, repeatable)source.exclude/lib[].source.excludesource.preEntry/lib[].source.preEntrysource.define/lib[].source.definesource.decorators/lib[].source.decoratorssource.decorators.version/lib[].source.decorators.versionsource.transformImport/lib[].source.transformImportsource.tsconfigPath/lib[].source.tsconfigPath--tsconfig <path>(per lib)Dev
dev/lib[].devdev.browserLogs/lib[].dev.browserLogsdev.hmr/lib[].dev.hmrdev.liveReload/lib[].dev.liveReloaddev.assetPrefix/lib[].dev.assetPrefixdev.progressBar/lib[].dev.progressBardev.client/lib[].dev.clientdev.client.path/lib[].dev.client.pathdev.client.port/lib[].dev.client.portdev.client.host/lib[].dev.client.hostdev.client.protocol/lib[].dev.client.protocoldev.client.reconnect/lib[].dev.client.reconnectdev.client.overlay/lib[].dev.client.overlaydev.cliShortcuts/lib[].dev.cliShortcutsdev.cliShortcuts.custom/lib[].dev.cliShortcuts.customdev.cliShortcuts.help/lib[].dev.cliShortcuts.helpdev.setupMiddlewares/lib[].dev.setupMiddlewaresdev.writeToDisk/lib[].dev.writeToDiskdev.watchFiles/lib[].dev.watchFilesdev.lazyCompilation/lib[].dev.lazyCompilationServer
server/lib[].serverserver.base/lib[].server.baseserver.compress/lib[].server.compressserver.publicDir/lib[].server.publicDirserver.port/lib[].server.portserver.https/lib[].server.httpsserver.host/lib[].server.hostserver.headers/lib[].server.headersserver.htmlFallback/lib[].server.htmlFallbackserver.historyApiFallback/lib[].server.historyApiFallbackserver.open/lib[].server.openserver.cors/lib[].server.corsserver.proxy/lib[].server.proxyserver.strictPort/lib[].server.strictPortserver.printUrls/lib[].server.printUrlsserver.middlewareMode/lib[].server.middlewareModeResolve
resolve/lib[].resolveresolve.dedupe/lib[].resolve.deduperesolve.alias/lib[].resolve.aliasresolve.aliasStrategy/lib[].resolve.aliasStrategyresolve.extensions/lib[].resolve.extensionsresolve.conditionNames/lib[].resolve.conditionNamesresolve.mainFields/lib[].resolve.mainFieldsOutput
output/lib[].outputoutput.target/lib[].output.target--target <target>output.externals/lib[].output.externals--externals <pkg>(repeatable)output.distPath/lib[].output.distPathoutput.distPath.root/lib[].output.distPath.root--dist-path <dir>output.distPath.js/lib[].output.distPath.jsoutput.distPath.jsAsync/lib[].output.distPath.jsAsyncoutput.distPath.css/lib[].output.distPath.cssoutput.distPath.cssAsync/lib[].output.distPath.cssAsyncoutput.distPath.svg/lib[].output.distPath.svgoutput.distPath.font/lib[].output.distPath.fontoutput.distPath.html/lib[].output.distPath.htmloutput.distPath.wasm/lib[].output.distPath.wasmoutput.distPath.image/lib[].output.distPath.imageoutput.distPath.media/lib[].output.distPath.mediaoutput.distPath.assets/lib[].output.distPath.assetsoutput.distPath.favicon/lib[].output.distPath.faviconoutput.filename/lib[].output.filenameoutput.filename.html/lib[].output.filename.htmloutput.filename.js/lib[].output.filename.jsoutput.filename.css/lib[].output.filename.cssoutput.filename.svg/lib[].output.filename.svgoutput.filename.font/lib[].output.filename.fontoutput.filename.image/lib[].output.filename.imageoutput.filename.media/lib[].output.filename.mediaoutput.filename.wasm/lib[].output.filename.wasmoutput.filename.assets/lib[].output.filename.assetsoutput.charset/lib[].output.charsetoutput.polyfill/lib[].output.polyfilloutput.assetPrefix/lib[].output.assetPrefixoutput.dataUriLimit/lib[].output.dataUriLimitoutput.dataUriLimit.svg/lib[].output.dataUriLimit.svgoutput.dataUriLimit.font/lib[].output.dataUriLimit.fontoutput.dataUriLimit.image/lib[].output.dataUriLimit.imageoutput.dataUriLimit.media/lib[].output.dataUriLimit.mediaoutput.dataUriLimit.assets/lib[].output.dataUriLimit.assetsoutput.legalComments/lib[].output.legalCommentsoutput.cleanDistPath/lib[].output.cleanDistPath--clean/--no-cleanoutput.cssModules/lib[].output.cssModulesoutput.cssModules.auto/lib[].output.cssModules.autooutput.cssModules.exportGlobals/lib[].output.cssModules.exportGlobalsoutput.cssModules.exportLocalsConvention/lib[].output.cssModules.exportLocalsConventionoutput.cssModules.namedExport/lib[].output.cssModules.namedExportoutput.cssModules.localIdentName/lib[].output.cssModules.localIdentNameoutput.cssModules.mode/lib[].output.cssModules.modeoutput.minify/lib[].output.minify--minify/--no-minifyoutput.manifest/lib[].output.manifestoutput.module/lib[].output.moduleoutput.sourceMap/lib[].output.sourceMapoutput.sourceMap.js/lib[].output.sourceMap.jsoutput.sourceMap.css/lib[].output.sourceMap.cssoutput.filenameHash/lib[].output.filenameHashoutput.inlineScripts/lib[].output.inlineScriptsoutput.inlineStyles/lib[].output.inlineStylesoutput.injectStyles/lib[].output.injectStylesoutput.overrideBrowserslist/lib[].output.overrideBrowserslistoutput.copy/lib[].output.copyoutput.emitAssets/lib[].output.emitAssetsoutput.emitCss/lib[].output.emitCssHTML
html/lib[].htmlhtml.meta/lib[].html.metahtml.title/lib[].html.titlehtml.inject/lib[].html.injecthtml.tags/lib[].html.tagshtml.favicon/lib[].html.faviconhtml.appIcon/lib[].html.appIconhtml.appIcon.name/lib[].html.appIcon.namehtml.appIcon.icons/lib[].html.appIcon.iconshtml.mountId/lib[].html.mountIdhtml.crossorigin/lib[].html.crossoriginhtml.outputStructure/lib[].html.outputStructurehtml.template/lib[].html.templatehtml.templateParameters/lib[].html.templateParametershtml.scriptLoading/lib[].html.scriptLoadingTools
tools/lib[].toolstools.bundlerChain/lib[].tools.bundlerChaintools.cssLoader/lib[].tools.cssLoadertools.postcss/lib[].tools.postcsstools.styleLoader/lib[].tools.styleLoadertools.htmlPlugin/lib[].tools.htmlPlugintools.swc/lib[].tools.swctools.lightningcssLoader/lib[].tools.lightningcssLoadertools.cssExtract/lib[].tools.cssExtracttools.rspack/lib[].tools.rspacktools.webpack/lib[].tools.webpacktools.webpackChain/lib[].tools.webpackChainSecurity
security/lib[].securitysecurity.nonce/lib[].security.noncesecurity.sri/lib[].security.srisecurity.sri.algorithm/lib[].security.sri.algorithmsecurity.sri.enable/lib[].security.sri.enablePerformance
performance/lib[].performanceperformance.removeConsole/lib[].performance.removeConsoleperformance.removeMomentLocale/lib[].performance.removeMomentLocaleperformance.buildCache/lib[].performance.buildCacheperformance.printFileSize/lib[].performance.printFileSizeperformance.chunkSplit/lib[].performance.chunkSplitperformance.bundleAnalyze/lib[].performance.bundleAnalyzeperformance.preconnect/lib[].performance.preconnectperformance.dnsPrefetch/lib[].performance.dnsPrefetchperformance.preload/lib[].performance.preloadperformance.prefetch/lib[].performance.prefetchperformance.profile/lib[].performance.profileModule Federation & Plugins
moduleFederation/lib[].moduleFederationmoduleFederation.options/lib[].moduleFederation.optionsplugins/lib[].pluginslib[]options unique to Rsliblib[].idlib[].format--format <format>lib[].bundle--bundle/--no-bundlelib[].autoExtension--auto-extension/--no-auto-extensionlib[].autoExternal--auto-external/--no-auto-externallib[].autoExternal.dependencieslib[].autoExternal.optionalDependencieslib[].autoExternal.peerDependencieslib[].autoExternal.devDependencieslib[].redirectlib[].redirect.jslib[].redirect.js.pathlib[].redirect.js.extensionlib[].redirect.stylelib[].redirect.style.pathlib[].redirect.style.extensionlib[].redirect.assetlib[].redirect.asset.pathlib[].redirect.asset.extensionlib[].redirect.dtslib[].redirect.dts.pathlib[].redirect.dts.extensionlib[].syntax--syntax <value|json>lib[].externalHelperslib[].bannerlib[].banner.jslib[].banner.csslib[].banner.dtslib[].footerlib[].footer.jslib[].footer.csslib[].footer.dtslib[].shimslib[].shims.cjslib[].shims.cjs['import.meta.url']lib[].shims.esmlib[].shims.esm.__filenamelib[].shims.esm.__dirnamelib[].shims.esm.requirelib[].dts--dts/--no-dtslib[].dts.bundlelib[].dts.bundle.bundledPackageslib[].dts.distPathlib[].dts.buildlib[].dts.abortOnErrorlib[].dts.autoExtensionlib[].dts.aliaslib[].dts.tsgolib[].umdNamelib[].outBaseRelated Links
close: #454
Checklist