From 5da5d30aadc6215a7c82465fd215ae5a59d39475 Mon Sep 17 00:00:00 2001 From: Jani Kraner Date: Mon, 5 Mar 2018 12:38:24 +0000 Subject: [PATCH 1/3] Add check for any new component's package.json If a new component has been added to src it needs a package.json file when it gets copied to packages/ We use to do this manually and our tests that run after `build:packages` task would fail. With this script, when `npm run pre-release` is run, the script will check if any new folders exist in packages after the copy task. If so, it will create a sample package.json file with actual component name, version 0.0.0 and latest version of globals as dependency. It will also remind the developer to amend ALL/package.json file with new dependencies. When developer indicates they have done the above, the script will and the rest of the `npm run pre-release` tasks will run. --- bin/check-and-create-package-json.sh | 46 ++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 bin/check-and-create-package-json.sh diff --git a/bin/check-and-create-package-json.sh b/bin/check-and-create-package-json.sh new file mode 100755 index 0000000000..c903cb39a5 --- /dev/null +++ b/bin/check-and-create-package-json.sh @@ -0,0 +1,46 @@ +#!/bin/sh +set -e + +PACKAGES_DIR="./packages/"; + +# assume there are no new components +ALL_PACKAGE_JSON_FILES_PRESENT=true; + +# function to create a sample package.json +# and add latest published version of globals as dependency (as it's most common) +create_package_json() +{ + GLOBALS_PACKAGE_VERSION=$(node -p "require('./packages/globals/package.json').version") + PACKAGE_JSON=' + { + "name": "@govuk-frontend/'${D##*/}'", + "version": "0.0.0", + "dependencies": { + "@govuk-frontend/globals": "'$GLOBALS_PACKAGE_VERSION'" + } + }' + + # create a package.json file + echo "$PACKAGE_JSON" >> "${D}/package.json" +} + + +# check in all folders inside /packages to see if any new components have been added +for D in $PACKAGES_DIR*; do + if [ -d "${D}" ]; then + # if there are new folders (components then they will be missing package.json) + ALL_PACKAGE_JSON_FILES_PRESENT=false + + if ! [ -e ${D}/package.json ]; then + # ${D##*/} strips everything before / + COMPONENT_NAME=${D##*/} + echo "⚠️ 🆕 $COMPONENT_NAME 🆕 component is missing a package.json file.\n" + echo "⚠️ I've created a sample package.json file. Please amended it with correct data.\n" + + create_package_json ${D} + + echo "⚠️ Remember to add the 🆕 $COMPONENT_NAME 🆕 component to all/package.json\n" + read -n 1 -s -r -p "Once done, come back and press any key to continue: " + fi + fi +done diff --git a/package.json b/package.json index 0d8edd42d8..cd833af2d4 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "heroku": "gulp copy-assets && node app/app.js", "pre-release": "node bin/check-nvmrc.js && ./bin/pre-release.sh", "release": "node bin/check-nvmrc.js && ./bin/release.sh", - "build:packages": "node bin/check-nvmrc.js && gulp build:packages --destination 'packages' && npm run test:build:packages", + "build:packages": "node bin/check-nvmrc.js && gulp build:packages --destination 'packages' && ./bin/check-and-create-package-json.sh && npm run test:build:packages", "build:dist": "node bin/check-nvmrc.js && gulp build:dist --destination 'dist' && npm run test:build:dist", "test": "standard && gulp test && npm run test:app && npm run test:components && npm run test:generate:readme", "test:app": "jest app/__tests__/app.test.js --forceExit # express server fails to end process", From 9b7795539b686bd3d86f94ad3b1dd6451df2ebe2 Mon Sep 17 00:00:00 2001 From: Jani Kraner Date: Mon, 5 Mar 2018 15:12:58 +0000 Subject: [PATCH 2/3] Update publishing docs to document updated flow --- docs/img/new-component-prompt.png | Bin 0 -> 45516 bytes docs/publishing.md | 36 +++++++++--------------------- 2 files changed, 11 insertions(+), 25 deletions(-) create mode 100644 docs/img/new-component-prompt.png diff --git a/docs/img/new-component-prompt.png b/docs/img/new-component-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..937581b3dd8a8502e62c6de6d8c24b3706492828 GIT binary patch literal 45516 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 literal 0 HcmV?d00001 diff --git a/docs/publishing.md b/docs/publishing.md index f5c1733156..f019991861 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -16,8 +16,6 @@ version bumped. Run `chmod u+x **/*.sh` which will give the permission to all shell scripts in the current directory.* -**If you have a new component to add, follow [these](#adding-a-new-component) steps** - 1. Create a new branch that's up to date with master and: 2. Update `CHANGELOG` version heading with the next version number. @@ -26,6 +24,16 @@ scripts in the current directory.* This will: - run `npm build:packages` that copies any changes from`src/component-name` to `packages/component-name` and runs `after-build-packages.test.js` test to ensure the contents of `packages` matches `src`. + + +If you have a new component was added to `src` and copied over to `packages` in the above task, then then script will detect those components, notify the developer, create a sample `package.json` file for each. + +It will reminnd the developer to check the version number, dependencies and add new components to `all/package.json` dependencies. + +It will also prompt the develoeper to signal to the scipt once changes have been made, so that the rest of the `npm run pre-release` tasks can run.** +![New component added](./img/new-component-prompt.png) + + - run `lerna publish --skip-git --skip-npm` which will check for updated packages and suggest a version for each as seen below. Lerna will prompt you to select the new version for each package. If you @@ -60,31 +68,9 @@ scripts in the current directory.* 6. Create a release in Github interface, ddd release notes to and attach the ZIP. 7. Add Trello cards to "This Sprint" column for - - updating GOV.UK Design System to use the latest release + - updating GOV.UK Design System to use the latest releasex - updating the Prototype Kit to use the latest release -#### Adding a new component - -1. In Frontend, for any new components inside `/packages`, add a `package.json` -inside `packages/component-name`: -``` -{ - "name": "@govuk-frontend/component-name", - "version": "0.0.21-alpha", - "dependencies": { - "@govuk-frontend/globals": "version-number" - } -} -``` - -2. Include new components in `packages/all/package.json` with blank version -numbers. Do not update the version numbers of existing packages manually here, -Lerna will do this as part of `lerna publish`. - -3. Commit changes made so far -``` -git add packages/* -f -git commit -m "chore(packages): added to packages" ``` #### Test published packages From e3ce1e085e5ef9fbde76c575f538e28ef8902b4e Mon Sep 17 00:00:00 2001 From: Jani Kraner Date: Mon, 5 Mar 2018 15:23:23 +0000 Subject: [PATCH 3/3] Document in CHANGELOG --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26e6201c7e..e4cd81616e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ Note: We're not following semantic versioning yet, we are going to talk about this soon. +## Unreleased + +Internal: + +- Update pre-release step to check for new components +(PR [#574](https://github.com/alphagov/govuk-frontend/pull/574)) + ## 0.0.25-alpha (Breaking release) Breaking changes: