diff --git a/packages/json/README.md b/packages/json/README.md index d5a4e9d9a..3767d5307 100644 --- a/packages/json/README.md +++ b/packages/json/README.md @@ -13,7 +13,7 @@ ## Requirements -This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v8.0.0+) and Rollup v1.20.0+. +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v1.20.0+. ## Install @@ -46,7 +46,9 @@ With an accompanying file `src/index.js`, the local `package.json` file would no ```js // src/index.js -import pkg from './package.json'; +import { readFileSync } from 'fs'; + +const pkg = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8')); console.log(`running version ${pkg.version}`); ``` diff --git a/packages/json/package.json b/packages/json/package.json index 681e38cf4..a87688679 100755 --- a/packages/json/package.json +++ b/packages/json/package.json @@ -13,8 +13,16 @@ "author": "rollup", "homepage": "https://github.com/rollup/plugins/tree/master/packages/json#readme", "bugs": "https://github.com/rollup/plugins/issues", - "main": "dist/index.js", - "module": "dist/index.es.js", + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + "types": "./types/index.d.ts", + "import": "./dist/es/index.js", + "default": "./dist/cjs/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, "scripts": { "build": "rollup -c", "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", @@ -31,6 +39,7 @@ }, "files": [ "dist", + "!dist/**/*.map", "types", "README.md", "LICENSE" @@ -44,22 +53,25 @@ "modules" ], "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } }, "dependencies": { - "@rollup/pluginutils": "^3.0.8" + "@rollup/pluginutils": "^4.2.1" }, "devDependencies": { "@rollup/plugin-buble": "^0.21.0", - "@rollup/plugin-node-resolve": "^8.4.0", - "rollup": "^2.67.3", - "source-map-support": "^0.5.19" + "@rollup/plugin-node-resolve": "^14.1.0", + "rollup": "^3.0.0-7", + "source-map-support": "^0.5.21" }, - "types": "types/index.d.ts", + "types": "./types/index.d.ts", "ava": { - "babel": { - "compileEnhancements": false - }, + "workerThreads": false, "files": [ "!**/fixtures/**", "!**/helpers/**", diff --git a/packages/json/rollup.config.js b/packages/json/rollup.config.js deleted file mode 100755 index e7b3f0332..000000000 --- a/packages/json/rollup.config.js +++ /dev/null @@ -1,15 +0,0 @@ -import buble from '@rollup/plugin-buble'; - -const pkg = require('./package.json'); - -const external = Object.keys(pkg.dependencies); - -export default { - input: 'src/index.js', - output: [ - { file: pkg.main, format: 'cjs', sourcemap: true, exports: 'auto' }, - { file: pkg.module, format: 'es', sourcemap: true } - ], - plugins: [buble()], - external -}; diff --git a/packages/json/rollup.config.mjs b/packages/json/rollup.config.mjs new file mode 100755 index 000000000..888000cd3 --- /dev/null +++ b/packages/json/rollup.config.mjs @@ -0,0 +1,13 @@ +import { readFileSync } from 'fs'; + +import buble from '@rollup/plugin-buble'; + +import { createConfig } from '../../shared/rollup.config.mjs'; + +export default { + ...createConfig({ + pkg: JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8')) + }), + input: 'src/index.js', + plugins: [buble()] +}; diff --git a/packages/json/test/snapshots/test.js.md b/packages/json/test/snapshots/test.js.md index 1f57e090b..7485f0277 100644 --- a/packages/json/test/snapshots/test.js.md +++ b/packages/json/test/snapshots/test.js.md @@ -2,41 +2,17 @@ The actual snapshot is saved in `test.js.snap`. -Generated by [AVA](https://ava.li). +Generated by [AVA](https://avajs.dev). -## generates correct code with compact=true - -> Snapshot 1 - - 'export var validKey=true;export var nested={subKey:"ok"};export var array=[1,"2"];export default{validKey:validKey,"invalid-key":1,nested:nested,array:array,"function":"not used","null":null};' - -## generates correct code with namedExports=false - -> Snapshot 1 - - `export default {␊ - validKey: true,␊ - "invalid-key": 1,␊ - nested: {␊ - subKey: "ok"␊ - },␊ - array: [␊ - 1,␊ - "2"␊ - ],␊ - "function": "not used",␊ - "null": null␊ - };` - -## generates correct code with preferConst +## generates properly formatted code > Snapshot 1 - `export const validKey = true;␊ - export const nested = {␊ + `export var validKey = true;␊ + export var nested = {␊ subKey: "ok"␊ };␊ - export const array = [␊ + export var array = [␊ 1,␊ "2"␊ ];␊ @@ -50,15 +26,15 @@ Generated by [AVA](https://ava.li). };␊ ` -## generates properly formatted code +## generates correct code with preferConst > Snapshot 1 - `export var validKey = true;␊ - export var nested = {␊ + `export const validKey = true;␊ + export const nested = {␊ subKey: "ok"␊ };␊ - export var array = [␊ + export const array = [␊ 1,␊ "2"␊ ];␊ @@ -93,3 +69,27 @@ Generated by [AVA](https://ava.li). "null": null␊ };␊ ` + +## generates correct code with compact=true + +> Snapshot 1 + + 'export var validKey=true;export var nested={subKey:"ok"};export var array=[1,"2"];export default{validKey:validKey,"invalid-key":1,nested:nested,array:array,"function":"not used","null":null};' + +## generates correct code with namedExports=false + +> Snapshot 1 + + `export default {␊ + validKey: true,␊ + "invalid-key": 1,␊ + nested: {␊ + subKey: "ok"␊ + },␊ + array: [␊ + 1,␊ + "2"␊ + ],␊ + "function": "not used",␊ + "null": null␊ + };` diff --git a/packages/json/test/snapshots/test.js.snap b/packages/json/test/snapshots/test.js.snap index b30f1451f..6762a647c 100644 Binary files a/packages/json/test/snapshots/test.js.snap and b/packages/json/test/snapshots/test.js.snap differ diff --git a/packages/json/test/test.js b/packages/json/test/test.js index fab9181bc..95ce01d33 100755 --- a/packages/json/test/test.js +++ b/packages/json/test/test.js @@ -48,7 +48,7 @@ test('generates named exports', async (t) => { plugins: [json()] }); - const { code, result } = await testBundle(t, bundle, { exports: {} }); + const { code, result } = await testBundle(t, bundle, { inject: { exports: {} } }); t.is(result.version, '1.33.7'); t.is(code.indexOf('this-should-be-excluded'), -1, 'should exclude unused properties'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da125ece0..74fd3e235 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -188,7 +188,7 @@ importers: estree-walker: 2.0.2 glob: 8.0.3 is-reference: 1.2.1 - magic-string: 0.26.4 + magic-string: 0.26.7 devDependencies: '@rollup/plugin-json': 4.1.0_rollup@3.0.0-7 '@rollup/plugin-node-resolve': 14.1.0_rollup@3.0.0-7 @@ -243,7 +243,7 @@ importers: '@rollup/pluginutils': 4.2.1 estree-walker: 2.0.2 fast-glob: 3.2.12 - magic-string: 0.26.4 + magic-string: 0.26.7 devDependencies: acorn: 8.8.0 prettier: 2.7.1 @@ -324,7 +324,7 @@ importers: dependencies: '@rollup/pluginutils': 4.2.1 estree-walker: 2.0.2 - magic-string: 0.26.4 + magic-string: 0.26.7 devDependencies: '@rollup/plugin-buble': 0.21.3_rollup@3.0.0-7 del-cli: 5.0.0 @@ -336,16 +336,16 @@ importers: packages/json: specifiers: '@rollup/plugin-buble': ^0.21.0 - '@rollup/plugin-node-resolve': ^8.4.0 - '@rollup/pluginutils': ^3.0.8 - rollup: ^2.67.3 - source-map-support: ^0.5.19 + '@rollup/plugin-node-resolve': ^14.1.0 + '@rollup/pluginutils': ^4.2.1 + rollup: ^3.0.0-7 + source-map-support: ^0.5.21 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 4.2.1 devDependencies: - '@rollup/plugin-buble': 0.21.3_rollup@2.79.1 - '@rollup/plugin-node-resolve': 8.4.0_rollup@2.79.1 - rollup: 2.79.1 + '@rollup/plugin-buble': 0.21.3_rollup@3.0.0-7 + '@rollup/plugin-node-resolve': 14.1.0_rollup@3.0.0-7 + rollup: 3.0.0-7 source-map-support: 0.5.21 packages/legacy: @@ -5388,8 +5388,8 @@ packages: dependencies: sourcemap-codec: 1.4.8 - /magic-string/0.26.4: - resolution: {integrity: sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==} + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8