It's a vey quick recap on how to start using Rush.
I'm going to use this solution in the next posts of this series, so if you are interested, the source is here.
Initial configuration
Setting up a new repo is a very good article to start with.
rush init initializes rush in the repo, by provisioning config file templates. In case you already have some content in your repo (even if it's an empty folder structure), use rush init rush --overwrite-existing
rush.json
Freshly created file has tonnes of comments and explanations. You may safely delete them, as you will find them here anyway.
There are some important configuration settings in the rush.json:
- the default package manager is pnpm
-
nodeSupportedVersionRangedefines supported versions for Node -
commit messages
gitPolicy.versionBumpCommitMessageandgitPolicy.changeLogUpdateCommitMessagethat rush will use after bumping versions or generating changelogs. -
gitPolicy.allowedEmailRegExpsfor validating the commit email (why? and how?). -
repository.urlused by rush change to determine which files are affected by a PR diff
rush.json
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
"rushVersion": "5.61.4",
"pnpmVersion": "6.7.1",
"pnpmOptions": {
"useWorkspaces": true
},
"nodeSupportedVersionRange": ">=14.15.0 <15.0.0",
"gitPolicy": {
"versionBumpCommitMessage": "Bump versions [skip ci]",
"changeLogUpdateCommitMessage": "Update changelogs [skip ci]",
"allowedEmailRegExps": [
"[^@]+@users\\.noreply\\.github\\.com"
],
"sampleEmail": "mrexample@users.noreply.github.com"
},
"repository": {
"url": "https://github.com/xxx/xxx.git",
//"defaultBranch": "master", //The default value is "master"
"defaultRemote": "origin"
},
"projects": []
}
Provisioning [SPFx] projects
When adding projects to a repo, (and assuming you start from the scratch), remember to run the yo generator with --skip-install to avoid the packages to be installed. Rush will take care of it once you are ready.
yo @microsoft/sharepoint --skip-install --package-manager pnpm
Add your projects to rush
Rush requires a list of project it should manage, and it does not support wildcards.
Add your projects to rush.json:
-
projects.packageNameis the value of name parameter in your project's package.json file. - either set
projects.shouldPublishtotrueto ensure the project will be published, or define -
projects.versionPolicyNamepointing out to a policy you created in the version-policies.json file.
common\config\rush\version-policies.json
[
{
"definitionName": "individualVersion",
"policyName": "sPFx"
}
]
rush.json
{
//...
"projects": [
{
"packageName": "spfx-utils",
"projectFolder": "spfx-libraries\\spfx-utils",
"versionPolicyName": "sPFx"
},
{
"packageName": "org-app",
"projectFolder": "spfx-apps\\org-app",
"versionPolicyName": "sPFx"
}
]
}
You may run rush list to ensure you added your projects correctly
rush list
Update the shrinkwrap file and install dependencies with rush update and build your projects with rush build:
rush update
rush build
Installing project dependencies
Since Rush is managing the installation of dependency packages, you should avoid using package managers to install/link the dependencies:
For example,
npm runwill work fine, but these commands will get confused by Rush's symlinks:npm install,npm update,npm link,npm dedupe, etc. (The same goes for other package managers: Avoid commands such aspnpm installoryarn install.) If you want to use those commands, first run rush unlink to delete the symlinks created by Rush. Source: Getting started as a developer / A couple caveats.
There's rush add command to add dependencies to a project.
Top comments (0)