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..c5de4ba33 100755 --- a/packages/json/package.json +++ b/packages/json/package.json @@ -13,8 +13,15 @@ "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": { + "require": "./dist/cjs/index.js", + "import": "./dist/es/index.js" + }, + "engines": { + "node": ">=14.0.0" + }, "scripts": { "build": "rollup -c", "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", @@ -30,7 +37,7 @@ "test:ts": "tsc types/index.d.ts test/types.ts --noEmit" }, "files": [ - "dist", + "dist/**/*.{js,json}", "types", "README.md", "LICENSE" @@ -44,22 +51,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", "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 f0cb40dad..340f51089 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -337,16 +337,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: @@ -2041,6 +2041,18 @@ packages: rollup: 2.79.1 dev: true + /@rollup/plugin-buble/0.21.3_rollup@3.0.0-7: + resolution: {integrity: sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@3.0.0-7 + '@types/buble': 0.19.2 + buble: 0.20.0 + rollup: 3.0.0-7 + dev: true + /@rollup/plugin-commonjs/11.1.0_rollup@2.79.1: resolution: {integrity: sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==} engines: {node: '>= 8.0.0'} @@ -2128,6 +2140,21 @@ packages: rollup: 2.79.1 dev: true + /@rollup/plugin-node-resolve/14.1.0_rollup@3.0.0-7: + resolution: {integrity: sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.78.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@3.0.0-7 + '@types/resolve': 1.17.1 + deepmerge: 4.2.2 + is-builtin-module: 3.2.0 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 3.0.0-7 + dev: true + /@rollup/plugin-node-resolve/8.4.0_rollup@2.67.3: resolution: {integrity: sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==} engines: {node: '>= 8.0.0'} @@ -2290,6 +2317,18 @@ packages: picomatch: 2.3.1 rollup: 2.79.1 + /@rollup/pluginutils/3.1.0_rollup@3.0.0-7: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 3.0.0-7 + dev: true + /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -7162,6 +7201,14 @@ packages: optionalDependencies: fsevents: 2.3.2 + /rollup/3.0.0-7: + resolution: {integrity: sha512-Hq5hpq9IrR4YfGd4o4zDtsfZnkwoCpjrQ4ZQIZrVF4ryzW6FOgXKBm6N7vJfodIJ6v+51FsqsXD2bxW5wapiuA==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: diff --git a/shared/rollup.config.mjs b/shared/rollup.config.mjs index 377390a95..3df34eb9b 100644 --- a/shared/rollup.config.mjs +++ b/shared/rollup.config.mjs @@ -23,14 +23,14 @@ export function createConfig({ pkg, external = [] }) { output: [ { format: 'cjs', - file: pkg.main, + file: pkg.exports.require, exports: 'named', footer: 'module.exports = Object.assign(exports.default, exports);', sourcemap: true }, { format: 'es', - file: pkg.module, + file: pkg.exports.import, plugins: [emitModulePackageFile()], sourcemap: true } diff --git a/tsconfig.base.json b/tsconfig.base.json index 63da44c4e..a198903e5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,7 +12,7 @@ "pretty": true, "sourceMap": true, "strict": true, - "target": "es2017" + "target": "es2019" }, "exclude": ["dist", "node_modules", "test/types"] }