chore(rspack): configure correctly
This commit is contained in:
parent
1b819aa628
commit
9cbc1af014
100
docs/shared/packages/rspack/rspack-plugin.md
Normal file
100
docs/shared/packages/rspack/rspack-plugin.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
title: Overview of the Nx Rspack Plugin
|
||||||
|
description: The Nx Plugin for Rspack contains executors, generators, and utilities for managing Rspack projects in an Nx Workspace.
|
||||||
|
---
|
||||||
|
|
||||||
|
The Nx Plugin for Rspack contains executors, generators, and utilities for managing Rspack projects in an Nx Workspace.
|
||||||
|
|
||||||
|
## Setting Up @nx/rspack
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
{% callout type="note" title="Keep Nx Package Versions In Sync" %}
|
||||||
|
Make sure to install the `@nx/rspack` version that matches the version of `nx` in your repository. If the version numbers get out of sync, you can encounter some difficult to debug errors. You can [fix Nx version mismatches with this recipe](/recipes/tips-n-tricks/keep-nx-versions-in-sync).
|
||||||
|
{% /callout %}
|
||||||
|
|
||||||
|
In any Nx workspace, you can install `@nx/rspack` by running the following command:
|
||||||
|
|
||||||
|
{% tabs %}
|
||||||
|
{% tab label="Nx 18+" %}
|
||||||
|
|
||||||
|
```shell {% skipRescope=true %}
|
||||||
|
nx add @nx/rspack
|
||||||
|
```
|
||||||
|
|
||||||
|
This will install the correct version of `@nx/rspack`.
|
||||||
|
|
||||||
|
|
||||||
|
### How @nx/rspack Infers Tasks
|
||||||
|
|
||||||
|
The `@nx/rspack` plugin will create a task for any project that has a Rspack configuration file present. Any of the following files will be recognized as a Rspack configuration file:
|
||||||
|
|
||||||
|
- `rspack.config.js`
|
||||||
|
- `rspack.config.ts`
|
||||||
|
- `rspack.config.mjs`
|
||||||
|
- `rspack.config.mts`
|
||||||
|
- `rspack.config.cjs`
|
||||||
|
- `rspack.config.cts`
|
||||||
|
|
||||||
|
### View Inferred Tasks
|
||||||
|
|
||||||
|
To view inferred tasks for a project, open the [project details view](/concepts/inferred-tasks) in Nx Console or run `nx show project my-project --web` in the command line.
|
||||||
|
|
||||||
|
### @nx/rspack Configuration
|
||||||
|
|
||||||
|
The `@nx/rspack/plugin` is configured in the `plugins` array in `nx.json`.
|
||||||
|
|
||||||
|
```json {% fileName="nx.json" %}
|
||||||
|
{
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"plugin": "@nx/rspack/plugin",
|
||||||
|
"options": {
|
||||||
|
"buildTargetName": "build",
|
||||||
|
"previewTargetName": "preview",
|
||||||
|
"serveTargetName": "serve",
|
||||||
|
"serveStaticTargetName": "serve-static"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `buildTargetName`, `previewTargetName`, `serveTargetName` and `serveStaticTargetName` options control the names of the inferred Rspack tasks. The default names are `build`, `preview`, `serve` and `serve-static`.
|
||||||
|
|
||||||
|
{% /tab %}
|
||||||
|
{% tab label="Nx < 18" %}
|
||||||
|
|
||||||
|
Install the `@nx/rspack` package with your package manager.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm add -D @nx/rspack
|
||||||
|
```
|
||||||
|
|
||||||
|
{% /tab %}
|
||||||
|
{% /tabs %}
|
||||||
|
|
||||||
|
## Using @nx/rspack
|
||||||
|
|
||||||
|
### Generate a new project using Rspack
|
||||||
|
|
||||||
|
You can generate a [React](/nx-api/react) application or library that uses Rspack. The [`@nx/react:app`](/nx-api/react/generators/application) and [`@nx/react:lib`](/nx-api/react/generators/library) generators accept the `bundler` option, where you can pass `rspack`. This will generate a new application configured to use Rspack, and it will also install all the necessary dependencies, including the `@nx/rspack` plugin.
|
||||||
|
|
||||||
|
To generate a React application using Rspack, run the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nx g @nx/react:app my-app --bundler=rspack
|
||||||
|
```
|
||||||
|
|
||||||
|
To generate a React library using Rspack, run the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nx g @nx/react:lib my-lib --bundler=rspack
|
||||||
|
```
|
||||||
|
|
||||||
|
### Modify an existing React project to use Rspack
|
||||||
|
|
||||||
|
You can use the `@nx/rspack:rspack-project` generator to change your React to use Rspack. This generator will modify your project's configuration to use Rspack, and it will also install all the necessary dependencies, including the `@nx/rspack` plugin.
|
||||||
|
|
||||||
|
You can read more about this generator on the [`@nx/rspack:rspack-project`](/nx-api/rspack/generators/rspack-project) generator page.
|
||||||
|
|
||||||
@ -96,6 +96,10 @@
|
|||||||
"@rollup/plugin-json": "^6.1.0",
|
"@rollup/plugin-json": "^6.1.0",
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||||
"@rollup/plugin-url": "^8.0.2",
|
"@rollup/plugin-url": "^8.0.2",
|
||||||
|
"@rspack/core": "^1.0.4",
|
||||||
|
"@rspack/dev-server": "^1.0.4",
|
||||||
|
"@rspack/plugin-minify": "^0.7.5",
|
||||||
|
"@rspack/plugin-react-refresh": "^1.0.0",
|
||||||
"@schematics/angular": "~18.2.0",
|
"@schematics/angular": "~18.2.0",
|
||||||
"@storybook/addon-essentials": "^8.2.8",
|
"@storybook/addon-essentials": "^8.2.8",
|
||||||
"@storybook/addon-interactions": "^8.2.8",
|
"@storybook/addon-interactions": "^8.2.8",
|
||||||
|
|||||||
@ -1,3 +1,26 @@
|
|||||||
|
<p style="text-align: center;">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-dark.svg">
|
||||||
|
<img alt="Nx - Smart Monorepos · Fast CI" src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-light.svg" width="100%">
|
||||||
|
</picture>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{{links}}
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
# Nx: Smart Monorepos · Fast CI
|
||||||
|
|
||||||
|
Nx is a build system, optimized for monorepos, with plugins for popular frameworks and tools and advanced CI capabilities including caching and distribution.
|
||||||
|
|
||||||
|
This package is a [Rspack plugin for Nx](https://nx.dev/nx-api/rspack).
|
||||||
|
|
||||||
|
{{content}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p style="text-align: center;"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx.png" width="600" alt="Nx - Smart, Fast and Extensible Build System"></p>
|
<p style="text-align: center;"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx.png" width="600" alt="Nx - Smart, Fast and Extensible Build System"></p>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
@ -43,39 +66,6 @@ First, install the plugin:
|
|||||||
npm install --save-dev @nx/rspack
|
npm install --save-dev @nx/rspack
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, run the `rspack-project` generator:
|
Then, r
|
||||||
|
|
||||||
```bash
|
|
||||||
npx nx g @nx/rspack:rspack-project --skipValidation
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** The `--skipValidation` option allows you to overwrite existing build targets.
|
|
||||||
|
|
||||||
## Workspace libraries
|
|
||||||
|
|
||||||
The `@nx/rspack` executor support importing workspace libs into the app.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npx nx g @nx/react:lib mylib
|
|
||||||
```
|
|
||||||
|
|
||||||
Import the new library in your app.
|
|
||||||
|
|
||||||
```typescript jsx
|
|
||||||
// src/app/app.tsx
|
|
||||||
import { Mylib } from '@rspack-demo/mylib';
|
|
||||||
|
|
||||||
// ...
|
|
||||||
|
|
||||||
export default function App() {
|
|
||||||
return <MyLib />;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Now, run the dev server again to see the new library in action.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** You must restart the server if you make any changes to your library.
|
**Note:** You must restart the server if you make any changes to your library.
|
||||||
|
|||||||
@ -19,16 +19,16 @@
|
|||||||
"generators": "./generators.json",
|
"generators": "./generators.json",
|
||||||
"executors": "./executors.json",
|
"executors": "./executors.json",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nx/js": "^19.5.7",
|
"@nx/js": "file:../js",
|
||||||
"@nx/devkit": "^19.5.7",
|
"@nx/devkit": "file:../devkit",
|
||||||
|
"@nx/eslint": "file:../eslint",
|
||||||
"@phenomnomnominal/tsquery": "~5.0.1",
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
||||||
"less-loader": "11.1.0",
|
"less-loader": "11.1.0",
|
||||||
"license-webpack-plugin": "^4.0.2",
|
"license-webpack-plugin": "^4.0.2",
|
||||||
"sass-loader": "^12.2.0",
|
"sass-loader": "^12.2.0",
|
||||||
"stylus-loader": "^7.1.0",
|
"stylus-loader": "^7.1.0",
|
||||||
"postcss-loader": "^8.1.1",
|
"postcss-loader": "^8.1.1",
|
||||||
"@nx/eslint": "^19.5.7",
|
"@rspack/core": "^1.0.4",
|
||||||
"@rspack/core": "^1.0.2",
|
|
||||||
"@rspack/plugin-react-refresh": "^1.0.0",
|
"@rspack/plugin-react-refresh": "^1.0.0",
|
||||||
"@rspack/plugin-minify": "^0.7.5",
|
"@rspack/plugin-minify": "^0.7.5",
|
||||||
"chalk": "~4.1.0"
|
"chalk": "~4.1.0"
|
||||||
|
|||||||
@ -4,15 +4,23 @@
|
|||||||
"sourceRoot": "packages/rspack/src",
|
"sourceRoot": "packages/rspack/src",
|
||||||
"projectType": "library",
|
"projectType": "library",
|
||||||
"targets": {
|
"targets": {
|
||||||
"build": {
|
"add-extra-dependencies": {
|
||||||
"outputs": ["{workspaceRoot}/dist/packages/rspack"],
|
"outputs": ["{workspaceRoot}/build/packages/rspack"],
|
||||||
"command": "node ./scripts/add-dependency-to-build.js rspack @nrwl/rspack"
|
"command": "node ./scripts/add-dependency-to-build.js rspack @nrwl/rspack"
|
||||||
},
|
},
|
||||||
|
"build": {
|
||||||
|
"executor": "nx:run-commands",
|
||||||
|
"outputs": ["{workspaceRoot}/build/packages/rspack"],
|
||||||
|
"options": {
|
||||||
|
"command": "node ./scripts/copy-readme.js rspack"
|
||||||
|
}
|
||||||
|
},
|
||||||
"build-base": {
|
"build-base": {
|
||||||
|
"dependsOn": ["^build-base"],
|
||||||
"executor": "@nx/js:tsc",
|
"executor": "@nx/js:tsc",
|
||||||
"outputs": ["{options.outputPath}"],
|
"outputs": ["{options.outputPath}"],
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "dist/packages/rspack",
|
"outputPath": "build/packages/rspack",
|
||||||
"main": "packages/rspack/src/index.ts",
|
"main": "packages/rspack/src/index.ts",
|
||||||
"tsConfig": "packages/rspack/tsconfig.lib.json",
|
"tsConfig": "packages/rspack/tsconfig.lib.json",
|
||||||
"assets": [
|
"assets": [
|
||||||
@ -36,26 +44,6 @@
|
|||||||
"LICENSE"
|
"LICENSE"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"executor": "@nx/eslint:lint",
|
|
||||||
"outputs": ["{options.outputFile}"]
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"executor": "@nx/jest:jest",
|
|
||||||
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
|
|
||||||
"options": {
|
|
||||||
"jestConfig": "packages/rspack/jest.config.ts"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"publish": {
|
|
||||||
"executor": "nx:run-commands",
|
|
||||||
"options": {
|
|
||||||
"parallel": false,
|
|
||||||
"commands": [
|
|
||||||
"node tools/scripts/publish.mjs rspack {args.ver} {args.tag}"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
|
|||||||
@ -49,7 +49,10 @@ export const createNodesV2: CreateNodesV2<RspackPluginOptions> = [
|
|||||||
rspackConfigGlob,
|
rspackConfigGlob,
|
||||||
async (configFilePaths, options, context) => {
|
async (configFilePaths, options, context) => {
|
||||||
const optionsHash = hashObject(options);
|
const optionsHash = hashObject(options);
|
||||||
const cachePath = join(workspaceDataDirectory, `vite-${optionsHash}.hash`);
|
const cachePath = join(
|
||||||
|
workspaceDataDirectory,
|
||||||
|
`rspack-${optionsHash}.hash`
|
||||||
|
);
|
||||||
const targetsCache = readTargetsCache(cachePath);
|
const targetsCache = readTargetsCache(cachePath);
|
||||||
try {
|
try {
|
||||||
return await createNodesFromFiles(
|
return await createNodesFromFiles(
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
export const rspackCoreVersion = '^1.0.2';
|
export const rspackCoreVersion = '^1.0.4';
|
||||||
export const rspackDevServerVersion = '^1.0.2';
|
export const rspackDevServerVersion = '^1.0.4';
|
||||||
|
|
||||||
export const rspackPluginMinifyVersion = '^0.7.5';
|
export const rspackPluginMinifyVersion = '^0.7.5';
|
||||||
export const rspackPluginReactRefreshVersion = '^1.0.0';
|
export const rspackPluginReactRefreshVersion = '^1.0.0';
|
||||||
|
|||||||
685
pnpm-lock.yaml
generated
685
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user