From db749cd94ddcbd20da5d29e4028576d4bcdbd120 Mon Sep 17 00:00:00 2001 From: Bert De Block Date: Tue, 20 Sep 2022 18:26:25 +0200 Subject: [PATCH] Add `ember-source` to `peerDependencies` in `addon` blueprint --- .../addon/additional-dev-dependencies.json | 8 -------- blueprints/addon/additional-package.json | 20 +++++++++++++++++++ blueprints/addon/index.js | 20 +++++-------------- dev/update-blueprint-dependencies.js | 2 +- tests/fixtures/addon/defaults/package.json | 3 +++ tests/fixtures/addon/yarn/package.json | 3 +++ tests/unit/blueprints/addon-test.js | 17 ++++++++++++++++ 7 files changed, 49 insertions(+), 24 deletions(-) delete mode 100644 blueprints/addon/additional-dev-dependencies.json create mode 100644 blueprints/addon/additional-package.json diff --git a/blueprints/addon/additional-dev-dependencies.json b/blueprints/addon/additional-dev-dependencies.json deleted file mode 100644 index 897398e6b9..0000000000 --- a/blueprints/addon/additional-dev-dependencies.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "devDependencies": { - "@embroider/test-setup": "^1.8.3", - "ember-disable-prototype-extensions": "^1.1.3", - "ember-try": "^2.0.0", - "ember-source-channel-url": "^3.0.0" - } -} diff --git a/blueprints/addon/additional-package.json b/blueprints/addon/additional-package.json new file mode 100644 index 0000000000..f0724ca55a --- /dev/null +++ b/blueprints/addon/additional-package.json @@ -0,0 +1,20 @@ +{ + "keywords": [ + "ember-addon" + ], + "scripts": { + "test:ember-compatibility": "ember try:each" + }, + "devDependencies": { + "@embroider/test-setup": "^1.8.3", + "ember-disable-prototype-extensions": "^1.1.3", + "ember-source-channel-url": "^3.0.0", + "ember-try": "^2.0.0" + }, + "peerDependencies": { + "ember-source": "^3.28.0 || ^4.0.0" + }, + "ember-addon": { + "configPath": "tests/dummy/config" + } +} diff --git a/blueprints/addon/index.js b/blueprints/addon/index.js index 2678f06c6d..98916b5f98 100644 --- a/blueprints/addon/index.js +++ b/blueprints/addon/index.js @@ -5,7 +5,7 @@ const path = require('path'); const walkSync = require('walk-sync'); const chalk = require('chalk'); const stringUtil = require('ember-cli-string-utils'); -const { uniq } = require('ember-cli-lodash-subset'); +const { merge, uniq } = require('ember-cli-lodash-subset'); const SilentError = require('silent-error'); const sortPackageJson = require('sort-package-json'); @@ -22,7 +22,7 @@ const replacers = { }, }; -const ADDITIONAL_DEV_DEPENDENCIES = require('./additional-dev-dependencies.json').devDependencies; +const ADDITIONAL_PACKAGE = require('./additional-package.json'); const description = 'The default blueprint for ember-cli addons.'; module.exports = { @@ -43,9 +43,9 @@ module.exports = { contents.name = stringUtil.dasherize(this.options.entity.name); contents.description = this.description; + delete contents.private; - contents.scripts = contents.scripts || {}; - contents.keywords = contents.keywords || []; + contents.dependencies = contents.dependencies || {}; contents.devDependencies = contents.devDependencies || {}; @@ -67,17 +67,7 @@ module.exports = { // 100% of addons don't need ember-cli-app-version, make it opt-in instead delete contents.devDependencies['ember-cli-app-version']; - if (contents.keywords.indexOf('ember-addon') === -1) { - contents.keywords.push('ember-addon'); - } - - Object.assign(contents.devDependencies, ADDITIONAL_DEV_DEPENDENCIES); - - // add `ember-compatibility` script in addons - contents.scripts['test:ember-compatibility'] = 'ember try:each'; - - contents['ember-addon'] = contents['ember-addon'] || {}; - contents['ember-addon'].configPath = 'tests/dummy/config'; + merge(contents, ADDITIONAL_PACKAGE); return stringifyAndNormalize(sortPackageJson(contents)); }, diff --git a/dev/update-blueprint-dependencies.js b/dev/update-blueprint-dependencies.js index a3b373ce17..d8a86ca723 100644 --- a/dev/update-blueprint-dependencies.js +++ b/dev/update-blueprint-dependencies.js @@ -43,7 +43,7 @@ const OPTIONS = nopt({ const PACKAGE_FILES = [ '../blueprints/app/files/package.json', - '../blueprints/addon/additional-dev-dependencies.json', + '../blueprints/addon/additional-package.json', '../tests/fixtures/app/defaults/package.json', '../tests/fixtures/app/npm/package.json', '../tests/fixtures/app/yarn/package.json', diff --git a/tests/fixtures/addon/defaults/package.json b/tests/fixtures/addon/defaults/package.json index bd74082b0c..037eec94fc 100644 --- a/tests/fixtures/addon/defaults/package.json +++ b/tests/fixtures/addon/defaults/package.json @@ -65,6 +65,9 @@ "qunit-dom": "^2.0.0", "webpack": "^5.74.0" }, + "peerDependencies": { + "ember-source": "^3.28.0 || ^4.0.0" + }, "engines": { "node": "14.* || 16.* || >= 18" }, diff --git a/tests/fixtures/addon/yarn/package.json b/tests/fixtures/addon/yarn/package.json index 4765f86ba8..cd5cc8de35 100644 --- a/tests/fixtures/addon/yarn/package.json +++ b/tests/fixtures/addon/yarn/package.json @@ -66,6 +66,9 @@ "qunit-dom": "^2.0.0", "webpack": "^5.74.0" }, + "peerDependencies": { + "ember-source": "^3.28.0 || ^4.0.0" + }, "engines": { "node": "14.* || 16.* || >= 18" }, diff --git a/tests/unit/blueprints/addon-test.js b/tests/unit/blueprints/addon-test.js index e0129e9a01..3472bdc057 100644 --- a/tests/unit/blueprints/addon-test.js +++ b/tests/unit/blueprints/addon-test.js @@ -184,6 +184,23 @@ describe('blueprint - addon', function () { expect(json.dependencies).to.deep.equal({ a: '1', b: '1' }); expect(json.devDependencies).to.deep.equal({ a: '1', b: '1' }); }); + + it('adds `ember-source` to `peerDependencies`', function () { + let output = blueprint.updatePackageJson( + JSON.stringify({ + peerDependencies: { + 'foo-bar': '^1.0.0', + }, + }) + ); + + let json = JSON.parse(output); + + expect(json.peerDependencies).to.deep.equal({ + 'ember-source': '^3.28.0 || ^4.0.0', + 'foo-bar': '^1.0.0', + }); + }); }); }); });