Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
"cross-env": "^10.1.0",
"husky": "^9.1.7",
"is-ci": "4.1.0",
"@rstest/core": "^0.7.8",
"@rstest/core": "^0.7.9",
"lint-staged": "^16.2.7",
"prettier": "3.7.4",
"prettier-2": "npm:prettier@2.8.8",
Expand Down
1 change: 0 additions & 1 deletion packages/create-rspack/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"extends": "../../tsconfig.base.json",
"include": ["src"],
"compilerOptions": {
"module": "NodeNext",
"outDir": "dist",
"rootDir": "src"
}
Expand Down
4 changes: 2 additions & 2 deletions packages/rspack-cli/bin/rspack.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/env node
const nodeModule = require('node:module');
import nodeModule from 'node:module';

// enable on-disk code caching of all modules loaded by Node.js
// requires Nodejs >= 22.8.0
Expand All @@ -15,7 +15,7 @@ if (enableCompileCache) {
// make it easier to identify the process via activity monitor or other tools
process.title = 'rspack-node';

const { RspackCLI } = require('../dist/index');
import { RspackCLI } from '../dist/index.js';

async function runCLI() {
const cli = new RspackCLI();
Expand Down
5 changes: 2 additions & 3 deletions packages/rspack-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,14 @@
"directory": "packages/rspack-cli"
},
"license": "MIT",
"type": "module",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.js"
"default": "./dist/index.js"
},
"./package.json": "./package.json"
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"bin": {
"rspack": "./bin/rspack.js"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,18 @@
import { createRequire } from 'node:module';
import { defineConfig } from '@rslib/core';

const require = createRequire(import.meta.url);
import packageJson from './package.json' with { type: 'json' };

export default defineConfig({
lib: [
{
format: 'cjs',
syntax: ['es2023'],
dts: true,
},
{
format: 'esm',
syntax: ['es2023'],
dts: true,
},
],
source: {
tsconfigPath: './tsconfig.build.json',
define: {
RSPACK_CLI_VERSION: JSON.stringify(require('./package.json').version),
RSPACK_CLI_VERSION: JSON.stringify(packageJson.version),
},
},
});
4 changes: 2 additions & 2 deletions packages/rspack-cli/rstest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ export default defineConfig({
testEnvironment: 'node',
globals: true,
testTimeout: process.env.CI ? 200000 : 30000,
include: ['tests/**/*.test.ts', 'tests/**/*.test.js'],
include: ['tests/**/*.test.{ts,js,cts}'],
source: {
tsconfigPath: 'tests/tsconfig.json',
},
output: {
externals: [/@rspack\/core/],
externals: [/@rspack\/core/, /api-wrapper/],
},
env: {
RUST_BACKTRACE: 'full',
Expand Down
2 changes: 1 addition & 1 deletion packages/rspack-cli/src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import type {
RspackPluginInstance,
Stats,
} from '@rspack/core';
import { rspack } from '@rspack/core';
import cac, { type CAC } from 'cac';
import { createColors, isColorSupported } from 'picocolors';
import { BuildCommand } from './commands/build';
Expand All @@ -21,7 +22,6 @@ import type {
CommonOptions,
CommonOptionsForBuildAndServe,
} from './utils/options';
import { rspack } from './utils/rspackCore';

type Command = 'serve' | 'build';

Expand Down
2 changes: 1 addition & 1 deletion packages/rspack-cli/src/commands/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import type {
MultiRspackOptions,
RspackOptions,
} from '@rspack/core';
import { rspack } from '@rspack/core';
import type { RspackCLI } from '../cli';
import type { RspackCommand } from '../types';
import {
Expand All @@ -12,7 +13,6 @@ import {
normalizeCommonOptions,
setDefaultNodeEnv,
} from '../utils/options';
import { rspack } from '../utils/rspackCore';

type PreviewOptions = CommonOptions & {
port?: string;
Expand Down
2 changes: 1 addition & 1 deletion packages/rspack-cli/src/commands/serve.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { Compiler, MultiRspackOptions } from '@rspack/core';
import { rspack } from '@rspack/core';
import type { RspackDevServer as RspackDevServerType } from '@rspack/dev-server';
import type { RspackCLI } from '../cli';
import { DEFAULT_SERVER_HOT } from '../constants';
Expand All @@ -10,7 +11,6 @@ import {
normalizeCommonOptions,
setDefaultNodeEnv,
} from '../utils/options';
import { rspack } from '../utils/rspackCore';

type ServerOptions = CommonOptionsForBuildAndServe & {
hot?: boolean | 'only';
Expand Down
3 changes: 3 additions & 0 deletions packages/rspack-cli/src/utils/crossImport.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { createRequire } from 'node:module';
import { pathToFileURL } from 'node:url';
import { isEsmFile } from './isEsmFile';

const require = createRequire(import.meta.url);

export const crossImport = async <T = any>(path: string): Promise<T> => {
if (isEsmFile(path)) {
const url = pathToFileURL(path).href;
Expand Down
5 changes: 4 additions & 1 deletion packages/rspack-cli/src/utils/loadConfig.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import fs from 'node:fs';
import { createRequire } from 'node:module';
import path from 'node:path';
import type { MultiRspackOptions, RspackOptions } from '@rspack/core';
import { rspack } from '@rspack/core';
import { addHook } from 'pirates';
import { crossImport } from './crossImport';
import findConfig from './findConfig';
import { isEsmFile } from './isEsmFile';
import isTsFile, { TS_EXTENSION } from './isTsFile';
import type { CommonOptions } from './options';
import { rspack } from './rspackCore';

const require = createRequire(import.meta.url);

const injectInlineSourceMap = ({
code,
Expand Down
2 changes: 1 addition & 1 deletion packages/rspack-cli/src/utils/profile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
import fs from 'node:fs';
import path from 'node:path';
import { rspack } from './rspackCore';
import { rspack } from '@rspack/core';

const DEFAULT_RUST_TRACE_LAYER = 'perfetto';

Expand Down
12 changes: 0 additions & 12 deletions packages/rspack-cli/src/utils/rspackCore.ts

This file was deleted.

11 changes: 11 additions & 0 deletions packages/rspack-cli/tests/api/type/api-wrapper.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const rspackCjsDefaultRequire = require('@rspack/core');
const {
rspack: rspackCjsNamedRequire,
webpack: webpackCjsNamedRequire,
} = require('@rspack/core');

module.exports = {
rspackCjsDefaultRequire,
rspackCjsNamedRequire,
webpackCjsNamedRequire,
};
7 changes: 7 additions & 0 deletions packages/rspack-cli/tests/api/type/api-wrapper.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import rspackEsmDefaultImport, {
rspack as rspackEsmNamedImport,
} from '@rspack/core';

import * as rspackNamespaceImport from '@rspack/core';

export { rspackEsmDefaultImport, rspackEsmNamedImport, rspackNamespaceImport };
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
const rspackCjsDefaultRequire = require('@rspack/core');
const { rspack: rspackCjsNamedRequire } = require('@rspack/core');

import assert from 'node:assert';

type IsFunction<T> = T extends (...args: any[]) => any ? true : false;
const {
rspackCjsDefaultRequire,
rspackCjsNamedRequire,
webpackCjsNamedRequire,
} = require('./api-wrapper.cjs');

// https://github.com/web-infra-dev/rspack/issues/8095
describe.concurrent(
'js-api-type should be correct when requiring from @rspack/core',
() => {
it('cjs default require', async () => {
type Truthy = IsFunction<typeof rspackCjsDefaultRequire>;
const truthy: Truthy = true;
truthy;
assert(rspackCjsDefaultRequire.BannerPlugin);
// const rspack = require('@rspack/core')
assert(typeof rspackCjsDefaultRequire === 'function');
assert(rspackCjsDefaultRequire.BannerPlugin);
const compiler = rspackCjsDefaultRequire({});
assert(compiler);
});

it('cjs named require', async () => {
type Truthy = IsFunction<typeof rspackCjsNamedRequire>;
const truthy: Truthy = true;
truthy;
assert(rspackCjsNamedRequire.BannerPlugin);
// const { rspack } = require('@rspack/core')
assert(typeof rspackCjsNamedRequire === 'function');
// const { webpack } = require('@rspack/core')
assert(typeof webpackCjsNamedRequire === 'function');
assert(rspackCjsNamedRequire.BannerPlugin);
const compiler = rspackCjsNamedRequire({});
assert(compiler);
});

it('rspack.default should not exist in cjs require', async () => {
// const { rspack } = require('@rspack/core')
assert(!(rspackCjsNamedRequire as any).default);
// const rspack = require('@rspack/core')
assert(!(rspackCjsDefaultRequire as any).default);
});
},
Expand Down
35 changes: 0 additions & 35 deletions packages/rspack-cli/tests/api/type/js-api-esm.test.mts

This file was deleted.

50 changes: 50 additions & 0 deletions packages/rspack-cli/tests/api/type/js-api-esm.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import assert from 'node:assert';
import {
rspackEsmDefaultImport,
rspackEsmNamedImport,
rspackNamespaceImport,
} from './api-wrapper.mjs';

// https://github.com/web-infra-dev/rspack/issues/8095
describe.concurrent(
'js-api-type should be correct when importing from @rspack/core',
() => {
it('esm default import', async () => {
// import rspack from '@rspack/core'
assert(typeof rspackEsmDefaultImport === 'function');
assert(rspackEsmDefaultImport.BannerPlugin);
const compiler = rspackEsmDefaultImport({});
assert(compiler);
});

it('esm namespace import', async () => {
// import * as rspack from '@rspack/core'
assert(typeof rspackNamespaceImport === 'object');
assert(typeof rspackNamespaceImport.rspack === 'function');
assert(rspackNamespaceImport.BannerPlugin);
const compiler1 = rspackNamespaceImport.rspack({});
assert(compiler1);
const compiler2 = rspackNamespaceImport.default({});
assert(compiler2);
});

it('esm named import', async () => {
// import { rspack } from '@rspack/core'
assert(typeof rspackEsmNamedImport === 'function');
assert(rspackEsmNamedImport.BannerPlugin);
const compiler = rspackEsmNamedImport({});
assert(compiler);
});

it('rspack.default should not exist in esm named and default import', async () => {
assert(!(rspackEsmNamedImport as any).default);
assert(!(rspackEsmDefaultImport as any).default);
});

it('rspack.default should exist in esm namespace import', async () => {
assert((rspackNamespaceImport as any).default);
assert(typeof (rspackNamespaceImport as any).default === 'function');
assert(rspackNamespaceImport.default === rspackNamespaceImport.rspack);
});
},
);
3 changes: 3 additions & 0 deletions packages/rspack-cli/tests/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"type": "commonjs"
}
4 changes: 3 additions & 1 deletion packages/rspack-cli/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"include": ["src"],
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
"rootDir": "src",
"module": "ES2022",
"moduleResolution": "bundler"
},
"references": [
{
Expand Down
4 changes: 4 additions & 0 deletions packages/rspack-test-tools/src/helper/expect/placeholder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ const placeholderSerializer = createSnapshotSerializer({
match: __RSPACK_PATH__,
mark: 'rspack_root',
},
{
match: /<ROOT>\/packages\/rspack/g,
mark: 'rspack_root',
},
{
match: /:\d+:\d+-\d+:\d+/g,
mark: 'line_col_range',
Expand Down
Loading
Loading