diff --git a/package.json b/package.json index c5058dc2aee..00066ca0d52 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,15 @@ "unlink-all": "node scripts/unlink-all.js packages", "check": "flow check", "lint": "eslint . && prettier \"./packages/*/*/{src,bin,test}/**/*.{js,json,md}\" --list-different && cargo fmt --all -- --check", - "prepublishOnly": "yarn build && yarn build-ts && node scripts/update-config-dependencies.js", + "prepublishOnly": "yarn build && yarn build-ts && yarn adjust-versions", "test:unit": "cross-env NODE_ENV=test mocha", "test:integration": "yarn workspace @parcel/integration-tests test", "test:integration-ci": "yarn workspace @parcel/integration-tests test-ci", "test": "yarn test:unit && yarn test:integration", "nightly:release": "lerna publish -y --canary --preid nightly --dist-tag=nightly --exact --force-publish=* --no-git-tag-version --no-push", - "tag:prerelease": "lerna version --exact --force-publish=* --no-git-tag-version --no-push && node scripts/update-config-dependencies.js", - "tag:release": "lerna version --force-publish=* --no-git-tag-version --no-push && node scripts/update-config-dependencies.js", + "tag:prerelease": "lerna version --exact --force-publish=* --no-git-tag-version --no-push && yarn adjust-versions", + "tag:release": "lerna version --force-publish=* --no-git-tag-version --no-push && yarn adjust-versions", + "adjust-versions": "node scripts/update-config-dependencies.js && node scripts/update-engines.j", "release": "lerna publish -y from-package --pre-dist-tag=next --no-git-tag-version --no-push", "prepare": "husky install" }, diff --git a/scripts/update-engines.js b/scripts/update-engines.js new file mode 100644 index 00000000000..5b3cd0f9384 --- /dev/null +++ b/scripts/update-engines.js @@ -0,0 +1,28 @@ +const fs = require('fs'); +const path = require('path'); +const exec = require('child_process').execSync; + +let packages = JSON.parse( + exec( + `${path.join(__dirname, '..', 'node_modules', '.bin', 'lerna')} ls --json`, + ), +); +let packageVersions = new Map( + packages.map(pkg => [ + pkg.name, + {version: pkg.version, location: pkg.location}, + ]), +); +let coreVersion = packageVersions.get('@parcel/core').version; +let coreRange = coreVersion.includes('nightly') + ? coreVersion + : `^${coreVersion}`; + +for (let [, {location}] of packageVersions) { + let pkgPath = path.join(location, 'package.json'); + let pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + if (pkg.engines?.parcel != null) { + pkg.engines.parcel = coreRange; + fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n'); + } +}