Skip to content

Commit

Permalink
Move rollup configs to individual packages (#3376)
Browse files Browse the repository at this point in the history
  • Loading branch information
brophdawg11 committed Jul 8, 2022
1 parent c3ec279 commit 2a59335
Show file tree
Hide file tree
Showing 22 changed files with 1,149 additions and 998 deletions.
8 changes: 8 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,12 @@ module.exports = {
"plugin:markdown/recommended",
],
plugins: ["markdown"],
overrides: [
{
files: ["rollup.config.js"],
rules: {
"import/no-extraneous-dependencies": 0,
},
},
],
};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
"@octokit/rest": "^18.12.0",
"@playwright/test": "1.20.2",
"@rollup/plugin-babel": "^5.2.2",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^11.0.1",
"@testing-library/cypress": "^8.0.2",
"@testing-library/jest-dom": "^5.16.2",
Expand Down
10 changes: 9 additions & 1 deletion packages/create-remix/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
module.exports = {
rules: {
// we have an example where we need this
"no-undef": "off",
"no-undef": 0,
},
overrides: [
{
files: ["rollup.config.js"],
rules: {
"no-undef": 2,
},
},
],
};
7 changes: 7 additions & 0 deletions packages/create-remix/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const { getCliConfig } = require("../../rollup.utils");
const { name: packageName, version } = require("./package.json");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
return [getCliConfig({ packageName, version })];
};
17 changes: 17 additions & 0 deletions packages/remix-architect/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const { getAdapterConfig } = require("../../rollup.utils");

// Re-export everything from this package that is available in `remix`
/** @type {import('../../rollup.utils').MagicExports} */
const magicExports = {
"@remix-run/architect": {
values: ["createArcTableSessionStorage"],
},
"@remix-run/node": {
types: ["UploadHandler", "UploadHandlerPart"],
},
};

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
return [getAdapterConfig("architect", magicExports)];
};
44 changes: 44 additions & 0 deletions packages/remix-cloudflare-pages/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const path = require("path");
const babel = require("@rollup/plugin-babel").default;
const nodeResolve = require("@rollup/plugin-node-resolve").default;

const {
copyToPlaygrounds,
createBanner,
getAdapterConfig,
getOutputDir,
isBareModuleId,
} = require("../../rollup.utils");
const { name: packageName, version } = require("./package.json");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
let sourceDir = "packages/remix-cloudflare-pages";
let outputDir = getOutputDir(packageName);
let outputDist = path.join(outputDir, "dist");

return [
{
external(id) {
return isBareModuleId(id);
},
input: `${sourceDir}/index.ts`,
output: {
banner: createBanner("@remix-run/cloudflare-pages", version),
dir: `${outputDist}/esm`,
format: "esm",
preserveModules: true,
},
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts", ".tsx"],
}),
nodeResolve({ extensions: [".ts", ".tsx"] }),
copyToPlaygrounds(),
],
},
getAdapterConfig("cloudflare-pages"),
];
};
44 changes: 44 additions & 0 deletions packages/remix-cloudflare-workers/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const path = require("path");
const babel = require("@rollup/plugin-babel").default;
const nodeResolve = require("@rollup/plugin-node-resolve").default;

const {
copyToPlaygrounds,
createBanner,
getAdapterConfig,
getOutputDir,
isBareModuleId,
} = require("../../rollup.utils");
const { name: packageName, version } = require("./package.json");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
let sourceDir = "packages/remix-cloudflare-workers";
let outputDir = getOutputDir(packageName);
let outputDist = path.join(outputDir, "dist");

return [
{
external(id) {
return isBareModuleId(id);
},
input: `${sourceDir}/index.ts`,
output: {
banner: createBanner("@remix-run/cloudflare-workers", version),
dir: `${outputDist}/esm`,
format: "esm",
preserveModules: true,
},
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts", ".tsx"],
}),
nodeResolve({ extensions: [".ts", ".tsx"] }),
copyToPlaygrounds(),
],
},
getAdapterConfig("cloudflare-workers"),
];
};
53 changes: 53 additions & 0 deletions packages/remix-cloudflare/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
const path = require("path");
const babel = require("@rollup/plugin-babel").default;
const nodeResolve = require("@rollup/plugin-node-resolve").default;
const copy = require("rollup-plugin-copy");

const {
getOutputDir,
copyToPlaygrounds,
magicExportsPlugin,
isBareModuleId,
createBanner,
} = require("../../rollup.utils");
const { name: packageName, version } = require("./package.json");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
let sourceDir = "packages/remix-cloudflare";
let outputDir = getOutputDir(packageName);
let outputDist = path.join(outputDir, "dist");

