├── .github └── workflows │ └── ci.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── package-lock.json └── package.json /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: DummyCheck 2 | 3 | on: 4 | pull_request: 5 | branches: [ main ] 6 | 7 | jobs: 8 | build: 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | os: [ ubuntu-latest ] 13 | runs-on: ${{ matrix.os }} 14 | 15 | steps: 16 | - name: Check out code 17 | uses: actions/checkout@v3 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.0-fpm 2 | 3 | ENV DOCKERIZE_VERSION 0.6.1 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Renovate Bot 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Renovate - Hands On Tutorial 2 | 3 | ## Introduction 4 | 5 | Welcome to the Renovate hands-on tutorial. 6 | 7 | This tutorial is based on the Mend Renovate App. 8 | You can also run Renovate as a CLI tool or a self-hosted application. 9 | 10 | > [!NOTE] 11 | > Although this tutorial is based on the Mend Renovate App, the concepts discussed apply to all environments. 12 | 13 | In this tutorial, you will learn how to configure Renovate and become familiar with some of the basic features. 14 | 15 | What you will learn: 16 | 17 | 1. Installation 18 | 2. Onboarding 19 | 3. Getting to know Renovate’s update PRs 20 | 4. Dependency Dashboard 21 | 22 | We will begin this tutorial with configuring and installing the Mend Renovate App and an overview of the default settings and basic functionalities. 23 | 24 | Later, we will dive deeper into functional use-cases, advanced features, and `best practices` so you'll know how to leverage Renovate to its fullest. 25 | 26 | ## Part 1 - Installation 27 | 28 | Let’s start by forking the tutorial repo to your account, installing the Mend Renovate App, and configuring it to your repo. 29 | 30 | 1. Make sure you are logged in to GitHub.com 31 | 1. Fork this repository. The tutorial instructions will be based on its contents. 32 | 1. The following instructions are directed at those that don’t have the Mend Renovate App installed: 33 | - Install the Mend Renovate App to your account by navigating to the [the Mend Renovate App installation page](https://github.com/apps/renovate) and select Install: 34 | ![image](https://user-images.githubusercontent.com/102745725/178965463-525a385e-d914-4309-aeb4-cb4358dc12bc.png) 35 | 1. If you do have the Mend Renovate App installed: 36 | - navigate to [the Mend Renovate App](https://github.com/apps/renovate) and select configure: 37 | ![image](https://user-images.githubusercontent.com/42116482/178491021-a0b7ba34-3bc7-4953-8452-416fbd3d6ec9.png) 38 | 1. You will reach an installation configuration page where you are asked to configure Repository Access. 39 | 40 | > **Note** 41 | > for existing users, installation configuration appears at the bottom of the page. 42 | 43 | - Mark `Only select repositories` and make sure to select the forked RenovateTutorial repo 44 | 45 | > **Note** 46 | > each selected repo gets an onboarding PR. 47 | 48 | If you select `All repositories`, forked repos will be skipped by default (including RenovateTutorial). 49 | - Click on `Install` (“Save” for existing users) 50 | 51 | configuration page 52 | 53 | For new installs: 54 | 55 | - You will be redirected to our “Thank you for installing Renovate” page while we are setting up your account. 56 | 57 | ![image](https://user-images.githubusercontent.com/42116482/178492276-ac0f5c03-db21-482c-95e9-07dc229ac298.png) 58 | 59 | - After a few seconds, you will be automatically redirected to the Mend's developer portal where you can sign in and view the Renovate logs. We recommend saving this [link](https://developer.mend.io) for future use. 60 | 61 | sign in page 62 | 63 | **Congratulations! You have successfully installed Renovate to your account.** 🎈 64 | 65 | ## Part 2 - Onboarding 66 | 67 | Now you have installed the Mend Renovate App, we can begin onboarding. 68 | 69 | Let’s review the concepts of the Onboarding PR and learn about Renovate’s initial settings. 70 | 71 | > [!NOTE] 72 | > Renovate waits for you to finish onboarding, before making changes to your repo or raises PRs. 73 | 74 | - Upon installing Renovate, an onboarding PR will be automatically generated. 75 | - This PR is there to help you understand Renovate and its default settings before Renovate starts running on your repository. 76 | - The Onboarding PR creates a configuration file called `renovate.json`, which contains Renovate’s default settings and can be modified during onboarding. 77 | 78 | Let’s review the onboarding PR: 79 | 80 | 1. Navigate to the `Pull Requests` section in GitHub, and open the newly generated PR - `Configure Renovate` 81 | 82 | onboarding PR 83 | 84 | onboarding content 85 | 86 | #### The onboarding PR contains: 87 | 88 | - **Detected Package Files** - All package files detected by Renovate in your code. 89 | - **Configuration Summary** - The default configuration settings that will be applied. 90 | - **What to Expect** - The dependency update PRs that Renovate is about to automatically create. 91 | - The link to Renovate’s official [documentation](https://docs.renovatebot.com/). 92 | - The link to review jobs logs in the [Renovate dashboard](https://app.renovatebot.com/dashboard). 93 | 94 | > [!NOTE] 95 | > Renovate only creates dependency update PRs _after_ you merge the onboarding PR. 96 | 97 | #### These are some of the default configurations of Renovate: 98 | 99 | - Enables creation of the “Dependency Dashboard” - a dashboard that shows an overview of the state of your repositories' dependencies. 100 | - PRs will be created at a rate of 2 PRs per hour. 101 | - The limit of simultaneous open Renovate PRs is set to 10. 102 | - Renovate automatically groups known monorepo packages to a single PR (example can be seen in the `date-io` PR under the **what to expect** section). 103 | 104 | Renovate offers the ability to change configurations before merging the onboarding PR as well as preview the results of these changes. 105 | At this point, Renovate has created a branch called renovate/configure which contains the `renovate.json` configuration file. 106 | By default, Renovate limits branch creation to 2 per hour: 107 | 108 | onboarding warning hourly 109 | 110 | Example 111 | 112 | As a user, despite Renovate’s suggestion to limit hourly PR creation to 2, we might want to increase the limit to a different number. 113 | Let’s try changing this hourly limitation to 3: 114 | 115 | 1. Go to the newly created branch - `renovate/configure`: 116 | 117 | new branch 118 | 119 | 2. Go into the `renovate.json` file: 120 | 121 | ![image](https://user-images.githubusercontent.com/42116482/178494908-89189f2e-632a-42ee-a49a-16941a40101b.png) 122 | 123 | 3. Add the following code segment: 124 | ```json 125 | { 126 | "prHourlyLimit": 3 127 | } 128 | ``` 129 | change in config 1 130 | 131 | 4. Commit the changes 132 | 5. Revisit the onboarding PR and notice how the onboarding PR automatically updates to reflect the changes you made to the configuration 133 | 134 | onboarding warning hourly update 135 | 136 | > [!NOTE] 137 | > May take a few moments to update. 138 | 139 | 6. Merge the onboarding pull request. 140 | 141 | **Congratulations! You have successfully onboarded Renovate.** 🎈 142 | 143 | ## Part 3 - Getting to know Renovate’s update PRs 144 | 145 | Now that you have merged the onboarding PR, Renovate will generate Update PRs to the most recent dependency version based on your configuration. 146 | 147 | > [!NOTE] 148 | > PRs may take a couple of minutes to appear. 149 | 150 | Here we will review the basic concepts of Renovate update PRs and merge it. 151 | 152 | - By default, Renovate will create up to 2 update PRs per hour. However, if you completed the onboarding section of this tutorial, Renovate will now create 3 PRs. 153 | - You should already see notifications for these pull requests in the `Pull Requests` section of the repo. 154 | 155 | Let’s go ahead and take a look at a Renovate update PR: 156 | 1. Navigate to the `Pull requests` section and open - `Update dependency lodash to x.y.z` 157 | 158 | open PRs 159 | 160 | ### Each update PR contains: 161 | 162 | - Dependency information (name and version changes) 163 | - [Merge Confidence](https://docs.renovatebot.com/merge-confidence/) values 164 | - Up-to-date release notes 165 | - Renovate configuration-related info 166 | - Option to rebase PR 167 | - Link to view Renovate logs 168 | 169 | ![image](https://user-images.githubusercontent.com/42116482/178495994-7cce93f1-db65-4f09-b682-7506dc242fdc.png) 170 | 171 | - Renovate’s update PRs will update the relevant dependency across your entire repo. In our RenovateTutorial repo, this will be both the `package.json` file and the `package-lock.json` file: 172 | 173 | file diff lodash 174 | 175 | 1. Merge this pull request 176 | 177 | > [!NOTE] 178 | > Renovate is highly configurable and supports: 179 | > 180 | > - On-demand PR creation. 181 | > - Automatic merging of PRs. 182 | > - Settings for specific dependencies/package managers. 183 | > - Scheduling. 184 | > - Grouping. 185 | > 186 | > All the above and more will be discussed in future parts of the tutorial. 187 | 188 | **Congratulations! You have now updated your first dependency with Renovate.** 🎈 189 | 190 | ## Part 4 - Dependency Dashboard 191 | 192 | Renovate’s Dependency Dashboard is a GitHub Issue that enables you to manage and monitor Renovate’s activity in your repo. 193 | In this section, we will go over some of its main functionalities and capabilities. 194 | 195 | Let’s begin by creating and enabling the Dependency Dashboard. 196 | Since GitHub defaults to disable `issues` on forked repositories, we need to enable it on the forked RenovateTutorial repo: 197 | 198 | 1. Go to the main page of the repo 199 | 1. Go to `settings` -> `general` 200 | 1. Check the `issues` checkbox under the Features section: 201 | 202 | issues settings 203 | 204 | - In order for the Dependency Dashboard to become available, we will need to re-run Renovate by triggering a webhook (for example, closing an update PR). 205 | 206 | > [!NOTE] 207 | > This is usually done in a click via the Dependency Dashboard. 208 | 209 | 1. Go to the `Pull requests` section 210 | 2. Select `Update dependency php to v8.1` and select `Close pull request` 211 | 212 | close php 213 | 214 | 3. This will trigger Renovate to run and the Dependency Dashboard will appear under the `Issues` section - navigate to it 215 | 216 | > [!NOTE] 217 | > It may take a minute to appear. 218 | 219 | ### The Dependency Dashboard includes: 220 | - Overview of all updates that are still to-do: 221 | 222 | - **Open** PRs 223 | - **Rate Limited** - PRs blocked by rate limit setting and will be opened based on preferences. 224 | - **Pending Approval** - PRs that require manual triggering based on configurations. 225 | - **Awaiting Schedule** - PRs creation blocked by Renovate scheduling settings. 226 | - **Pending Status Checks** - updates that await pending status checks in order to be created. 227 | 228 | - Visibility into **rejected/deferred updates**. 229 | - List of all the **detected dependencies** and **package managers** in your repository. 230 | 231 | Screen Shot 2022-07-14 at 14 05 40 232 | 233 | Users can manually trigger the creation of dependency updates directly from the dashboard. 234 | 235 | You can also re-run Renovate manually from the Dependency Dashboard by enabling the “Check this box to trigger a request Renovate to run again on this repository” option: 236 | 237 | rerun renovate 238 | 239 | Let’s dive into one of the Dependency Dashboard capabilities - **the Pending Approval feature**. 240 | 241 | Say we want to take extra measures before updating major versions of a package (either to reduce noise or to handle it more carefully). 242 | Renovate offers an option to prevent automatic creation of major version update PRs and create such PRs only upon manual request from the Dependency Dashboard. 243 | 244 | In the Dependency Dashboard, under the `Rate Limited` section, the `Update dependency commander to vX` is waiting to be created. 245 | 246 | > [!NOTE] 247 | > Based on the previously set `prHourlyLimit` configuration, 3 PRs per hour in our case, this PR will be created within an hour. 248 | 249 | commander in Rate Limited 250 | 251 | Since we decided that we want to handle it manually, we will edit configurations and see how the Dependency Dashboard is affected by this change. 252 | 253 | In order to limit all `major` updates to on-demand creation: 254 | 255 | 1. Add this code segment to your `renovate.json` file: 256 | ```json 257 | "packageRules": [ 258 | { 259 | "matchUpdateTypes": ["major"], 260 | "dependencyDashboardApproval": true 261 | } 262 | ] 263 | ``` 264 | 265 | change in config - pending approval 266 | 267 | 2. Commit the changes 268 | 269 | > [!NOTE] 270 | > Changing the `renovate.json` configuration file is a webhook that triggers Renovate to re-run. 271 | 272 | 3. Now go back to the Dependency Dashboard in the Issues section 273 | 4. As you can see, `commander` major update PR now appears under the **Pending Approval** section and **will not** be opened unless manually triggered 274 | 275 | > **Note** 276 | > it may take a minute to complete Renovate's run 277 | 278 | commander in pending approval 279 | 280 | 5. You can now decide to manually open this PR by checking the box next to it 281 | 6. Navigate to the `Pull requests` section to review the generated PR and merge it to the repo. 282 | 283 | **Congratulations! You are now familiar with Renovate’s Dependency Dashboard.** 🎈 284 | 285 | ## What you learned: 286 | 287 | - How to install Renovate 288 | - Onboarding Renovate by reviewing, configuring, and merging the onboarding PR 289 | - How to update a dependency with Renovate 290 | - How to utilize the Dependency Dashboard 291 | 292 | ### General Comments: 293 | 294 | - Granting access to all repositories or change repo selections can be modified at any time on the [the Mend Renovate App GitHub page](https://github.com/apps/renovate). 295 | - Renovate configuration can be modified by manual configurations, global organization configurations and existing Renovate presets. 296 | 297 | ### Congratulations! 298 | 299 | You have successfully completed Renovate’s hands-on tutorial and have taken your first steps to automate dependency updates in your projects. 300 | Now, it's time to configure Renovate on the rest of your repositories and let Renovate manage your dependencies' health. 301 | 302 | ### Upcoming Tutorials: 303 | 304 | We're working on more advanced Renovate tutorials and will post updates when we publish new tutorials. 305 | 306 | What’s coming next: 307 | 308 | - Merge confidence 309 | - Auto Merge 310 | - Labeling 311 | - Grouping 312 | - Schedule 313 | - Package Rules 314 | - GitHub Actions 315 | - PR Assignees and PR reviewers 316 | - Regex Managers 317 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "renovate_tutorial", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "renovate_tutorial", 9 | "version": "0.0.1", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@date-io/date-fns": "2.10.0", 13 | "@date-io/moment": "2.10.0", 14 | "commander": "2.20.3", 15 | "lodash": "4.17.20" 16 | } 17 | }, 18 | "node_modules/@date-io/core": { 19 | "version": "2.14.0", 20 | "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.14.0.tgz", 21 | "integrity": "sha512-qFN64hiFjmlDHJhu+9xMkdfDG2jLsggNxKXglnekUpXSq8faiqZgtHm2lsHCUuaPDTV6wuXHcCl8J1GQ5wLmPw==" 22 | }, 23 | "node_modules/@date-io/date-fns": { 24 | "version": "2.10.0", 25 | "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.10.0.tgz", 26 | "integrity": "sha512-PxskpYmDAoL4BBGanoVD4SwhpMNFcVZFB8V2W7KATxgQ4m6Koy5FK9Qe1nKp8j9BERW310GT3sdERdNCXq8vuQ==", 27 | "dependencies": { 28 | "@date-io/core": "^2.10.0" 29 | }, 30 | "peerDependencies": { 31 | "date-fns": "^2.0.0" 32 | } 33 | }, 34 | "node_modules/@date-io/moment": { 35 | "version": "2.10.0", 36 | "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.10.0.tgz", 37 | "integrity": "sha512-RvmREFZbMBBUUPU8YqMjSkYewUk6rfxfnw5bR1mFtjyiSibfq2mR30ITo6lnqKk9SvpnorBI8fnmOu+g0hZC6g==", 38 | "dependencies": { 39 | "@date-io/core": "^2.10.0" 40 | }, 41 | "peerDependencies": { 42 | "moment": "^2.24.0" 43 | } 44 | }, 45 | "node_modules/commander": { 46 | "version": "2.20.3", 47 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 48 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 49 | }, 50 | "node_modules/date-fns": { 51 | "version": "2.28.0", 52 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", 53 | "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", 54 | "peer": true, 55 | "engines": { 56 | "node": ">=0.11" 57 | }, 58 | "funding": { 59 | "type": "opencollective", 60 | "url": "https://opencollective.com/date-fns" 61 | } 62 | }, 63 | "node_modules/lodash": { 64 | "version": "4.17.20", 65 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 66 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 67 | }, 68 | "node_modules/moment": { 69 | "version": "2.29.4", 70 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 71 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", 72 | "peer": true, 73 | "engines": { 74 | "node": "*" 75 | } 76 | } 77 | }, 78 | "dependencies": { 79 | "@date-io/core": { 80 | "version": "2.14.0", 81 | "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.14.0.tgz", 82 | "integrity": "sha512-qFN64hiFjmlDHJhu+9xMkdfDG2jLsggNxKXglnekUpXSq8faiqZgtHm2lsHCUuaPDTV6wuXHcCl8J1GQ5wLmPw==" 83 | }, 84 | "@date-io/date-fns": { 85 | "version": "2.10.0", 86 | "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.10.0.tgz", 87 | "integrity": "sha512-PxskpYmDAoL4BBGanoVD4SwhpMNFcVZFB8V2W7KATxgQ4m6Koy5FK9Qe1nKp8j9BERW310GT3sdERdNCXq8vuQ==", 88 | "requires": { 89 | "@date-io/core": "^2.10.0" 90 | } 91 | }, 92 | "@date-io/moment": { 93 | "version": "2.10.0", 94 | "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.10.0.tgz", 95 | "integrity": "sha512-RvmREFZbMBBUUPU8YqMjSkYewUk6rfxfnw5bR1mFtjyiSibfq2mR30ITo6lnqKk9SvpnorBI8fnmOu+g0hZC6g==", 96 | "requires": { 97 | "@date-io/core": "^2.10.0" 98 | } 99 | }, 100 | "commander": { 101 | "version": "2.20.3", 102 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 103 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 104 | }, 105 | "date-fns": { 106 | "version": "2.28.0", 107 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", 108 | "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", 109 | "peer": true 110 | }, 111 | "lodash": { 112 | "version": "4.17.20", 113 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 114 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 115 | }, 116 | "moment": { 117 | "version": "2.29.4", 118 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 119 | "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", 120 | "peer": true 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "renovate_tutorial", 3 | "version": "0.0.1", 4 | "description": "A simple package json for Renovate tutorial use only", 5 | "author": "Philip", 6 | "license": "Apache-2.0", 7 | "dependencies": { 8 | "commander": "2.20.3", 9 | "lodash": "4.17.20", 10 | "@date-io/date-fns": "2.10.0", 11 | "@date-io/moment": "2.10.0" 12 | } 13 | } 14 | --------------------------------------------------------------------------------