From 181b556aa4d9e7c9f7a7e9303b41292e86e19b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Mon, 14 Nov 2022 09:23:27 +0100 Subject: [PATCH] [core] Convert scripts to ES modules (#35036) --- .circleci/config.yml | 8 ++++---- .eslintrc.js | 7 +++++++ .mocharc.js | 2 +- package.json | 14 ++++++------- packages/mui-base/package.json | 12 +++++------ packages/mui-codemod/package.json | 2 +- .../mui-core-downloads-tracker/package.json | 2 +- packages/mui-docs/package.json | 8 ++++---- packages/mui-icons-material/package.json | 6 +++--- packages/mui-joy/package.json | 10 +++++----- packages/mui-lab/package.json | 12 +++++------ packages/mui-material-next/package.json | 10 +++++----- packages/mui-material/package.json | 12 +++++------ packages/mui-private-theming/package.json | 10 +++++----- packages/mui-styled-engine-sc/package.json | 10 +++++----- packages/mui-styled-engine/package.json | 10 +++++----- packages/mui-styles/package.json | 10 +++++----- packages/mui-system/package.json | 12 +++++------ packages/mui-types/package.json | 2 +- packages/mui-utils/package.json | 12 +++++------ scripts/{build.js => build.mjs} | 15 +++++++------- scripts/{buildTypes.js => buildTypes.mjs} | 16 +++++++-------- scripts/{copy-files.js => copyFiles.mjs} | 6 +++--- scripts/{deduplicate.js => deduplicate.mjs} | 13 ++++++------ scripts/{jsonlint.js => jsonlint.mjs} | 11 +++++----- ...stChangedFiles.js => listChangedFiles.mjs} | 6 +++--- ...iles.test.js => listChangedFiles.test.mjs} | 10 +++++----- scripts/{prettier.js => prettier.mjs} | 20 +++++++++---------- scripts/{pushArgos.js => pushArgos.mjs} | 10 +++++----- ...leaseChangelog.js => releaseChangelog.mjs} | 10 +++++----- scripts/{releaseTag.js => releaseTag.mjs} | 15 +++++++------- .../{testBuiltTypes.js => testBuiltTypes.mjs} | 9 +++++---- ...e-react-version.js => useReactVersion.mjs} | 13 ++++++------ ...t-dist-tag.js => useTypescriptDistTag.mjs} | 13 ++++++------ scripts/utils.mjs | 12 +++++++++++ test/README.md | 2 +- test/karma.conf.js | 6 +++--- 37 files changed, 192 insertions(+), 166 deletions(-) rename scripts/{build.js => build.mjs} (91%) rename scripts/{buildTypes.js => buildTypes.mjs} (95%) rename scripts/{copy-files.js => copyFiles.mjs} (98%) rename scripts/{deduplicate.js => deduplicate.mjs} (75%) rename scripts/{jsonlint.js => jsonlint.mjs} (85%) rename scripts/{listChangedFiles.js => listChangedFiles.mjs} (89%) rename scripts/{listChangedFiles.test.js => listChangedFiles.test.mjs} (88%) rename scripts/{prettier.js => prettier.mjs} (91%) rename scripts/{pushArgos.js => pushArgos.mjs} (85%) rename scripts/{releaseChangelog.js => releaseChangelog.mjs} (97%) rename scripts/{releaseTag.js => releaseTag.mjs} (91%) rename scripts/{testBuiltTypes.js => testBuiltTypes.mjs} (84%) rename scripts/{use-react-version.js => useReactVersion.mjs} (93%) rename scripts/{use-typescript-dist-tag.js => useTypescriptDistTag.mjs} (85%) create mode 100644 scripts/utils.mjs diff --git a/.circleci/config.yml b/.circleci/config.yml index e9cdfbe8937273..197a61b10fdeb1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -72,7 +72,7 @@ commands: - run: name: Resolve react version command: | - node scripts/use-react-version + node scripts/useReactVersion.mjs # log a patch for maintainers who want to check out this change git --no-pager diff HEAD - restore_cache: @@ -286,7 +286,7 @@ jobs: - run: name: Any defect declaration files? - command: node scripts/testBuiltTypes.js + command: node scripts/testBuiltTypes.mjs - save_cache: name: Save generated declaration files key: typescript-declaration-files-{{ .Branch }}-{{ .Revision }} @@ -305,7 +305,7 @@ jobs: environment: TYPESCRIPT_DIST_TAG: next command: | - node scripts/use-typescript-dist-tag + node scripts/useTypescriptDistTag.mjs # log a patch for maintainers who want to check out this change git --no-pager diff HEAD - install_js @@ -342,7 +342,7 @@ jobs: # Fixing these takes some effort that isn't viable to merge in a single PR. # We'll simply monitor them for now. set +e - node scripts/testBuiltTypes.js + node scripts/testBuiltTypes.mjs exit 0 test_browser: <<: *defaults diff --git a/.eslintrc.js b/.eslintrc.js index 688076416ba460..69c22f8dab78b4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -177,6 +177,7 @@ module.exports = { files: [ // matching the pattern of the test runner '*.test.js', + '*.test.mjs', '*.test.ts', '*.test.tsx', ], @@ -407,5 +408,11 @@ module.exports = { 'import/extensions': ['error', 'ignorePackages'], }, }, + { + files: ['scripts/**/*.mjs'], + rules: { + 'import/extensions': ['error', 'ignorePackages'], + }, + }, ], }; diff --git a/.mocharc.js b/.mocharc.js index 1dc7bc11439562..83a5c747ad403f 100644 --- a/.mocharc.js +++ b/.mocharc.js @@ -1,5 +1,5 @@ module.exports = { - extension: ['js', 'ts', 'tsx'], + extension: ['js', 'mjs', 'ts', 'tsx'], ignore: [ '**/build/**', '**/node_modules/**', diff --git a/package.json b/package.json index 77bb97104c8bef..39ad0dd85b898b 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,15 @@ "private": true, "scripts": { "proptypes": "cross-env BABEL_ENV=development babel-node --extensions \".tsx,.ts,.js\" ./scripts/generateProptypes.ts", - "deduplicate": "node scripts/deduplicate.js", + "deduplicate": "node scripts/deduplicate.mjs", "benchmark:browser": "yarn workspace benchmark browser", "build:codesandbox": "lerna run --parallel --scope \"@mui/*\" build", "release:version": "lerna version --no-changelog --no-push --no-git-tag-version --force-publish=@mui/core-downloads-tracker", "release:build": "lerna run --parallel --scope \"@mui/*\" build", - "release:changelog": "node scripts/releaseChangelog", + "release:changelog": "node scripts/releaseChangelog.mjs", "release:publish": "lerna publish from-package --dist-tag latest --contents build", "release:publish:dry-run": "lerna publish from-package --dist-tag latest --contents build --registry=\"http://localhost:4873/\"", - "release:tag": "node scripts/releaseTag", + "release:tag": "node scripts/releaseTag.mjs", "docs:api": "rimraf ./docs/pages/**/api-docs ./docs/pages/**/api && yarn docs:api:build", "docs:api:build": "cross-env BABEL_ENV=development __NEXT_EXPORT_TRAILING_SLASH=true babel-node --extensions \".tsx,.ts,.js\" ./docs/scripts/buildApi.ts", "docs:build": "yarn workspace docs build", @@ -34,13 +34,13 @@ "extract-error-codes": "cross-env MUI_EXTRACT_ERROR_CODES=true lerna run --parallel build:modern", "template:screenshot": "cross-env BABEL_ENV=development babel-node --extensions \".tsx,.ts,.js\" ./docs/scripts/generateTemplateScreenshots", "install:codesandbox": "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 yarn install --ignore-engines", - "jsonlint": "node ./scripts/jsonlint.js", + "jsonlint": "node ./scripts/jsonlint.mjs", "lint": "eslint . --cache --report-unused-disable-directives --ext .js,.ts,.tsx --max-warnings 0", "lint:ci": "eslint . --report-unused-disable-directives --ext .js,.ts,.tsx --max-warnings 0", "stylelint": "stylelint --reportInvalidScopeDisables --reportNeedlessDisables docs/**/*.{js,ts,tsx}", "markdownlint": "markdownlint-cli2 \"**/*.md\"", - "prettier": "node ./scripts/prettier.js", - "prettier:all": "node ./scripts/prettier.js write", + "prettier": "node ./scripts/prettier.mjs", + "prettier:all": "node ./scripts/prettier.mjs write", "size:snapshot": "node --max-old-space-size=4096 ./scripts/sizeSnapshot/create", "size:why": "yarn size:snapshot --analyze", "start": "yarn && yarn docs:dev", @@ -65,7 +65,7 @@ "test:regressions:server": "serve test/regressions", "test:umd": "node packages/mui-material/test/umd/run.js", "test:unit": "cross-env NODE_ENV=test mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}' 'scripts/**/*.test.{js,ts,tsx}' 'test/utils/**/*.test.{js,ts,tsx}'", - "test:argos": "node ./scripts/pushArgos.js", + "test:argos": "node ./scripts/pushArgos.mjs", "typescript": "lerna run --no-bail --parallel typescript", "typescript:ci": "lerna run --concurrency 7 --no-bail --no-sort typescript", "validate-declarations": "babel-node --extensions \".ts\" scripts/validateTypescriptDeclarations.ts", diff --git a/packages/mui-base/package.json b/packages/mui-base/package.json index 6a0cb46f70d765..b9411501c6a10c 100644 --- a/packages/mui-base/package.json +++ b/packages/mui-base/package.json @@ -28,12 +28,12 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-base/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-codemod/package.json b/packages/mui-codemod/package.json index 51495bf81e3fc8..cbd7335b0abae1 100644 --- a/packages/mui-codemod/package.json +++ b/packages/mui-codemod/package.json @@ -15,7 +15,7 @@ "scripts": { "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-codemod/**/*.test.js'", "prebuild": "rimraf build", - "build": "node ../../scripts/build node --out-dir ./build && cpy README.md build && cpy package.json build && cpy codemod.js build", + "build": "node ../../scripts/build.mjs node --out-dir ./build && cpy README.md build && cpy package.json build && cpy codemod.js build", "release": "yarn build && npm publish" }, "repository": { diff --git a/packages/mui-core-downloads-tracker/package.json b/packages/mui-core-downloads-tracker/package.json index 2c184311c27749..1f93195449c57f 100644 --- a/packages/mui-core-downloads-tracker/package.json +++ b/packages/mui-core-downloads-tracker/package.json @@ -21,7 +21,7 @@ }, "scripts": { "build": "mkdir build && yarn build:copy-files", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build" }, diff --git a/packages/mui-docs/package.json b/packages/mui-docs/package.json index 5e65cc16e88397..b42fb7139a212d 100644 --- a/packages/mui-docs/package.json +++ b/packages/mui-docs/package.json @@ -24,11 +24,11 @@ "homepage": "https://github.com/mui/material-ui/tree/master/packages/mui-docs", "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", + "build:legacy": "node ../../scripts/build.mjs legacy", "build:modern": "echo 'Skip modern build'", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "exit 0" diff --git a/packages/mui-icons-material/package.json b/packages/mui-icons-material/package.json index 4d2d3f590f2fbe..358de2cb9e0815 100644 --- a/packages/mui-icons-material/package.json +++ b/packages/mui-icons-material/package.json @@ -33,9 +33,9 @@ "build:lib:clean": "rimraf lib/ && yarn build:lib", "build:legacy": "echo 'Skip legacy build'", "build:modern": "echo 'Skip modern build'", - "build:node": "node ../../scripts/build node --largeFiles --outDir lib", - "build:stable": "node ../../scripts/build stable --largeFiles --outDir lib", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:node": "node ../../scripts/build.mjs node --largeFiles --outDir lib", + "build:stable": "node ../../scripts/build.mjs stable --largeFiles --outDir lib", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "build:typings": "babel-node --config-file ../../babel.config.js ./scripts/create-typings.js", "prebuild": "rimraf build", "release": "yarn build && npm publish build", diff --git a/packages/mui-joy/package.json b/packages/mui-joy/package.json index dea6e9cd252278..5ccfd973433d95 100644 --- a/packages/mui-joy/package.json +++ b/packages/mui-joy/package.json @@ -26,11 +26,11 @@ }, "scripts": { "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-joy/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-lab/package.json b/packages/mui-lab/package.json index 36b5c1dbe063c1..c57462ce8613aa 100644 --- a/packages/mui-lab/package.json +++ b/packages/mui-lab/package.json @@ -29,12 +29,12 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files ", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-lab/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-material-next/package.json b/packages/mui-material-next/package.json index 13b2653a3f4902..c37c0c2a005d75 100644 --- a/packages/mui-material-next/package.json +++ b/packages/mui-material-next/package.json @@ -28,11 +28,11 @@ }, "scripts": { "build": "yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-material-next/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json index 03d283030180be..6b1d91500433ce 100644 --- a/packages/mui-material/package.json +++ b/packages/mui-material/package.json @@ -28,13 +28,13 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:umd && yarn build:types && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", "build:umd": "cross-env BABEL_ENV=stable rollup -c scripts/rollup.config.js", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-material/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-private-theming/package.json b/packages/mui-private-theming/package.json index 6b31d7df0cba36..4cc065cb3b0631 100644 --- a/packages/mui-private-theming/package.json +++ b/packages/mui-private-theming/package.json @@ -27,11 +27,11 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-private-theming/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-styled-engine-sc/package.json b/packages/mui-styled-engine-sc/package.json index dd00602e17b540..7da437a7735fd7 100644 --- a/packages/mui-styled-engine-sc/package.json +++ b/packages/mui-styled-engine-sc/package.json @@ -27,11 +27,11 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-styled-engine-sc/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-styled-engine/package.json b/packages/mui-styled-engine/package.json index 9584ba162c1387..ae647298ccd267 100644 --- a/packages/mui-styled-engine/package.json +++ b/packages/mui-styled-engine/package.json @@ -27,11 +27,11 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-styled-engine/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-styles/package.json b/packages/mui-styles/package.json index 2f5d233df704e9..48bfc6004d6023 100644 --- a/packages/mui-styles/package.json +++ b/packages/mui-styles/package.json @@ -27,11 +27,11 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-styles/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-system/package.json b/packages/mui-system/package.json index 14a5c87c65059a..8ed077f069b314 100644 --- a/packages/mui-system/package.json +++ b/packages/mui-system/package.json @@ -27,12 +27,12 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-system/**/*.test.{js,ts,tsx}'", diff --git a/packages/mui-types/package.json b/packages/mui-types/package.json index 714056d91e2a7b..625c6d57cd2466 100644 --- a/packages/mui-types/package.json +++ b/packages/mui-types/package.json @@ -27,7 +27,7 @@ "homepage": "https://github.com/mui/material-ui/tree/master/packages/mui-types", "scripts": { "build": "mkdir build && cpy index.d.ts build/ && cpy OverridableComponentAugmentation.ts build/ && yarn build:copy-files", - "build:copy-files": "node ../../scripts/copy-files.js", + "build:copy-files": "node ../../scripts/copyFiles.mjs", "prebuild": "rimraf build", "release": "yarn build && npm publish build", "test": "echo 'No runtime test. Type tests are run with the `typescript` script.'", diff --git a/packages/mui-utils/package.json b/packages/mui-utils/package.json index 5aa22a2852af59..b446ff3b4e3a3a 100644 --- a/packages/mui-utils/package.json +++ b/packages/mui-utils/package.json @@ -27,12 +27,12 @@ }, "scripts": { "build": "yarn build:legacy && yarn build:modern && yarn build:node && yarn build:stable && yarn build:types && yarn build:copy-files", - "build:legacy": "node ../../scripts/build legacy", - "build:modern": "node ../../scripts/build modern", - "build:node": "node ../../scripts/build node", - "build:stable": "node ../../scripts/build stable", - "build:copy-files": "node ../../scripts/copy-files.js", - "build:types": "node ../../scripts/buildTypes", + "build:legacy": "node ../../scripts/build.mjs legacy", + "build:modern": "node ../../scripts/build.mjs modern", + "build:node": "node ../../scripts/build.mjs node", + "build:stable": "node ../../scripts/build.mjs stable", + "build:copy-files": "node ../../scripts/copyFiles.mjs", + "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", "release": "yarn build && npm publish build", "test": "cd ../../ && cross-env NODE_ENV=test mocha 'packages/mui-utils/**/*.test.{js,ts,tsx}'", diff --git a/scripts/build.js b/scripts/build.mjs similarity index 91% rename from scripts/build.js rename to scripts/build.mjs index 331416b866d8fa..cc7b843b9e1a07 100644 --- a/scripts/build.js +++ b/scripts/build.mjs @@ -1,8 +1,9 @@ -const childProcess = require('child_process'); -const glob = require('fast-glob'); -const path = require('path'); -const { promisify } = require('util'); -const yargs = require('yargs'); +import childProcess from 'child_process'; +import glob from 'fast-glob'; +import path from 'path'; +import { promisify } from 'util'; +import yargs from 'yargs'; +import { getWorkspaceRoot } from './utils.mjs'; const exec = promisify(childProcess.exec); @@ -31,7 +32,7 @@ async function run(argv) { BABEL_ENV: bundle, MUI_BUILD_VERBOSE: verbose, }; - const babelConfigPath = path.resolve(__dirname, '../babel.config.js'); + const babelConfigPath = path.resolve(getWorkspaceRoot(), 'babel.config.js'); const srcDir = path.resolve('./src'); const extensions = ['.js', '.ts', '.tsx']; const ignore = [ @@ -101,7 +102,7 @@ async function run(argv) { } } -yargs +yargs(process.argv.slice(2)) .command({ command: '$0 ', description: 'build package', diff --git a/scripts/buildTypes.js b/scripts/buildTypes.mjs similarity index 95% rename from scripts/buildTypes.js rename to scripts/buildTypes.mjs index 7627c5a0eeb03d..d8d3c1977f69a9 100644 --- a/scripts/buildTypes.js +++ b/scripts/buildTypes.mjs @@ -1,10 +1,10 @@ -const chalk = require('chalk'); -const childProcess = require('child_process'); -const glob = require('fast-glob'); -const fse = require('fs-extra'); -const path = require('path'); -const { promisify } = require('util'); -const yargs = require('yargs'); +import chalk from 'chalk'; +import childProcess from 'child_process'; +import glob from 'fast-glob'; +import fse from 'fs-extra'; +import path from 'path'; +import { promisify } from 'util'; +import yargs from 'yargs'; const exec = promisify(childProcess.exec); @@ -129,7 +129,7 @@ async function main() { console.log(`Fixed: ${rewrittenTally}\nFailed: ${errorTally}\nTotal: ${declarationFiles.length}`); } -yargs +yargs(process.argv.slice(2)) .command({ command: '$0', description: diff --git a/scripts/copy-files.js b/scripts/copyFiles.mjs similarity index 98% rename from scripts/copy-files.js rename to scripts/copyFiles.mjs index cd2ca72afbcd0d..6a7e6dea99708f 100644 --- a/scripts/copy-files.js +++ b/scripts/copyFiles.mjs @@ -1,7 +1,7 @@ /* eslint-disable no-console */ -const path = require('path'); -const fse = require('fs-extra'); -const glob = require('fast-glob'); +import path from 'path'; +import fse from 'fs-extra'; +import glob from 'fast-glob'; const packagePath = process.cwd(); const buildPath = path.join(packagePath, './build'); diff --git a/scripts/deduplicate.js b/scripts/deduplicate.mjs similarity index 75% rename from scripts/deduplicate.js rename to scripts/deduplicate.mjs index 67e61f756496de..db7b4acec482e1 100644 --- a/scripts/deduplicate.js +++ b/scripts/deduplicate.mjs @@ -1,10 +1,11 @@ /* eslint-disable no-console */ -const { spawn } = require('child_process'); -const path = require('path'); -const fs = require('fs'); -const deduplicate = require('yarn-deduplicate'); +import { spawn } from 'child_process'; +import path from 'path'; +import fs from 'fs'; +import deduplicate from 'yarn-deduplicate'; +import { getWorkspaceRoot } from './utils.mjs'; -const lockFile = path.resolve(__dirname, '../yarn.lock'); +const lockFile = path.resolve(getWorkspaceRoot(), 'yarn.lock'); const yarnlock = fs.readFileSync(lockFile, 'utf8'); const duplicates = deduplicate.listDuplicates(yarnlock); @@ -33,7 +34,7 @@ fs.writeFileSync(lockFile, deduplicate.fixDuplicates(yarnlock)); const yarn = spawn('yarn', { shell: true, stdio: 'inherit', - cwd: path.resolve(__dirname, '..'), + cwd: getWorkspaceRoot(), }); yarn.on('close', (code) => { diff --git a/scripts/jsonlint.js b/scripts/jsonlint.mjs similarity index 85% rename from scripts/jsonlint.js rename to scripts/jsonlint.mjs index 33b7318fc15288..59db2e1c889750 100644 --- a/scripts/jsonlint.js +++ b/scripts/jsonlint.mjs @@ -1,14 +1,15 @@ /* eslint-disable no-console */ -const chalk = require('chalk'); -const fse = require('fs-extra'); -const glob = require('globby'); -const path = require('path'); +import chalk from 'chalk'; +import fse from 'fs-extra'; +import glob from 'globby'; +import path from 'path'; +import { getWorkspaceRoot } from './utils.mjs'; const passMessage = (message) => `✓ ${chalk.gray(message)}`; const failMessage = (message) => `✗ ${chalk.whiteBright(message)}`; async function run() { - const workspaceRoot = path.resolve(__dirname, '..'); + const workspaceRoot = getWorkspaceRoot(); const eslintignoreContent = await fse.readFile(path.join(workspaceRoot, '.eslintignore'), { encoding: 'utf8', diff --git a/scripts/listChangedFiles.js b/scripts/listChangedFiles.mjs similarity index 89% rename from scripts/listChangedFiles.js rename to scripts/listChangedFiles.mjs index a16a545b6f9541..d1621870e230ba 100644 --- a/scripts/listChangedFiles.js +++ b/scripts/listChangedFiles.mjs @@ -1,8 +1,8 @@ // Based on similar script in React // https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/scripts/shared/listChangedFiles.js -const util = require('util'); -const childProcess = require('child_process'); +import util from 'util'; +import childProcess from 'child_process'; const execFile = util.promisify(childProcess.execFile); @@ -26,4 +26,4 @@ async function listChangedFiles({ branch }) { return new Set([...gitDiff, ...gitLs]); } -module.exports = listChangedFiles; +export default listChangedFiles; diff --git a/scripts/listChangedFiles.test.js b/scripts/listChangedFiles.test.mjs similarity index 88% rename from scripts/listChangedFiles.test.js rename to scripts/listChangedFiles.test.mjs index 69cac60bc8f07c..4d12d04b854f82 100644 --- a/scripts/listChangedFiles.test.js +++ b/scripts/listChangedFiles.test.mjs @@ -1,8 +1,8 @@ -const fs = require('fs'); -const rimraf = require('rimraf'); -const { promisify } = require('util'); -const { expect } = require('chai'); -const listChangedFiles = require('./listChangedFiles'); +import fs from 'fs'; +import rimraf from 'rimraf'; +import { promisify } from 'util'; +import { expect } from 'chai'; +import listChangedFiles from './listChangedFiles.mjs'; const writeFileAsync = promisify(fs.writeFile); const rimrafAsync = promisify(rimraf); diff --git a/scripts/prettier.js b/scripts/prettier.mjs similarity index 91% rename from scripts/prettier.js rename to scripts/prettier.mjs index 1b2ece4decb94e..f8276f96ae8641 100644 --- a/scripts/prettier.js +++ b/scripts/prettier.mjs @@ -4,16 +4,16 @@ // supported modes = check, check-changed, write, write-changed -const glob = require('globby'); -const prettier = require('prettier'); -const fs = require('fs'); -const path = require('path'); -const yargs = require('yargs'); -const { LANGUAGES } = require('docs/src/modules/constants'); -const listChangedFiles = require('./listChangedFiles'); +import glob from 'globby'; +import prettier from 'prettier'; +import fs from 'fs'; +import path from 'path'; +import yargs from 'yargs'; +import { LANGUAGES } from 'docs/src/modules/constants.js'; +import listChangedFiles from './listChangedFiles.mjs'; +import { getWorkspaceRoot } from './utils.mjs'; -// FIXME: Incorrect assumption -const workspaceRoot = process.cwd(); +const workspaceRoot = getWorkspaceRoot(); function isTranslatedDocument(filename) { // markdown files from crowdin end with a 2 letter locale @@ -127,7 +127,7 @@ async function run(argv) { runPrettier({ changedFiles, shouldWrite, branch }); } -yargs +yargs(process.argv.slice(2)) .command({ command: '$0 [mode]', description: 'formats codebase', diff --git a/scripts/pushArgos.js b/scripts/pushArgos.mjs similarity index 85% rename from scripts/pushArgos.js rename to scripts/pushArgos.mjs index b40fd94cee8908..b9a43853f6da25 100644 --- a/scripts/pushArgos.js +++ b/scripts/pushArgos.mjs @@ -1,8 +1,8 @@ /* eslint-disable no-console */ -const glob = require('fast-glob'); -const fse = require('fs-extra'); -const lodashChunk = require('lodash/chunk'); -const argos = require('@argos-ci/core'); +import glob from 'fast-glob'; +import fse from 'fs-extra'; +import lodashChunk from 'lodash/chunk.js'; +import { upload } from '@argos-ci/core'; const screenshotsBase = 'test/regressions/screenshots/chrome'; const screenshotsTmp = 'test/regressions/screenshots/argos'; @@ -27,7 +27,7 @@ async function run() { for (let i = 0; i < chunks.length; i += 1) { // eslint-disable-next-line no-await-in-loop - const result = await argos.upload({ + const result = await upload({ root: `${screenshotsTmp}/${i}`, commit: process.env.CIRCLE_SHA1, branch: process.env.CIRCLE_BRANCH, diff --git a/scripts/releaseChangelog.js b/scripts/releaseChangelog.mjs similarity index 97% rename from scripts/releaseChangelog.js rename to scripts/releaseChangelog.mjs index 2bce795d50bc74..230fc3b6416c24 100644 --- a/scripts/releaseChangelog.js +++ b/scripts/releaseChangelog.mjs @@ -1,8 +1,8 @@ /* eslint-disable no-restricted-syntax */ -const { Octokit } = require('@octokit/rest'); -const childProcess = require('child_process'); -const { promisify } = require('util'); -const yargs = require('yargs'); +import { Octokit } from '@octokit/rest'; +import childProcess from 'child_process'; +import { promisify } from 'util'; +import yargs from 'yargs'; const exec = promisify(childProcess.exec); @@ -156,7 +156,7 @@ All contributors of this release in alphabetical order: ${contributorHandles} console.log(changelog); } -yargs +yargs(process.argv.slice(2)) .command({ command: '$0', description: 'Creates a changelog', diff --git a/scripts/releaseTag.js b/scripts/releaseTag.mjs similarity index 91% rename from scripts/releaseTag.js rename to scripts/releaseTag.mjs index edf7bd52a91151..11814fface58e4 100644 --- a/scripts/releaseTag.js +++ b/scripts/releaseTag.mjs @@ -1,8 +1,9 @@ -const childProcess = require('child_process'); -const fse = require('fs-extra'); -const path = require('path'); -const { promisify } = require('util'); -const yargs = require('yargs'); +import childProcess from 'child_process'; +import fse from 'fs-extra'; +import path from 'path'; +import { promisify } from 'util'; +import yargs from 'yargs'; +import { getWorkspaceRoot } from './utils.mjs'; /** * Only directly call it with side-effect free commands. @@ -48,7 +49,7 @@ async function main(argv) { const exec = dryRun ? execDry : execActual; - const rootWorkspace = path.resolve(__dirname, '..'); + const rootWorkspace = getWorkspaceRoot(); const rootWorkspaceManifest = await fse.readJSON(path.join(rootWorkspace, 'package.json')); const tag = `v${rootWorkspaceManifest.version}`; @@ -75,7 +76,7 @@ async function main(argv) { ); } -yargs +yargs(process.argv.slice(2)) .command({ command: '$0', description: 'Tags the current release and pushes these changes to mui/material-ui.', diff --git a/scripts/testBuiltTypes.js b/scripts/testBuiltTypes.mjs similarity index 84% rename from scripts/testBuiltTypes.js rename to scripts/testBuiltTypes.mjs index 7f5097dfeda58b..5e7d29655995d6 100644 --- a/scripts/testBuiltTypes.js +++ b/scripts/testBuiltTypes.mjs @@ -1,9 +1,10 @@ -const glob = require('fast-glob'); -const fse = require('fs-extra'); -const path = require('path'); +import glob from 'fast-glob'; +import fse from 'fs-extra'; +import path from 'path'; +import { getWorkspaceRoot } from './utils.mjs'; async function main() { - const workspaceRoot = path.resolve(__dirname, '..'); + const workspaceRoot = getWorkspaceRoot(); const declarationFiles = await glob('**/build/**/*.d.ts', { absolute: true, diff --git a/scripts/use-react-version.js b/scripts/useReactVersion.mjs similarity index 93% rename from scripts/use-react-version.js rename to scripts/useReactVersion.mjs index d909666c2b89c7..4c7b07d67276ab 100644 --- a/scripts/use-react-version.js +++ b/scripts/useReactVersion.mjs @@ -7,11 +7,12 @@ * WARNING: This script can only use built-in modules since it has to run before * `yarn install` */ -const childProcess = require('child_process'); -const fs = require('fs'); -const os = require('os'); -const path = require('path'); -const { promisify } = require('util'); +import childProcess from 'child_process'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { promisify } from 'util'; +import { getWorkspaceRoot } from './utils.mjs'; const exec = promisify(childProcess.exec); @@ -37,7 +38,7 @@ async function main(version) { return; } - const packageJsonPath = path.resolve(__dirname, '../package.json'); + const packageJsonPath = path.resolve(getWorkspaceRoot(), 'package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, { encoding: 'utf8' })); // the version is something in format: "17.0.0" diff --git a/scripts/use-typescript-dist-tag.js b/scripts/useTypescriptDistTag.mjs similarity index 85% rename from scripts/use-typescript-dist-tag.js rename to scripts/useTypescriptDistTag.mjs index 4dd4af99c7c564..04dd874907285f 100644 --- a/scripts/use-typescript-dist-tag.js +++ b/scripts/useTypescriptDistTag.mjs @@ -9,11 +9,12 @@ * WARNING: This script can only use built-in modules since it has to run before * `yarn install` */ -const childProcess = require('child_process'); -const fs = require('fs'); -const os = require('os'); -const path = require('path'); -const { promisify } = require('util'); +import childProcess from 'child_process'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; +import { promisify } from 'util'; +import { getWorkspaceRoot } from './utils.mjs'; const exec = promisify(childProcess.exec); @@ -38,7 +39,7 @@ async function main(distTag) { const version = tagMapping.replace(`${distTag}: `, ''); - const packageJsonPath = path.resolve(__dirname, '../package.json'); + const packageJsonPath = path.resolve(getWorkspaceRoot(), 'package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, { encoding: 'utf8' })); packageJson.devDependencies.typescript = version; diff --git a/scripts/utils.mjs b/scripts/utils.mjs new file mode 100644 index 00000000000000..7a62fe6c4ad054 --- /dev/null +++ b/scripts/utils.mjs @@ -0,0 +1,12 @@ +import path from 'path'; +import url from 'url'; + +/** + * Returns the full path of the root directory of this repository. + */ +// eslint-disable-next-line import/prefer-default-export +export function getWorkspaceRoot() { + const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); + const workspaceRoot = path.resolve(currentDirectory, '..'); + return workspaceRoot; +} diff --git a/test/README.md b/test/README.md index 83861a554f1a9c..8946498e28e0fb 100644 --- a/test/README.md +++ b/test/README.md @@ -242,7 +242,7 @@ For example, in https://app.circleci.com/pipelines/github/mui/material-ui/32796/ ### Testing multiple versions of React -You can check integration of different versions of React (e.g. different [release channels](https://reactjs.org/docs/release-channels.html) or PRs to React) by running `node scripts/use-react-version `. +You can check integration of different versions of React (e.g. different [release channels](https://reactjs.org/docs/release-channels.html) or PRs to React) by running `node scripts/useReactVersion.mjs `. Possible values for `version`: diff --git a/test/karma.conf.js b/test/karma.conf.js index 7f55dddf8aa866..7ce26ebb41a963 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -126,7 +126,7 @@ module.exports = function setKarmaConfig(config) { module: { rules: [ { - test: /\.(js|ts|tsx)$/, + test: /\.(js|mjs|ts|tsx)$/, loader: 'babel-loader', exclude: /node_modules/, options: { @@ -171,7 +171,7 @@ module.exports = function setKarmaConfig(config) { }, }, { - test: /\.(js|ts|tsx)$/, + test: /\.(js|mjs|ts|tsx)$/, use: { loader: 'babel-loader', options: { @@ -184,7 +184,7 @@ module.exports = function setKarmaConfig(config) { ], }, resolve: { - extensions: ['.js', '.ts', '.tsx'], + extensions: ['.js', '.mjs', '.ts', '.tsx'], fallback: { // needed by sourcemap fs: false,