-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: inject curried runPkgManagerInstall
to package installers
#202
refactor: inject curried runPkgManagerInstall
to package installers
#202
Conversation
Not sure about the naming convention with currying functions. I've named I've also kept the original |
Oh wow this is much cleaner. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
I actually had a draft to remove the runPackageManagerInstall
entirely and instead add all the packages to package.json and then run a single npm/pnpm/yarn install
command at the end, but haven't had time to complete it.
Just noticed in another branch that some installs were actually passing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Found a typo
src/utils/runPkgManagerInstall.ts
Outdated
Partial<CurryRunPkgManagerInstallOptions> & | ||
Omit<RunPkgManagerInstallOptions, keyof CurryRunPkgManagerInstallOptions>; | ||
|
||
export const curryRunPckgManagerInstall = ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
export const curryRunPckgManagerInstall = ( | |
export const curryRunPkgManagerInstall = ( |
src/utils/runPkgManagerInstall.ts
Outdated
export const curryRunPckgManagerInstall = ( | ||
baseOptions: CurryRunPkgManagerInstallOptions, | ||
) => { | ||
const curriedRunPckgManagerInstall = async ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const curriedRunPckgManagerInstall = async ( | |
const curriedRunPkgManagerInstall = async ( |
src/utils/runPkgManagerInstall.ts
Outdated
...options, | ||
}); | ||
|
||
return curriedRunPckgManagerInstall; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return curriedRunPckgManagerInstall; | |
return curriedRunPkgManagerInstall; |
src/helpers/createProject.ts
Outdated
@@ -18,12 +19,30 @@ export const createProject = async ({ | |||
}: CreateProjectOptions) => { | |||
const pkgManager = getUserPkgManager(); | |||
const projectDir = path.resolve(process.cwd(), projectName); | |||
const runPkgManagerInstall = curryRunPckgManagerInstall({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const runPkgManagerInstall = curryRunPckgManagerInstall({ | |
const runPkgManagerInstall = curryRunPkgManagerInstall({ |
src/helpers/createProject.ts
Outdated
@@ -1,6 +1,7 @@ | |||
import type { PkgInstallerMap } from "../installers/index.js"; | |||
import path from "path"; | |||
import { getUserPkgManager } from "../utils/getUserPkgManager.js"; | |||
import { curryRunPckgManagerInstall } from "../utils/runPkgManagerInstall.js"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
import { curryRunPckgManagerInstall } from "../utils/runPkgManagerInstall.js"; | |
import { curryRunPkgManagerInstall } from "../utils/runPkgManagerInstall.js"; |
Oh sorry just after I pushed I saw that there was the commit suggestion option 🤦♂️ Never saw that before, will use next time. |
* chore(docs): updated readme to contain @next * refactor: inject curried `runPkgManagerInstall` to package installers (#202) * refactor: export curryable `runPkgManagerInstallOptions` * refactor: inject curried `runPkgManagerInstall` to installers * refactor: use curried function in installers * fix: refactored calls that should have passed `devMode` flag * fix: typo * feat: migrate env + next config to esm (#205) * chore: move lintstaged config into file (#217) * fix: move gitignore rename call (#215) * feat: add trpc inference helpers * fix(#218): lock react-query to v3 * chore(release): 5.1.0 * fix: add missing trpc import * chore(release): 5.1.1 * fix: handle pkg with version in noInstall mode (#220) * fix: typo in readme * feat: add db.sqlite-journal to gitignore (#221) Co-authored-by: Shoubhit Dash <[email protected]> * fix: typo - rename 'varibles' to 'variables' (#223) * fix: missing DATABASE_URL (#222) * chore(release): 5.2.0 * fix: update url in auth prisma schema * chore(release): 5.2.1 * feat: add typesafe client side env variables (#209) * feat: add typesafe client side env variables * refactor: clean up type-safe client side env vars * fix: add inferProcedureInput/Output imports in trpc utils * refactor: client env validation * refactor: run prettier * refactor: clean up files and formatter func * fix: validate public env vars are not in server schema * fix: add ts-check to mjs files Co-authored-by: Shoubhit Dash <[email protected]> * fix: title being offset when using yarn/pnpm * chore(release): bump beta version * chore: bump Next.js to 12.2.3 * chore(release): bump beta version * feat: improved logo typography (#238) * chore: bump beta version * fix: remove semicolon in _app.tsx with next-auth to avoid early return * chore: bump beta version * chore: add protected trpc router example (#194) * chore: add link to community (#229) * chore: add link to community info * chore: add discord badge * fix: t3 discord id * fix: discord link on badge Co-authored-by: Shoubhit Dash <[email protected]> * docs(readme): add usage for beta and next version (#243) * chore: add js files to format script (#244) * chore: remove credentials provider (#246) * refactor(cli): add module path aliasing (#247) * feat: updating tailwind and postcss config's to use .cjs (#242) Co-authored-by: Shoubhit Dash <[email protected]> Co-authored-by: Julius Marminge <[email protected]> * fix: clarify some comments and rename some files in env (#245) * fix: clarify some comments and rename some files in env * fix: filenames in installer * fix: import in next.config * fix: import after filechange * fix: forgotten rename Co-authored-by: Shoubhit Dash <[email protected]> * chore(release): bump beta version * fix: added JSDoc type to clientEnv in all env-schema (#240) * chore(release): 5.3.0 * refactor(utils): remove unnecessary block (#252) * chore: update favicon (#253) * fix: missing next-auth types (#255) fixes #254 * fix: height on small screens (#256) * docs: expand t3-app README (#248) * revert: extend regular next-auth module (#257) * revert: extend regular next-auth module * refactor: move typedefs to `src/types` Co-authored-by: Shoubhit Dash <[email protected]> * feat: add deployment strategy to generated README (#258) * fix(docs): remove extra s in link * feat: add deployment strategy to readme * docs: add instructions on building docker image to readme (#265) * Add instructions on building docker image Following the same method given in NextJs examples * fix: prettier check run prettier format to fix formatting issues * docs: small adjustments (#266) * docs: add instructions on building docker image to readme (#265) * Add instructions on building docker image Following the same method given in NextJs examples * fix: prettier check run prettier format to fix formatting issues * docs: small adjustments * feat: set appName to directory on 'npx create-t3-app .' (#273) * fix(prisma): make db changes for next-auth on mysql obvious (#275) * chore(release): 5.4.0 * feat: make session.user.id non-nullable (#282) * chore(release): 5.5.0 * docs: update tRPC v10 docs link (#291) * fix: change ! reversion to equality in env validation (#293) * feat: Include ct3a version as metadata in generated app (#305) * fix: parse path returned from process.cwd() before using it (#303) Co-authored-by: Shoubhit Dash <[email protected]> Co-authored-by: Julius Marminge <[email protected]> * chore(release): 5.6.0 * chore: upload T3 logo to github (#311) * chore: upload T3 logo to github * chore: format * chore: ignore package-lock (#315) * chore: Publish Workflow and other Github enhancements (#308) * chore: switch standard-version to changeset * chore: add version workflow * chore: issue forms and pr labeler * chore: prettier * chore: add missing credit * chore: adjust some commands * chore: update contributing guidelines * chore: prettier * chore: adjustments * feat: add minimal ts-linter * fix: lint warnings * revert eslinter * chore(ci): dont use reserved word `package` * chore(ci): require -> import * chore(ci): authenticate to npm * chore: update pr-template * chore(ci): next-release * chore(ci): release workflow * chore(ci): update scrips * chore(ci): update release versioning * chore(ci): update versioning scripts * chore(ci): fix no-bin error * feat: add base tslint (#317) * chore(app): version bumps * feat: add base linter for ts * fix: test ignoring base * fix: test setting root * fix: test add parser * fix: test disabling exclude * chore: changeset * chore(ci): test changeset with npx * chore(ci): test npm * chore(ci): give proper commit message and title * chore(release): remove standard-version msg from changelog * chore(release): version packages (#319) Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> * chore(release): public access * refactor: turborepo with cli and www (#320) * docs: add docs site built with Astro (#300) * docs: add docs site built with Astro * docs: prettier Co-authored-by: Shoubhit Dash <[email protected]> * refactor: make monorepo * chore(fix): tailwindcss/typography peer deps * refactor: docusaurus migration * docs: styling * fix: linting * fix: typecheck * fix: no typecheck www * fix: restore tsconfig * fix(ci): cache all node_modules * fix: more caching * fix: missing lint plugin * fix(ci): cwd * fix(ci): path * docs: start on collection * docs: headers Co-authored-by: Kroucher <[email protected]> Co-authored-by: Shoubhit Dash <[email protected]> Co-authored-by: sir-mr-bean <[email protected]> * chore: set type module * fix: typo in pub-script * fix: create npmrc in cli pkg * fix: path in version script * refactor: turborepo next Co-authored-by: Oscar Chic <[email protected]> Co-authored-by: Daniel Roe <[email protected]> Co-authored-by: JLN13X <[email protected]> Co-authored-by: Hauke Schnau <[email protected]> Co-authored-by: Azmi Makarima <[email protected]> Co-authored-by: Christopher Ehrlich <[email protected]> Co-authored-by: Shoubhit Dash <[email protected]> Co-authored-by: Nicholas Ramkissoon <[email protected]> Co-authored-by: Vikrant Bhat <[email protected]> Co-authored-by: Guillermo Antony Cava Nuñez <[email protected]> Co-authored-by: Abui <[email protected]> Co-authored-by: John Daly <[email protected]> Co-authored-by: Simon Green Kristensen <[email protected]> Co-authored-by: XLS <[email protected]> Co-authored-by: Omar López <[email protected]> Co-authored-by: Krish <[email protected]> Co-authored-by: cyremur <[email protected]> Co-authored-by: Samuel Gunter <[email protected]> Co-authored-by: Khalil Omer <[email protected]> Co-authored-by: BWsix <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Kroucher <[email protected]> Co-authored-by: sir-mr-bean <[email protected]>
…t3-oss#202) * refactor: export curryable `runPkgManagerInstallOptions` * refactor: inject curried `runPkgManagerInstall` to installers * refactor: use curried function in installers * fix: refactored calls that should have passed `devMode` flag * fix: typo
Inject curried
runPkgManagerInstall
to package installersI noticed that every installer had to call
runPkgManagerInstall
with a lot of configuration, but IMHO the only configuration they should specify is thepackages
list. So, this MR adds a curryable version ofrunPkgManagerInstall
that is curried bycreateProject
and injected to every installer as an option. This injected function has been curried with all of the necessary configuration, allowing to clear the call in each installer.Benefits:
runPkgManagerInstall
will not force adding that parameter in each installer, but instead just once in thecreateProject.ts
helper where it's curriedAnother small change added here passing the entirety of the options received in
installPackages.ts
to each package installer, since they share the same shape. This will also prevent from having to pass newly added options here.