Skip to content

Commit

Permalink
fix: adjusted target on swc and esbuild
Browse files Browse the repository at this point in the history
  • Loading branch information
prisis committed May 25, 2024
1 parent dbfbfc5 commit 5ee4937
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 58 deletions.
14 changes: 1 addition & 13 deletions packages/packem/src/create-bundler.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { readdir, stat } from "node:fs/promises";
import Module from "node:module";
import { cwd, env, exit, versions } from "node:process";
import { cwd, env, exit } from "node:process";

import { bold, cyan, gray, green } from "@visulima/colorize";
import { emptyDir, ensureDirSync, isAccessible, isAccessibleSync, walk } from "@visulima/fs";
Expand All @@ -14,7 +14,6 @@ import { CallerProcessor, ErrorProcessor, MessageFormatterProcessor } from "@vis
import { basename, dirname, isAbsolute, join, normalize, relative, resolve } from "@visulima/path";
import { defu } from "defu";
import { createHooks } from "hookable";
import { minVersion } from "semver";

import { DEFAULT_EXTENSIONS, EXCLUDE_REGEXP } from "./constants";
import createStub from "./jit/create-stub";
Expand Down Expand Up @@ -78,16 +77,6 @@ const build = async (
): Promise<void> => {
const preset = resolvePreset(buildConfig.preset ?? package_.packem?.preset ?? inputConfig.preset ?? "auto", rootDirectory);

let nodeTarget = `node${versions.node.split(".")[0]}`;

if (package_.engines?.node) {
const minNodeVersion = minVersion(package_.engines.node);

if (minNodeVersion) {
nodeTarget = `node${minNodeVersion.major}`;
}
}

const jsxRuntime = resolveTsconfigJsxToJsxRuntime(tsconfig?.config.compilerOptions?.jsx);

const options = defu(buildConfig, package_.packem, inputConfig, preset, <BuildOptions>{
Expand Down Expand Up @@ -323,7 +312,6 @@ const build = async (
interopDefault: true,
},
},
target: nodeTarget,
transformerName: undefined,
}) as InternalBuildOptions;

Expand Down
38 changes: 19 additions & 19 deletions packages/packem/src/rollup/get-rollup-options.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { versions } from "node:process";

import aliasPlugin from "@rollup/plugin-alias";
import commonjsPlugin from "@rollup/plugin-commonjs";
import dynamicImportVarsPlugin from "@rollup/plugin-dynamic-import-vars";
Expand All @@ -10,6 +12,7 @@ import type { OutputOptions, Plugin, PreRenderedAsset, PreRenderedChunk, RollupL
import { dts as dtsPlugin } from "rollup-plugin-dts";
import polifillPlugin from "rollup-plugin-polyfill-node";
import { visualizer as visualizerPlugin } from "rollup-plugin-visualizer";
import { minVersion } from "semver";

import { DEFAULT_EXTENSIONS } from "../constants";
import type { BuildContext, InternalBuildOptions } from "../types";
Expand Down Expand Up @@ -75,15 +78,27 @@ const getTransformerConfig = (
throw new Error(message);
}

// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
let nodeTarget = 'node' + (versions.node.split(".")[0]);

if (context.pkg.engines?.node) {
const minNodeVersion = minVersion(context.pkg.engines.node);

if (minNodeVersion) {
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
nodeTarget = 'node' + minNodeVersion.major;
}
}

// Add node target to esbuild target
if (context.options.rollup.esbuild.target) {
const targets = arrayify(context.options.rollup.esbuild.target);

if (!targets.some((t) => t.startsWith("node"))) {
context.options.rollup.esbuild.target = [...new Set([...arrayify(context.options.target), ...targets])];
context.options.rollup.esbuild.target = [...new Set([...arrayify(nodeTarget), ...targets])];
}
} else {
context.options.rollup.esbuild.target = arrayify(context.options.target);
context.options.rollup.esbuild.target = arrayify(nodeTarget);
}

if (context.tsconfig?.config.compilerOptions?.target === "es5") {
Expand All @@ -105,21 +120,6 @@ const getTransformerConfig = (
throw new Error("No swc options found in your configuration.");
}

if (typeof context.options.rollup.swc.env !== "object") {
context.options.rollup.swc.env = {};
}

// Add node target to esbuild target
if (context.options.rollup.swc.env.targets) {
const targets = arrayify(context.options.rollup.swc.env.targets);

if (!targets.some((t) => t.startsWith("node"))) {
context.options.rollup.swc.env.targets = [...new Set([...arrayify(context.options.target), ...targets])];
}
} else {
context.options.rollup.swc.env.targets = arrayify(context.options.target);
}

return {
minify: context.options.minify,
...context.options.rollup.swc,
Expand Down Expand Up @@ -272,7 +272,7 @@ export const getRollupOptions = async (context: BuildContext): Promise<RollupOpt
format: "cjs",
freeze: false,
generatedCode: { constBindings: true },
// By default in rollup, when creating multiple chunks, transitive imports of entry chunks
// By default, in rollup, when creating multiple chunks, transitive imports of entry chunks
// will be added as empty imports to the entry chunks. Disable to avoid imports hoist outside of boundaries
hoistTransitiveImports: false,
interop: "compat",
Expand All @@ -295,7 +295,7 @@ export const getRollupOptions = async (context: BuildContext): Promise<RollupOpt
format: "esm",
freeze: false,
generatedCode: { constBindings: true },
// By default in rollup, when creating multiple chunks, transitive imports of entry chunks
// By default, in rollup, when creating multiple chunks, transitive imports of entry chunks
// will be added as empty imports to the entry chunks. Disable to avoid imports hoist outside of boundaries
hoistTransitiveImports: false,
sourcemap: context.options.sourcemap,
Expand Down
26 changes: 0 additions & 26 deletions packages/packem/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,31 +89,6 @@ export type BuildEntry = {
outDir?: string;
};

type Target =
| "chrome"
| "deno"
| "edge"
| "firefox"
| "hermes"
| "ie"
| "ios"
| "node"
| "opera"
| "rhino"
| "safari"
| "esnext"
| "es5"
| "es6"
| "es2015"
| "es2016"
| "es2017"
| "es2018"
| "es2019"
| "es2020"
| "es2021"
| "es2022"
| "es2023";

export interface BuildOptions {
alias: Record<string, string>;
cjsInterop?: boolean;
Expand Down Expand Up @@ -145,7 +120,6 @@ export interface BuildOptions {
sourcemap: boolean;
stub: boolean;
stubOptions: { jiti: Omit<JITIOptions, "onError" | "transform"> };
target: Target | Target[];
transformer?: (config: SwcPluginConfig | SucrasePluginConfig | EsbuildPluginConfig) => Plugin;
}

Expand Down

0 comments on commit 5ee4937

Please sign in to comment.