return [
{
external(id) {
return isBareModuleId(id);
},
input: `${sourceDir}/index.ts`,
output: {
banner: createBanner(packageName, version),
dir: outputDist,
format: "cjs",
preserveModules: true,
exports: "named",
},
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts", ".tsx"],
}),
nodeResolve({ extensions: [".ts", ".tsx"] }),
copy({
targets: [
{ src: "LICENSE.md", dest: [outputDir, sourceDir] },
{ src: `${sourceDir}/package.json`, dest: outputDir },
{ src: `${sourceDir}/README.md`, dest: outputDir },
],
}),
magicExportsPlugin({ packageName, version }),
copyToPlaygrounds(),
],
},
];
};
27 changes: 27 additions & 0 deletions packages/remix-deno/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// deno-lint-ignore-file
const copy = require("rollup-plugin-copy");

const { getOutputDir, copyToPlaygrounds } = require("../../rollup.utils");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
let sourceDir = "packages/remix-deno";
let outputDir = getOutputDir("@remix-run/deno");

return [
{
input: `${sourceDir}/.empty.js`,
plugins: [
copy({
targets: [
{ src: "LICENSE.md", dest: [outputDir, sourceDir] },
{ src: `${sourceDir}/**/*`, dest: outputDir },
{ src: `!${sourceDir}/rollup.config.js`, dest: outputDir },
],
gitignore: true,
}),
copyToPlaygrounds(),
],
},
];
};
124 changes: 124 additions & 0 deletions packages/remix-dev/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
const path = require("path");
const babel = require("@rollup/plugin-babel").default;
const nodeResolve = require("@rollup/plugin-node-resolve").default;
const copy = require("rollup-plugin-copy");

const {
copyToPlaygrounds,
createBanner,
getCliConfig,
getOutputDir,
isBareModuleId,
} = require("../../rollup.utils");
const { name: packageName, version } = require("./package.json");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
let sourceDir = "packages/remix-dev";
let outputDir = getOutputDir(packageName);
let outputDist = path.join(outputDir, "dist");

return [
{
external(id, parent) {
if (
id === "../package.json" &&
parent === path.resolve(__dirname, "cli/create.ts")
) {
return true;
}

return isBareModuleId(id);
},
input: `${sourceDir}/index.ts`,
output: {
banner: createBanner("@remix-run/dev", version),
dir: outputDist,
format: "cjs",
preserveModules: true,
exports: "named",
},
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts"],
}),
nodeResolve({ extensions: [".ts"] }),
copy({
targets: [
{ src: `LICENSE.md`, dest: [outputDir, sourceDir] },
{ src: `${sourceDir}/package.json`, dest: [outputDir, outputDist] },
{ src: `${sourceDir}/README.md`, dest: outputDir },
{
src: `${sourceDir}/compiler/shims`,
dest: [`${outputDir}/compiler`, `${outputDist}/compiler`],
},
],
}),
// Allow dynamic imports in CJS code to allow us to utilize
// ESM modules as part of the compiler.
{
name: "dynamic-import-polyfill",
renderDynamicImport() {
return {
left: "import(",
right: ")",
};
},
},
copyToPlaygrounds(),
],
},
getCliConfig({ packageName, version }),
{
external: (id) => isBareModuleId(id),
input: [`${sourceDir}/cli/migrate/migrations/transforms.ts`],
output: {
banner: createBanner("@remix-run/dev", version),
dir: `${outputDist}/cli/migrate/migrations`,
exports: "named",
format: "cjs",
preserveModules: true,
},
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts"],
}),
nodeResolve({ extensions: [".ts"] }),
copyToPlaygrounds(),
],
},
{
external() {
return true;
},
input: `${sourceDir}/server-build.ts`,
output: [
{
// TODO: Remove deep import support in v2 or move to package.json
// "exports" field
banner: createBanner("@remix-run/dev", version, true),
dir: outputDir,
format: "cjs",
},
{
banner: createBanner("@remix-run/dev", version, true),
dir: outputDist,
format: "cjs",
},
],
plugins: [
babel({
babelHelpers: "bundled",
exclude: /node_modules/,
extensions: [".ts"],
}),
nodeResolve({ extensions: [".ts"] }),
copyToPlaygrounds(),
],
},
];
};
6 changes: 6 additions & 0 deletions packages/remix-express/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const { getAdapterConfig } = require("../../rollup.utils");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
return [getAdapterConfig("express")];
};
6 changes: 6 additions & 0 deletions packages/remix-netlify/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const { getAdapterConfig } = require("../../rollup.utils");

/** @returns {import("rollup").RollupOptions[]} */
module.exports = function rollup() {
return [getAdapterConfig("netlify")];
};
Loading

0 comments on commit 2a59335

Please sign in to comment.