plop

Consistency Made Simple

MIT License

Downloads
7.2M
Stars
6.9K
Committers
78

Bot releases are visible (Hide)

plop - [email protected] Latest Release

Published by crutchcorn 10 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@4.0.1

plop - [email protected]

Published by crutchcorn about 1 year ago

The next major release of plop since 2021 is here!

We've got a massive feature in this release: TypeScript Configuration File Support. Read further to find out more!

Breaking Changes

  • Node 12, 14, and 16 support has been dropped

Features

TypeScript Configuration Support

The major feature of this release is support for TypeScript plopfile.ts files out-of-the-box (https://github.com/plopjs/plop/issues/297). This is a long-standing feature request and it's now live!

While we have an E2E test to validate that this feature works, please let us know if there's any issues with it.

It's clear to us now that this feature wasn't in the oven quite long enough. Please check https://github.com/plopjs/plop/issues/297 for status updates. Apologies for the miscommunication.

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@4.0.0

plop - [email protected]

Published by crutchcorn over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@3.1.2

plop - [email protected]

Published by crutchcorn over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@0.31.1

plop - [email protected]

Published by crutchcorn over 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@3.1.1

plop - [email protected]

Published by crutchcorn over 2 years ago

What's Changed

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@3.1.0

plop - [email protected]

Published by crutchcorn over 2 years ago

What's Changed

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]@0.31.0

plop - [email protected]

Published by crutchcorn over 2 years ago

This is the first release under the plop monorepo instead of having node-plop in a dedicated repo.

No code changes outside of merging into the monorepo were made.

plop - [email protected]

Published by crutchcorn over 2 years ago

This repo is now a monorepo, which is housed alongside the code for node-plop. All previous releases refer to only plop itself, and not node-plop.

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/[email protected]

plop - v3.0.5

Published by crutchcorn almost 3 years ago

What's Changed

Full Changelog: https://github.com/plopjs/plop/compare/v3.0.4...v3.0.5

plop - v3.0.4

Published by crutchcorn almost 3 years ago

plop - v3.0.3

Published by crutchcorn almost 3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/v3.0.2...v3.0.3

plop - v3.0.2

Published by crutchcorn almost 3 years ago

What's Changed

Fixed

Full Changelog: https://github.com/plopjs/plop/compare/v3.0.1...v3.0.2

plop - v3.0.1

Published by crutchcorn almost 3 years ago

  • Fixes run typing to be a promise, as was updated in Plop 3
plop - v3.0.0 🎉

Published by crutchcorn almost 3 years ago

The first major release of plop since 2018 is here!

We've got a massive feature in this release: ESM Support. Read further to find out more!

Breaking Changes

  • Node 8 and 10 support has been dropped
    • Node 12 and 14 must be match ^12.20.0 and ^14.13.1 respectively

Wrapper CLI Breaking Changes

This section doesn't apply to users of the plop CLI command, only those that are using plop as a library in their own generator tool.

  • Plop wrapper CLIs must be ESM to import plop (see below to learn more)
  • Liftoff has been upgraded from 1 to 4 and as a result, the Plop object API has changed. Instead of:
Plop.launch({
  cwd: argv.cwd,
  configPath: path.join(__dirname, 'plopfile.js'),
  require: argv.require,
  completion: argv.completion
}, env => run(env, undefined, true));

You need to do:

import { dirname } from "node:path";

import { fileURLToPath } from "node:url";

const __dirname = dirname(fileURLToPath(import.meta.url));

Plop.prepare({
  cwd: argv.cwd,
  configPath: path.join(__dirname, 'plopfile.js'),
  preload: argv.preload || [],
  completion: argv.completion
}, env => Plop.execute(env, run));

Features

ESM Support

The major feature of this release is support for ESM modules (https://github.com/plopjs/plop/issues/260)

This means that instead of:

module.exports = (plop) => {
	// ...
}

You can now have the following code in your plopfile:

export default (plop) => {
	// ...
}

Going forward, plopfiles must either be:

  • An ESM .mjs file with type: "module" in package.json
  • An ESM .js file with type: "module" in package.json
  • A CommonJS .cjs file with type: "module" in package.json
  • A CommonJS .js file with type: "commonjs" in package.json

Any of these file extensions will be recognized and accepted with the default plopfile name, just like before.

If you want to learn more about ESM usage in a library, here's some further reading provided by Sindre Sorhus.

These limitations will also be present for plop wrapper CLIs, so it's encouraged to read the above if you're doing so.

Async Plopfunctions

While previously a plopfile.js had to be a synchronous export - we now allow you to make an async function. We handle the rest!

export default async (plop) => {
	// ...
}

Bug Fixes

Internal Changes

The plop CLI itself now has a solid end-to-end tests. While this isn't done, it is very functional today. These tests have enabled us to be confident that this release should work for 99% of users without having to change much if anything at all on their end.

We even wrote our own testing library to support this

Admittedly, we have a low coverage rate, but are testing against most of the big stuff today. We welcome and encourage pull requests adding more tests to increase that rate.

We've also added CI to run those end-to-end tests against every PR against the main branch.

Looking Ahead

While this release is fun, there's more that we want to do internally sometime in the near future.

Namely:

  • Simplify node-plop tests
  • Migrate node-plop to use jest instead of ava
  • Move node-plop to monorepo in the plop repo
  • Add commit hooks and autogenerated changelog to node-plop and plop
  • Rename branches from master to main
  • Add TS example tests to plop
plop - v2.7.6

Published by crutchcorn about 3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/v2.7.5...v2.7.6

plop - v2.7.5

Published by crutchcorn about 3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/plopjs/plop/compare/v2.7.4...v2.7.5

plop - v2.7.4

Published by crutchcorn about 4 years ago

  • Fix various typing issues
plop - v2.7.3

Published by crutchcorn about 4 years ago

plop - v.2.7.2

Published by crutchcorn over 4 years ago

  • Fix typescript typing errors