Skip to content

Commit

Permalink
Big v3.0.0 Project Slipstream Changes (#3074)
Browse files Browse the repository at this point in the history
  • Loading branch information
zachleat authored Oct 27, 2023
2 parents ecd0579 + 70b2d1d commit 5427c46
Show file tree
Hide file tree
Showing 391 changed files with 4,504 additions and 7,990 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
strategy:
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
node: ["14", "16", "18", "20"]
node: ["18", "20"]
name: Node.js ${{ matrix.node }} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

A simpler static site generator. An alternative to Jekyll. Written in JavaScript. Transforms a directory of templates (of varying types) into HTML.

Works with HTML, Markdown, JavaScript, Liquid, Nunjucks, Handlebars, Mustache, EJS, Haml, Pug, with addons for WebC, Sass, Vue, Svelte, JSX, and many others!
Works with HTML, Markdown, JavaScript, Liquid, Nunjucks, with addons for WebC, Sass, Vue, Svelte, JSX, and many others!

## [Documentation](https://www.11ty.dev/docs/)

Expand Down
143 changes: 143 additions & 0 deletions cmd.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
#!/usr/bin/env node

// This file intentionally uses older code conventions to be as friendly
// as possible with error messaging to folks on older runtimes.

const pkg = require("./package.json");
require("please-upgrade-node")(pkg, {
message: function (requiredVersion) {
return (
"Eleventy " + pkg.version + " requires Node " +
requiredVersion +
". You will need to upgrade Node to use Eleventy!"
);
},
});

const debug = require("debug")("Eleventy:cmd");

(async function() {
const { default: EleventyErrorHandler } = await import("./src/EleventyErrorHandler.js");
const { default: EleventyBaseError } = await import("./src/EleventyBaseError.js");

class EleventyCommandCheckError extends EleventyBaseError {}

try {
let errorHandler = new EleventyErrorHandler();
const argv = require("minimist")(process.argv.slice(2), {
string: ["input", "output", "formats", "config", "pathprefix", "port", "to"],
boolean: [
"quiet",
"version",
"watch",
"dryrun",
"help",
"serve",
"incremental",
"ignore-initial",
],
default: {
quiet: null,
"ignore-initial": false,
},
unknown: function (unknownArgument) {
throw new EleventyCommandCheckError(
`We don’t know what '${unknownArgument}' is. Use --help to see the list of supported commands.`
);
},
});

debug("command: eleventy %o", argv);
const { Eleventy } = await import("./src/Eleventy.js");

process.on("unhandledRejection", (error, promise) => {
errorHandler.fatal(error, "Unhandled rejection in promise");
});
process.on("uncaughtException", (error) => {
errorHandler.fatal(error, "Uncaught exception");
});
process.on("rejectionHandled", (promise) => {
errorHandler.warn(promise, "A promise rejection was handled asynchronously");
});

if (argv.version) {
console.log(Eleventy.getVersion());
} else if (argv.help) {
console.log(Eleventy.getHelp());
} else {
let elev = new Eleventy(argv.input, argv.output, {
source: "cli",
// --quiet and --quiet=true both resolve to true
quietMode: argv.quiet,
configPath: argv.config,
pathPrefix: argv.pathprefix,
runMode: argv.serve ? "serve" : argv.watch ? "watch" : "build",
dryRun: argv.dryrun,
});

// reuse ErrorHandler instance in Eleventy
errorHandler = elev.errorHandler;

// careful, we can’t use async/await here to error properly
// with old node versions in `please-upgrade-node` above.
elev
.init()
.then(function () {
if (argv.to === "json" || argv.to === "ndjson") {
// override logging output
elev.setIsVerbose(false);
}

elev.setIgnoreInitial(argv["ignore-initial"]);
elev.setIncrementalBuild(argv.incremental);
elev.setFormats(argv.formats);

try {
if (argv.serve) {
let shouldStartServer = true;
elev
.watch()
.catch((e) => {
// Build failed but error message already displayed.
shouldStartServer = false;
// A build error occurred and we aren’t going to --serve
errorHandler.fatal(e, "Eleventy CLI Error");
})
.then(function () {
if (shouldStartServer) {
elev.serve(argv.port);
}
});
} else if (argv.watch) {
elev.watch().catch((e) => {
// A build error occurred and we aren’t going to --watch
errorHandler.fatal(e, "Eleventy CLI Error");
});
} else {
if (argv.to === "json") {
elev.toJSON().then(function (result) {
console.log(JSON.stringify(result, null, 2));
});
} else if (argv.to === "ndjson") {
elev.toNDJSON().then(function (stream) {
stream.pipe(process.stdout);
});
} else if (!argv.to || argv.to === "fs") {
elev.write();
} else {
throw new EleventyCommandCheckError(
`Invalid --to value: ${argv.to}. Supported values: \`fs\` (default), \`json\`, and \`ndjson\`.`
);
}
}
} catch (e) {
errorHandler.fatal(e, "Eleventy CLI Error");
}
})
.catch(errorHandler.fatal.bind(errorHandler));
}
} catch (e) {
let errorHandler = new EleventyErrorHandler();
errorHandler.fatal(e, "Eleventy CLI Fatal Error");
}
})();
132 changes: 0 additions & 132 deletions cmd.js

This file was deleted.

7 changes: 1 addition & 6 deletions docs/release-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

- `@iarna/toml` has a 3.0 that we have never been on but it was released the same day as the last 2.x https://github.com/BinaryMuse/toml-node/commits/master (needs more investigation)

## List of dependencies that went ESM

- `@sindresorhus/slugify` ESM at 2.x
- `multimatch` is ESM at 6
- `bcp-47-normalize` at 1.x

# Release Procedure

1. (Optional) Update minor dependencies in package.json
Expand All @@ -18,6 +12,7 @@
- 0.12.x+ requires Node 10+
- 1.x+ requires Node 12+
- 2.x+ requires Node 14+
- 3.x+ requires Node 18+
1. `rm -rf node_modules && rm -f package-lock.json && npm install`
1. `npm audit`
1. Make sure `npx ava` runs okay
Expand Down
Loading

0 comments on commit 5427c46

Please sign in to comment.