Skip to content

Commit

Permalink
chore: ensure * deps are hoisted (#6292)
Browse files Browse the repository at this point in the history
* chore: ensure * deps are hoisted

* ensure fresh package.json require
  • Loading branch information
runspired committed Aug 1, 2019
1 parent 4c809de commit 3b570d6
Show file tree
Hide file tree
Showing 9 changed files with 40 additions and 15 deletions.
24 changes: 22 additions & 2 deletions bin/sync-dev-dependency
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
const { shellSync } = require('execa');
const path = require('path');
const fs = require('fs');
const debug = require('debug')('sync-dev');
const semver = require('semver');

const projectRoot = path.resolve(__dirname, '../');
Expand All @@ -26,7 +27,7 @@ function execWithLog(command) {
}

// gather deps not yet in root
const rootPackage = require(rootJson);
let rootPackage = require(rootJson);
const rootUpdates = {};
const packageJsons = {};

Expand All @@ -47,20 +48,39 @@ packages.forEach(localName => {
const packageNames = Object.keys(pkg.devDependencies);

packageNames.forEach(name => {
debug(`checking devDependency "${name}"`);
if (!rootPackage.devDependencies[name]) {
if (
!rootUpdates[name] ||
(pkg.devDependencies[name] !== '*' && semver.lt(rootUpdates[name], pkg.devDependencies[name]))
) {
rootUpdates[name] = pkg.devDependencies[name];
debug(`devDependency "${name}" staged for root with version "${rootUpdates[name]}"`);
} else {
debug(`devDependency "${name}" was already staged for root with version "${rootUpdates[name]}"`);
}
} else {
debug(`devDependency "${name}" was already in root`);
}
});
}
});

