Skip to content

Commit

Permalink
feat: impl external flag (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
shulandmimi committed Jun 5, 2024
1 parent 90374dc commit 1792544
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .changeset/many-yaks-work.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'farmup': patch
---

impl external flag
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.ts
1 change: 1 addition & 0 deletions playground/index.html
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
<!DOCTYPE html>
<h1>hello farmup</h1>
<script src="./index.ts"></script>
4 changes: 2 additions & 2 deletions pnpm-lock.yaml

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

14 changes: 9 additions & 5 deletions src/config/normalize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export function normalizedTargetEnv(
config: UserConfig,
commonOptions: CommonOptions,
options: ResolvedCommonOptions,
logger: Logger
logger: Logger,
) {
config.compilation?.output?.targetEnv;
if (commonOptions.target) {
Expand Down Expand Up @@ -164,7 +164,7 @@ async function normalizedSimpleConfig(
config: UserConfig,
commonOptions: CommonOptions,
options: ResolvedCommonOptions,
logger: Logger
logger: Logger,
) {
const inputs = await tryFindEntryFromUserConfig(logger, config, commonOptions);

Expand All @@ -189,6 +189,7 @@ async function normalizedSimpleConfig(
? { target: commonOptions.target || config.compilation?.output?.targetEnv }
: {}),
...(commonOptions.autoExternal ? { autoExternal: !!commonOptions.autoExternal } : {}),
external: commonOptions.external,
outputDir: commonOptions.outputDir ?? config.compilation.output?.path ?? './dist',
noExecute: commonOptions.noExecute ?? false,
noWatch: commonOptions.noWatch ?? true,
Expand Down Expand Up @@ -239,7 +240,10 @@ export class NormalizeOption {
sourcemap: undefined,
};

constructor(private commonOption: CommonOptions, private logger: Logger) { }
constructor(
private commonOption: CommonOptions,
private logger: Logger,
) {}

async config(config: UserConfig): Promise<UserConfig> {
await normalizedSimpleConfig(config, this.commonOption, this.options, this.logger);
Expand All @@ -253,10 +257,10 @@ export class NormalizeOption {
...(this.options.outputEntry ? { entryFilename: this.options.outputEntry.name } : {}),
path: this.options.outputDir,
},
...pick(this.options, 'minify', 'sourcemap'),
...pick(this.options, 'minify', 'sourcemap', 'external'),
},
},
this.options
this.options,
);
}

Expand Down
7 changes: 4 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ cli.option('-w, --watch [...files]', 'watch files', { default: false })
.option('--sourcemap [sourcemap]', 'generate sourcemap or not')
.option(
'--target [target]',
"target for output, default is node, support 'browser'、'node'、'node16'、'node-legacy'、'node-next'、'browser-legacy'、'browser-es2015'、'browser-es2017'、'browser-esnext'"
"target for output, default is node, support 'browser'、'node'、'node16'、'node-legacy'、'node-next'、'browser-legacy'、'browser-es2015'、'browser-es2017'、'browser-esnext'",
);

// biome-ignore lint/suspicious/noExplicitAny: <explanation>
Expand All @@ -102,8 +102,8 @@ async function commonOptionsFromArgs(args: Record<string, any>): Promise<Partial
? args.config
: path.resolve(root, args.config)
: args.config
? await getConfigFilePath(root)
: undefined;
? await getConfigFilePath(root)
: undefined;
const execute = isString(args.exec) && !isBoolean(args.exec) ? args.exec : undefined;

return {
Expand All @@ -118,6 +118,7 @@ async function commonOptionsFromArgs(args: Record<string, any>): Promise<Partial
minify: args.minify,
noWatch: args.watch === false,
noExecute: args.exec === false,
external: Array.isArray(args.external) ? args.external : [args.external].filter(Boolean),
watchFiles: [args.watch]
.flat()
.map((item) => (item === true ? undefined : item))
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/auto-execute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default function autoExecute(options: CommonOptions = {}, logger = defaul

const resourceOutputEntryFormatter = normalizeOption.options.outputEntry;
const resourceOutputEntry = proxyCompiler.resource_names.find((item) =>
resourceOutputEntryFormatter.matchEntryName(item, normalizeOption.options.entry)
resourceOutputEntryFormatter.matchEntryName(item, normalizeOption.options.entry),
);

if (!resourceOutputEntry) {
Expand All @@ -55,7 +55,7 @@ export default function autoExecute(options: CommonOptions = {}, logger = defaul
nameWithoutExt,
new Logger({
name: `${name}:${nameWithoutExt}`,
})
}),
);
});

Expand Down
5 changes: 3 additions & 2 deletions src/types/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type Get<T extends Record<keyof any, any>, K extends keyof any> = K extends `${i
: never;

export type Format = Get<UserConfig, 'compilation.output.format'>;
export type SourceMap = Get<UserConfig, 'compilation.sourcemap'>;

export interface CommonOptions {
/** entry, if not found, it will be find from default file or directory */
Expand Down Expand Up @@ -67,7 +68,7 @@ export interface CommonOptions {
* generate sourcemap
* @params boolean | 'inline' | 'all' | 'all-inline'
*/
sourcemap?: boolean | 'inline' | 'all' | 'all-inline'
sourcemap?: SourceMap;
}

export interface ResolvedCommonOptions {
Expand Down Expand Up @@ -101,7 +102,7 @@ export interface ResolvedCommonOptions {
* generate sourcemap
* @params boolean | 'inline' | 'all' | 'all-inline'
*/
sourcemap?: boolean | 'inline' | 'all' | 'all-inline'
sourcemap?: SourceMap;
}

export enum ExecuteMode {
Expand Down

0 comments on commit 1792544

Please sign in to comment.