From 269ad57fdd69083949a6b46e3ba3ae8b619d333b Mon Sep 17 00:00:00 2001 From: Thomas Allmer Date: Tue, 15 Jun 2021 18:05:21 +0200 Subject: [PATCH] feat(extend-lion-docs): setting json filename containing the export map --- .../src/generateExtendDocsConfig.js | 4 +- .../@lion/accordion/exports.json | 55 +++++++++++++++++++ .../export-map-json/@lion/accordion/index.js | 1 + .../@lion/accordion/lion-accordion.js | 3 + .../@lion/accordion/src/LionAccordion.js | 1 + .../generateExtendDocsConfig.test.js | 36 ++++++++++++ 6 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/exports.json create mode 100644 packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/index.js create mode 100644 packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/lion-accordion.js create mode 100644 packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/src/LionAccordion.js diff --git a/packages-node/rocket-preset-extend-lion-docs/src/generateExtendDocsConfig.js b/packages-node/rocket-preset-extend-lion-docs/src/generateExtendDocsConfig.js index e4b809dc6..4485ff167 100644 --- a/packages-node/rocket-preset-extend-lion-docs/src/generateExtendDocsConfig.js +++ b/packages-node/rocket-preset-extend-lion-docs/src/generateExtendDocsConfig.js @@ -118,6 +118,7 @@ function generateTagChange({ * @param {string} opts.classBareImport * @param {string} opts.tagPrefix * @param {string} opts.tagBareImport + * @param {string} [opts.exportsMapJsonFileName] * @returns */ export async function generateExtendDocsConfig({ @@ -127,6 +128,7 @@ export async function generateExtendDocsConfig({ classBareImport, tagPrefix, tagBareImport, + exportsMapJsonFileName = 'package.json', }) { const _nodeModulesDir = nodeModulesDir || path.resolve('./node_modules'); await init; @@ -141,7 +143,7 @@ export async function generateExtendDocsConfig({ const changes = []; for (const pkgName of packages) { const pkgPath = path.join(_nodeModulesDir, ...pkgName.split('/')); - const pkgJsonPath = path.join(pkgPath, 'package.json'); + const pkgJsonPath = path.join(pkgPath, exportsMapJsonFileName); const pkgJsonString = await fs.promises.readFile(pkgJsonPath, 'utf8'); const pkgJson = JSON.parse(pkgJsonString); const pkgExports = pkgJson.exports; diff --git a/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/exports.json b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/exports.json new file mode 100644 index 000000000..3bf148c89 --- /dev/null +++ b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/exports.json @@ -0,0 +1,55 @@ +{ + "name": "@lion/accordion", + "version": "0.5.0", + "description": "Vertically stacked list of invokers that can be clicked to reveal or hide content associated with them.", + "license": "MIT", + "author": "ing-bank", + "homepage": "https://github.com/ing-bank/lion/", + "repository": { + "type": "git", + "url": "https://github.com/ing-bank/lion.git", + "directory": "packages/accordion" + }, + "main": "index.js", + "module": "index.js", + "files": [ + "*.d.ts", + "*.js", + "custom-elements.json", + "docs", + "src", + "test", + "test-helpers", + "translations", + "types" + ], + "scripts": { + "custom-elements-manifest": "custom-elements-manifest analyze --litelement --exclude \"docs/**/*\" \"test-helpers/**/*\"", + "debug": "cd ../../ && npm run debug -- --group accordion", + "debug:firefox": "cd ../../ && npm run debug:firefox -- --group accordion", + "debug:webkit": "cd ../../ && npm run debug:webkit -- --group accordion", + "publish-docs": "node ../../packages-node/publish-docs/src/cli.js --github-url https://github.com/ing-bank/lion/ --git-root-dir ../../", + "prepublishOnly": "npm run publish-docs && npm run custom-elements-manifest", + "test": "cd ../../ && npm run test:browser -- --group accordion" + }, + "sideEffects": [ + "lion-accordion.js" + ], + "dependencies": { + "@lion/core": "0.17.0" + }, + "keywords": [ + "accordion", + "lion", + "web-components" + ], + "publishConfig": { + "access": "public" + }, + "customElementsManifest": "custom-elements.json", + "exports": { + ".": "./index.js", + "./define": "./lion-accordion.js", + "./docs/": "./docs/" + } +} diff --git a/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/index.js b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/index.js new file mode 100644 index 000000000..275dd49aa --- /dev/null +++ b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/index.js @@ -0,0 +1 @@ +export { LionAccordion } from './src/LionAccordion.js'; diff --git a/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/lion-accordion.js b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/lion-accordion.js new file mode 100644 index 000000000..b113c589d --- /dev/null +++ b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/lion-accordion.js @@ -0,0 +1,3 @@ +import { LionAccordion } from './src/LionAccordion.js'; + +customElements.define('lion-accordion', LionAccordion); diff --git a/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/src/LionAccordion.js b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/src/LionAccordion.js new file mode 100644 index 000000000..e903aa9f7 --- /dev/null +++ b/packages-node/rocket-preset-extend-lion-docs/test-node/fixtures/export-map-json/@lion/accordion/src/LionAccordion.js @@ -0,0 +1 @@ +export class LionAccordion extends HTMLElement {} diff --git a/packages-node/rocket-preset-extend-lion-docs/test-node/generateExtendDocsConfig.test.js b/packages-node/rocket-preset-extend-lion-docs/test-node/generateExtendDocsConfig.test.js index 5e8a894b7..fa8611dc3 100644 --- a/packages-node/rocket-preset-extend-lion-docs/test-node/generateExtendDocsConfig.test.js +++ b/packages-node/rocket-preset-extend-lion-docs/test-node/generateExtendDocsConfig.test.js @@ -17,6 +17,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); * @param {string} [options.classBareImport] * @param {string} [options.tagPrefix] * @param {string} [options.tagBareImport] + * @param {string} [options.exportsMapJsonFileName] * @returns */ async function execute(input, options = {}) { @@ -74,6 +75,41 @@ describe('generateExtendDocsConfig', () => { ]); }); + it('can configure the name of the json file that contains the export map', async () => { + const result = await execute('fixtures/export-map-json', { + exportsMapJsonFileName: 'exports.json', + }); + + expect(result).to.deep.equal([ + { + name: '@lion/accordion - LionAccordion', + variable: { + from: 'LionAccordion', + to: 'IngAccordion', + paths: [ + { + from: '@lion/accordion', + to: 'ing-web/accordion', + }, + ], + }, + }, + { + name: '@lion/accordion/define', + tag: { + from: 'lion-accordion', + to: 'ing-accordion', + paths: [ + { + from: '@lion/accordion/define', + to: '#accordion/define', + }, + ], + }, + }, + ]); + }); + it('works if there is no npm scope sub folder', async () => { const result = await execute('fixtures/no-node-modules-scope-folder', { npmScope: '',