// merge hoisted to root and write
if (Object.keys(rootUpdates) > 0) {
if (Object.keys(rootUpdates).length > 0) {
// sync deps that need us to find the latest version
Object.keys(rootUpdates).forEach(packageName => {
const version = rootUpdates[packageName];

if (version === '*') {
execWithLog(`yarn add ${packageName}@latest --dev -W`);
delete rootUpdates[packageName];
}
});
// grab latest in case we wrote in the previous step
delete require.cache[rootJson];
rootPackage = require(rootJson);
debug(`Adding staged devDependencies to root: ${JSON.stringify(rootUpdates, null, 2)}`);
Object.assign(rootPackage.devDependencies, rootUpdates);
fs.writeFileSync(rootJson, JSON.stringify(rootPackage, null, 2));
}
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,15 @@
"@types/qunit": "^2.5.3",
"@types/rsvp": "^4.0.2",
"babel-eslint": "^10.0.2",
"broccoli-asset-rev": "^3.0.0",
"broccoli-babel-transpiler": "^7.2.0",
"broccoli-concat": "^3.7.3",
"broccoli-stew": "^3.0.0",
"broccoli-string-replace": "^0.1.2",
"broccoli-test-helper": "^2.0.0",
"broccoli-uglify-sourcemap": "^3.0.0",
"chalk": "^2.4.1",
"co": "^4.6.0",
"command-line-args": "^5.1.1",
"common-tags": "^1.8.0",
"debug": "^4.1.1",
Expand All @@ -70,6 +72,8 @@
"ember-cli-typescript-blueprints": "^2.0.0-beta.1",
"ember-cli-uglify": "3.0.0",
"ember-cli-yuidoc": "^0.8.8",
"ember-compatibility-helpers": "^1.2.0",
"ember-decorators-polyfill": "^1.0.6",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.0",
"ember-load-initializers": "^2.0.0",
Expand Down Expand Up @@ -98,6 +102,7 @@
"rimraf": "^2.6.2",
"rsvp": "^4.8.5",
"semver": "^6.2.0",
"silent-error": "^1.1.1",
"typescript": "~3.5.3"
},
"bin": {
Expand All @@ -109,4 +114,4 @@
"engines": {
"node": ">= 8.0.0"
}
}
}
2 changes: 1 addition & 1 deletion packages/-build-infra/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"devDependencies": {
"broccoli-babel-transpiler": "^7.2.0",
"broccoli-test-helper": "^2.0.0",
"co": "*",
"co": "^4.6.0",
"common-tags": "^1.8.0"
},
"engines": {
Expand Down
4 changes: 2 additions & 2 deletions packages/adapter/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
},
"devDependencies": {
"@ember/optional-features": "^0.7.0",
"broccoli-asset-rev": "*",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "^3.10.1",
"ember-cli-blueprint-test-helpers": "^0.19.1",
"ember-cli-dependency-checker": "^3.2.0",
Expand All @@ -47,7 +47,7 @@
"ember-source-channel-url": "^2.0.1",
"ember-try": "^1.2.1",
"loader.js": "^4.7.0",
"silent-error": "*"
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/canary-features/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"devDependencies": {
"broccoli-babel-transpiler": "^7.2.0",
"broccoli-test-helper": "^2.0.0",
"co": "*",
"co": "^4.6.0",
"common-tags": "^1.8.0"
},
"engines": {
Expand Down
4 changes: 2 additions & 2 deletions packages/model/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
},
"devDependencies": {
"@ember/optional-features": "^0.7.0",
"broccoli-asset-rev": "*",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "^3.10.1",
"ember-cli-blueprint-test-helpers": "^0.19.1",
"ember-cli-dependency-checker": "^3.2.0",
Expand All @@ -51,7 +51,7 @@
"ember-source-channel-url": "^2.0.1",
"ember-try": "^1.2.1",
"loader.js": "^4.7.0",
"silent-error": "*"
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
Expand Down
4 changes: 2 additions & 2 deletions packages/serializer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
},
"devDependencies": {
"@ember/optional-features": "^0.7.0",
"broccoli-asset-rev": "*",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "^3.10.1",
"ember-cli-blueprint-test-helpers": "^0.19.1",
"ember-cli-dependency-checker": "^3.2.0",
Expand All @@ -49,7 +49,7 @@
"ember-source-channel-url": "^2.0.1",
"ember-try": "^1.2.1",
"loader.js": "^4.7.0",
"silent-error": "*"
"silent-error": "^1.1.1"
},
"engines": {
"node": ">= 8.0.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/store/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"@ember/optional-features": "^0.7.0",
"@types/ember": "^3.1.0",
"@types/rsvp": "^4.0.3",
"broccoli-asset-rev": "*",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "^3.10.1",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-htmlbars": "^3.1.0",
Expand Down
6 changes: 3 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3048,7 +3048,7 @@ broccoli-amd-funnel@^2.0.1:
broccoli-plugin "^1.3.0"
symlink-or-copy "^1.2.0"

broccoli-asset-rev@*:
broccoli-asset-rev@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/broccoli-asset-rev/-/broccoli-asset-rev-3.0.0.tgz#65a28c8a062d6ee2cffd91ed2a8309e0f8253ac6"
integrity sha512-gAHQZnwvtl74tGevUqGuWoyOdJUdMMv0TjGSMzbdyGImr9fZcnM6xmggDA8bUawrMto9NFi00ZtNUgA4dQiUBw==
Expand Down Expand Up @@ -4041,7 +4041,7 @@ clone@^2.0.0, clone@^2.1.2:
resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=

co@*, co@^4.6.0:
co@^4.6.0:
version "4.6.0"
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
Expand Down Expand Up @@ -10246,7 +10246,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=

silent-error@*, silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1.1:
silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/silent-error/-/silent-error-1.1.1.tgz#f72af5b0d73682a2ba1778b7e32cd8aa7c2d8662"
integrity sha512-n4iEKyNcg4v6/jpb3c0/iyH2G1nzUNl7Gpqtn/mHIJK9S/q/7MCfoO4rwVOoO59qPFIc0hVHvMbiOJ0NdtxKKw==
Expand Down

0 comments on commit 3b570d6

Please sign in to comment.