Skip to content

Commit

Permalink
refactor: use esm for dev scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
karansapolia authored and nicolo-ribaudo committed Dec 19, 2020
1 parent 56c7024 commit 5baa49b
Show file tree
Hide file tree
Showing 34 changed files with 177 additions and 179 deletions.
7 changes: 4 additions & 3 deletions .eslintrc.js → .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ module.exports = {
rules: {
"prettier/prettier": "error",
},
env: {
node: true,
},
overrides: [
{
files: ["**/*.ts"],
Expand All @@ -44,6 +41,9 @@ module.exports = {
"import/no-extraneous-dependencies": "error",
"guard-for-in": "error",
},
env: {
node: true,
},
},
{
files: [
Expand All @@ -55,6 +55,7 @@ module.exports = {
],
env: {
jest: true,
node: true,
},
extends: "plugin:jest/recommended",
rules: {
Expand Down
85 changes: 45 additions & 40 deletions Gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
"use strict";

const plumber = require("gulp-plumber");
const through = require("through2");
const chalk = require("chalk");
const newer = require("gulp-newer");
const babel = require("gulp-babel");
const camelCase = require("lodash/camelCase");
const fancyLog = require("fancy-log");
const filter = require("gulp-filter");
const gulp = require("gulp");
const path = require("path");
const fs = require("fs");
const rollup = require("rollup");
const rollupBabel = require("@rollup/plugin-babel").default;
const rollupBabelSource = require("./scripts/rollup-plugin-babel-source");
const rollupCommonJs = require("@rollup/plugin-commonjs");
const rollupJson = require("@rollup/plugin-json");
const rollupNodePolyfills = require("rollup-plugin-node-polyfills");
const rollupNodeResolve = require("@rollup/plugin-node-resolve").default;
const rollupReplace = require("@rollup/plugin-replace");
const { terser: rollupTerser } = require("rollup-plugin-terser");
const { default: rollupDts } = require("rollup-plugin-dts");
import path from "path";
import fs from "fs";
import { createRequire } from "module";
import { fileURLToPath } from "url";

import plumber from "gulp-plumber";
import through from "through2";
import chalk from "chalk";
import newer from "gulp-newer";
import babel from "gulp-babel";
import camelCase from "lodash/camelCase.js";
import fancyLog from "fancy-log";
import filter from "gulp-filter";
import gulp from "gulp";
import { rollup } from "rollup";
import { babel as rollupBabel } from "@rollup/plugin-babel";
import rollupCommonJs from "@rollup/plugin-commonjs";
import rollupJson from "@rollup/plugin-json";
import rollupNodePolyfills from "rollup-plugin-node-polyfills";
import rollupNodeResolve from "@rollup/plugin-node-resolve";
import rollupReplace from "@rollup/plugin-replace";
import { terser as rollupTerser } from "rollup-plugin-terser";
import _rollupDts from "rollup-plugin-dts";
const { default: rollupDts } = _rollupDts;

import rollupBabelSource from "./scripts/rollup-plugin-babel-source.js";
import formatCode from "./scripts/utils/formatCode.js";

const require = createRequire(import.meta.url);
const monorepoRoot = path.dirname(fileURLToPath(import.meta.url));

const defaultPackagesGlob = "./@(codemods|packages|eslint)/*";
const defaultSourcesGlob = `${defaultPackagesGlob}/src/**/{*.js,!(*.d).ts}`;
Expand Down Expand Up @@ -93,21 +100,20 @@ function rename(fn) {
*/
function generateTypeHelpers(helperKind, filename = "index.ts") {
const dest = `./packages/babel-types/src/${helperKind}/generated/`;
const formatCode = require("./scripts/utils/formatCode");
const stream = gulp
.src(".", { base: __dirname })
.src(".", { base: monorepoRoot })
.pipe(errorsLogger())
.pipe(
through.obj(function (file, enc, callback) {
through.obj(async (file, enc, callback) => {
const { default: generateCode } = await import(
`./packages/babel-types/scripts/generators/${helperKind}.js`
);

file.path = filename;
file.contents = Buffer.from(
formatCode(
require(`./packages/babel-types/scripts/generators/${helperKind}`)(
filename
),
dest + file.path
)
formatCode(generateCode(filename), dest + file.path)
);

fancyLog(`${chalk.green("✔")} Generated ${helperKind}`);
callback(null, file);
})
Expand All @@ -119,9 +125,8 @@ function generateTypeHelpers(helperKind, filename = "index.ts") {

function generateStandalone() {
const dest = "./packages/babel-standalone/src/generated/";
const formatCode = require("./scripts/utils/formatCode");
return gulp
.src(babelStandalonePluginConfigGlob, { base: __dirname })
.src(babelStandalonePluginConfigGlob, { base: monorepoRoot })
.pipe(
through.obj((file, enc, callback) => {
fancyLog("Generating @babel/standalone files");
Expand Down Expand Up @@ -167,7 +172,7 @@ function finish(stream) {
}

function getFiles(glob, { include, exclude }) {
let stream = gulp.src(glob, { base: __dirname });
let stream = gulp.src(glob, { base: monorepoRoot });

if (exclude) {
const filters = exclude.map(p => `!**/${p}/**`);
Expand All @@ -183,7 +188,7 @@ function getFiles(glob, { include, exclude }) {
}

function buildBabel(exclude) {
const base = __dirname;
const base = monorepoRoot;

return getFiles(defaultSourcesGlob, {
exclude: exclude && exclude.map(p => p.src),
Expand Down Expand Up @@ -236,7 +241,7 @@ function buildRollup(packages, targetBrowsers) {
}
const input = getIndexFromPackage(src);
fancyLog(`Compiling '${chalk.cyan(input)}' with rollup ...`);
const bundle = await rollup.rollup({
const bundle = await rollup({
input,
external,
onwarn(warning, warn) {
Expand All @@ -257,7 +262,7 @@ function buildRollup(packages, targetBrowsers) {
envName: babelEnvName,
babelrc: false,
babelHelpers: "bundled",
extends: "./babel.config.js",
extends: "./babel.config.cjs",
extensions: [".mjs", ".cjs", ".ts", ".js"],
}),
rollupNodeResolve({
Expand Down Expand Up @@ -329,7 +334,7 @@ function buildRollupDts(packages) {
packages.map(async packageName => {
const input = `${packageName}/lib/index.d.ts`;
fancyLog(`Bundling '${chalk.cyan(input)}' with rollup ...`);
const bundle = await rollup.rollup({
const bundle = await rollup({
input,
plugins: [rollupDts()],
});
Expand All @@ -355,7 +360,7 @@ function removeDts(exclude) {
function copyDts(packages) {
return getFiles(`${defaultPackagesGlob}/src/**/*.d.ts`, { include: packages })
.pipe(rename(file => path.resolve(file.base, mapSrcToLib(file.relative))))
.pipe(gulp.dest(__dirname));
.pipe(gulp.dest(monorepoRoot));
}

const libBundles = [
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,12 @@ check-compat-data-ci:
$(MAKE) check-compat-data

lint:
BABEL_ENV=test $(YARN) eslint scripts $(SOURCES) '*.{js,ts}' --format=codeframe --ext .js,.cjs,.mjs,.ts
BABEL_ENV=test $(YARN) eslint scripts $(SOURCES) '*.{js,cjs}' --format=codeframe --ext .js,.cjs,.mjs,.ts

fix: fix-json fix-js

fix-js:
$(YARN) eslint scripts $(SOURCES) '*.{js,ts}' --format=codeframe --ext .js,.cjs,.mjs,.ts --fix
$(YARN) eslint scripts $(SOURCES) '*.{js,cjs}' --format=codeframe --ext .js,.cjs,.mjs,.ts --fix

fix-json:
$(YARN) prettier "{$(COMMA_SEPARATED_SOURCES)}/*/test/fixtures/**/options.json" --write --loglevel warn
Expand Down
File renamed without changes.
File renamed without changes.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "7.12.11",
"private": true,
"license": "MIT",
"type": "module",
"scripts": {
"bootstrap": "make bootstrap",
"codesandbox:build": "make build-no-bundle",
Expand All @@ -11,7 +12,7 @@
"lint": "make lint",
"test": "make test",
"version": "yarn --immutable-cache && git add yarn.lock",
"test:esm": "node test/esm/index.mjs"
"test:esm": "node test/esm/index.js"
},
"devDependencies": {
"@babel/cli": "^7.12.0",
Expand Down
7 changes: 3 additions & 4 deletions packages/babel-types/scripts/generators/asserts.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"use strict";
const definitions = require("../../lib/definitions");
import definitions from "../../lib/definitions/index.js";

function addAssertHelper(type) {
const result =
Expand All @@ -14,7 +13,7 @@ function addAssertHelper(type) {
`;
}

module.exports = function generateAsserts() {
export default function generateAsserts() {
let output = `/*
* This file is auto-generated! Do not modify it directly.
* To re-generate run 'make build'
Expand Down Expand Up @@ -48,4 +47,4 @@ function assert(type: string, node: any, opts?: any): void {
});

return output;
};
}
10 changes: 4 additions & 6 deletions packages/babel-types/scripts/generators/ast-types.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
"use strict";
import t from "../../lib/index.js";
import stringifyValidator from "../utils/stringifyValidator.js";

const t = require("../../");
const stringifyValidator = require("../utils/stringifyValidator");

module.exports = function generateAstTypes() {
export default function generateAstTypes() {
let code = `// NOTE: This file is autogenerated. Do not modify.
// See packages/babel-types/scripts/generators/ast-types.js for script used.
Expand Down Expand Up @@ -118,7 +116,7 @@ export interface ${deprecatedAlias[type]} extends BaseNode {
code += "}\n\n";

return code;
};
}

function hasDefault(field) {
return field.default != null;
Expand Down
16 changes: 7 additions & 9 deletions packages/babel-types/scripts/generators/builders.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
"use strict";
const definitions = require("../../lib/definitions");
const formatBuilderName = require("../utils/formatBuilderName");
const lowerFirst = require("../utils/lowerFirst");

const t = require("../../");
const stringifyValidator = require("../utils/stringifyValidator");
import t from "../../lib/index.js";
import definitions from "../../lib/definitions/index.js";
import formatBuilderName from "../utils/formatBuilderName.js";
import lowerFirst from "../utils/lowerFirst.js";
import stringifyValidator from "../utils/stringifyValidator.js";

function areAllRemainingFieldsNullable(fieldName, fieldNames, fields) {
const index = fieldNames.indexOf(fieldName);
Expand Down Expand Up @@ -73,11 +71,11 @@ function generateBuilderArgs(type) {
return args;
}

module.exports = function generateBuilders(kind) {
export default function generateBuilders(kind) {
return kind === "uppercase.js"
? generateUppercaseBuilders()
: generateLowercaseBuilders();
};
}

function generateLowercaseBuilders() {
let output = `/*
Expand Down
7 changes: 3 additions & 4 deletions packages/babel-types/scripts/generators/constants.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"use strict";
const definitions = require("../../lib/definitions");
import definitions from "../../lib/definitions/index.js";

module.exports = function generateConstants() {
export default function generateConstants() {
let output = `/*
* This file is auto-generated! Do not modify it directly.
* To re-generate run 'make build'
Expand All @@ -13,4 +12,4 @@ import { FLIPPED_ALIAS_KEYS } from "../../definitions";\n\n`;
});

return output;
};
}
36 changes: 15 additions & 21 deletions packages/babel-types/scripts/generators/docs.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
"use strict";
import util from "util";
import stringifyValidator from "../utils/stringifyValidator.js";
import toFunctionName from "../utils/toFunctionName.js";

const util = require("util");
const stringifyValidator = require("../utils/stringifyValidator");
const toFunctionName = require("../utils/toFunctionName");

const types = require("../../");
import t from "../../lib/index.js";

const readme = [
`# @babel/types
Expand Down Expand Up @@ -37,17 +35,13 @@ const customTypes = {
key: "if computed then `Expression` else `Identifier | Literal`",
},
};
Object.keys(types.BUILDER_KEYS)
Object.keys(t.BUILDER_KEYS)
.sort()
.forEach(function (key) {
readme.push("### " + key[0].toLowerCase() + key.substr(1));
readme.push("```javascript");
readme.push(
"t." +
toFunctionName(key) +
"(" +
types.BUILDER_KEYS[key].join(", ") +
")"
"t." + toFunctionName(key) + "(" + t.BUILDER_KEYS[key].join(", ") + ")"
);
readme.push("```");
readme.push("");
Expand All @@ -59,30 +53,30 @@ Object.keys(types.BUILDER_KEYS)
"(node, opts)`."
);
readme.push("");
if (types.ALIAS_KEYS[key] && types.ALIAS_KEYS[key].length) {
if (t.ALIAS_KEYS[key] && t.ALIAS_KEYS[key].length) {
readme.push(
"Aliases: " +
types.ALIAS_KEYS[key]
t.ALIAS_KEYS[key]
.map(function (key) {
return "`" + key + "`";
})
.join(", ")
);
readme.push("");
}
Object.keys(types.NODE_FIELDS[key])
Object.keys(t.NODE_FIELDS[key])
.sort(function (fieldA, fieldB) {
const indexA = types.BUILDER_KEYS[key].indexOf(fieldA);
const indexB = types.BUILDER_KEYS[key].indexOf(fieldB);
const indexA = t.BUILDER_KEYS[key].indexOf(fieldA);
const indexB = t.BUILDER_KEYS[key].indexOf(fieldB);
if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
if (indexA === -1) return 1;
if (indexB === -1) return -1;
return indexA - indexB;
})
.forEach(function (field) {
const defaultValue = types.NODE_FIELDS[key][field].default;
const defaultValue = t.NODE_FIELDS[key][field].default;
const fieldDescription = ["`" + field + "`"];
const validator = types.NODE_FIELDS[key][field].validate;
const validator = t.NODE_FIELDS[key][field].validate;
if (customTypes[key] && customTypes[key][field]) {
fieldDescription.push(`: ${customTypes[key][field]}`);
} else if (validator) {
Expand All @@ -99,11 +93,11 @@ Object.keys(types.BUILDER_KEYS)
}
}
}
if (defaultValue !== null || types.NODE_FIELDS[key][field].optional) {
if (defaultValue !== null || t.NODE_FIELDS[key][field].optional) {
fieldDescription.push(
" (default: `" + util.inspect(defaultValue) + "`"
);
if (types.BUILDER_KEYS[key].indexOf(field) < 0) {
if (t.BUILDER_KEYS[key].indexOf(field) < 0) {
fieldDescription.push(", excluded from builder function");
}
fieldDescription.push(")");
Expand Down

0 comments on commit 5baa49b

Please sign in to comment.