From f2b35d7628a8518675a0f895bb3953e95109507c Mon Sep 17 00:00:00 2001 From: "T. Kameyama" Date: Thu, 21 Mar 2024 03:38:22 +0900 Subject: [PATCH 1/3] style(rollup.config.js): run prettier formatting --- rollup.config.js | 73 ++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 43 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index bbedea7f..750adc12 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,29 +1,28 @@ -import babel from "@rollup/plugin-babel"; -import resolve from "@rollup/plugin-node-resolve"; -import replace from "@rollup/plugin-replace"; -import sourceMaps from "rollup-plugin-sourcemaps"; -import { terser } from "rollup-plugin-terser"; +import babel from '@rollup/plugin-babel' +import resolve from '@rollup/plugin-node-resolve' +import replace from '@rollup/plugin-replace' +import sourceMaps from 'rollup-plugin-sourcemaps' +import { terser } from 'rollup-plugin-terser' -const root = process.platform === "win32" ? path.resolve("/") : "/"; -const external = (id) => !id.startsWith(".") && !id.startsWith(root); +const root = process.platform === 'win32' ? path.resolve('/') : '/' +const external = id => !id.startsWith('.') && !id.startsWith(root) const globals = { - "@babel/runtime/helpers/esm/extends": "extends", - "@babel/runtime/helpers/esm/assertThisInitialized": "assertThisInitialized", - "@babel/runtime/helpers/esm/inheritsLoose": "inheritsLoose", - "@babel/runtime/helpers/esm/wrapNativeSuper": "wrapNativeSuper", - "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose": - "taggedTemplateLiteralLoose", -}; + '@babel/runtime/helpers/esm/extends': 'extends', + '@babel/runtime/helpers/esm/assertThisInitialized': 'assertThisInitialized', + '@babel/runtime/helpers/esm/inheritsLoose': 'inheritsLoose', + '@babel/runtime/helpers/esm/wrapNativeSuper': 'wrapNativeSuper', + '@babel/runtime/helpers/esm/taggedTemplateLiteralLoose': 'taggedTemplateLiteralLoose', +} -const input = "src/index.js"; -const name = "polished"; +const input = 'src/index.js' +const name = 'polished' const getBabelOptions = ({ useESModules }, targets) => ({ babelrc: false, babelHelpers: 'runtime', presets: [ [ - "@babel/preset-env", + '@babel/preset-env', { loose: true, modules: false, @@ -32,61 +31,49 @@ const getBabelOptions = ({ useESModules }, targets) => ({ bugfixes: true, }, ], - "@babel/flow", + '@babel/flow', ], plugins: [ - "add-module-exports", - "preval", - [ - "@babel/transform-runtime", - { useESModules }, - ">0.5%, not dead, ie >= 11, not op_mini all", - ], + 'add-module-exports', + 'preval', + ['@babel/transform-runtime', { useESModules }, '>0.5%, not dead, ie >= 11, not op_mini all'], ], -}); +}) export default [ { input, - output: { file: `dist/${name}.esm.js`, format: "esm" }, + output: { file: `dist/${name}.esm.js`, format: 'esm' }, external, - plugins: [ - sourceMaps(), - resolve(), - babel(getBabelOptions({ useESModules: true })), - ], + plugins: [sourceMaps(), resolve(), babel(getBabelOptions({ useESModules: true }))], }, { input, - output: { file: `dist/${name}.cjs.js`, format: "cjs" }, + output: { file: `dist/${name}.cjs.js`, format: 'cjs' }, external, - plugins: [ - sourceMaps(), - resolve(), - babel(getBabelOptions({ useESModules: false })), - ], + plugins: [sourceMaps(), resolve(), babel(getBabelOptions({ useESModules: false }))], }, { input, - output: { file: `dist/${name}.js`, format: "umd", name, globals }, + output: { file: `dist/${name}.js`, format: 'umd', name, globals }, external, plugins: [ sourceMaps(), resolve(), babel(getBabelOptions({ useESModules: true })), - replace({ "process.env.NODE_ENV": JSON.stringify("development") }), + replace({ 'process.env.NODE_ENV': JSON.stringify('development') }), ], }, { input, - output: { file: `dist/${name}.min.js`, format: "umd", name, globals }, + output: { file: `dist/${name}.min.js`, format: 'umd', name, globals }, external, plugins: [ sourceMaps(), resolve(), babel(getBabelOptions({ useESModules: true })), - replace({ "process.env.NODE_ENV": JSON.stringify("production") }), + replace({ 'process.env.NODE_ENV': JSON.stringify('production') }), terser(), ], }, -]; +] From d3b760f42f7e3c5e6b2efe1f842b551300f49b09 Mon Sep 17 00:00:00 2001 From: "T. Kameyama" Date: Thu, 21 Mar 2024 03:47:14 +0900 Subject: [PATCH 2/3] fix(rollup.config.js): explicitly import `node:path` module --- rollup.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/rollup.config.js b/rollup.config.js index 750adc12..11ff5ebd 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,3 +1,4 @@ +import path from 'node:path' import babel from '@rollup/plugin-babel' import resolve from '@rollup/plugin-node-resolve' import replace from '@rollup/plugin-replace' From 51db107a5fc19b550ba6681aa692263309c842d5 Mon Sep 17 00:00:00 2001 From: "T. Kameyama" Date: Thu, 21 Mar 2024 04:37:32 +0900 Subject: [PATCH 3/3] build(package.json, rollup.config.js): fix esm build to meet Node.js standard To meet Node.js standard, 2 things should be fixed: * ESM file should use `.mjs` extention instead of `.esm.js`. * `module` field in `package.json` is not standard way of Node.js. Use `exports` field instead. fix #649 --- package.json | 9 ++++++++- rollup.config.js | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a68f0e5b..c0bbfecd 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,15 @@ "colour" ], "main": "dist/polished.cjs.js", - "module": "dist/polished.esm.js", + "module": "dist/polished.mjs", "types": "lib/index.d.ts", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "import": "./dist/polished.mjs", + "default": "./dist/polished.cjs.js" + } + }, "sideEffects": false, "scripts": { "build": "yarn build:lib && yarn build:dist && yarn build:flow && yarn build:docs && yarn build:typescript", diff --git a/rollup.config.js b/rollup.config.js index 11ff5ebd..3fb27fa0 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -44,7 +44,7 @@ const getBabelOptions = ({ useESModules }, targets) => ({ export default [ { input, - output: { file: `dist/${name}.esm.js`, format: 'esm' }, + output: { file: `dist/${name}.mjs`, format: 'esm' }, external, plugins: [sourceMaps(), resolve(), babel(getBabelOptions({ useESModules: true }))], },