-
-
Notifications
You must be signed in to change notification settings - Fork 53
feat: support more cli options for build command #1258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
|
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
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