Package Exports
- @mountainpass/cool-bits-for-projen
- @mountainpass/cool-bits-for-projen/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@mountainpass/cool-bits-for-projen) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
cool-bits-for-projen
A collection of cool projen components
Installation & Usage
If you don't have projen installed and configured, you'll need to go do that first.
Add
@mountainpass/cool-bits-for-projento you development dependencies. e.g., in your.projenrc.ts
const project = new TypeScriptProject({
//...
devDeps: [
//...
"@mountainpass/cool-bits-for-projen"
],
//...
});or
const project = new TypeScriptProject({
//...
});
project.addDevDeps("@mountainpass/cool-bits-for-projen");Run
npx projento regenerate the project filesAdd the components to you project in your
.projenrc.tsfile. For example, to add all the recommended components, addRecommended
import { Recommended } from "@mountainpass/cool-bits-for-projen";
//...
const project = new TypeScriptProject({
...Recommended.defaultProjectOptions,
//...
});
new Recommended(project);
//...
project.synth();or you can add individual components
import { Husky, EslintUnicorn } from "@mountainpass/cool-bits-for-projen";
//...
const project = new TypeScriptProject({
...EslintUnicorn.defaultProjectOptions,
//...
});
new Husky(project);
new EslintUnicorn(project);
//...
project.synth();- Run
npx projento generate the project files
Components
| Component | Functionality | Uses | Base Project Type Required | Included in Recommended |
|---|---|---|---|---|
CodeOfConduct |
Add a Contributor Covenant v2.1 CODE_OF_CONDUCT.md to your project.NOTE: CodeOfConduct is not automatically included in the Recommended component because we believe adopting the Contributor Covenant should be a conscious deliberate decision and not something done inadvertently. We actively recommend its adoption |
Project | ||
Commitlint |
Checks if your commit messages meet the conventional commit format. | commitlint | NodeProject | ✅ |
Contributors |
Adds github authors to the project's contributors list | shelljs-plugin-authors | NodeProject | ✅ |
CSpell |
Provides spell checking for your code and your commit messages | cspell | NodeProject | ✅ |
EslintIgnore |
Creates an ESLint ignore file containing the projen generated files | TypeScriptProject | ✅ | |
EslintJsdoc |
Provides JSDoc specific linting rules for ESLint | eslint-plugin-jsdoc | TypeScriptProject | ✅ |
EslintJsonC |
Provides linting of JSON files | eslint-plugin-jsonc | TypeScriptProject | ✅ |
EslintNoSecrets |
Adds an eslint plugin to find strings that might be secrets/credentials | eslint-plugin-no-secrets | TypeScriptProject | ✅ |
EslintPrettierFixer |
Ensures prettier is the last entry in your eslint extends section, which is needed for prettier to work correctly with eslint |
TypeScriptProject | ✅ | |
EslintUnicorn |
Provides more than 100 powerful ESLint rules | eslint-plugin-unicorn | TypeScriptProject | ✅ |
Husky |
Git hooks made easy 🐶 woof! | husky | NodeProject | ✅ |
Recommended |
Includes all the "included in recommended" components in this table | TypeScriptProject | ||
VscodeExtensionRecommendations |
Manages vscode extension recommendations for your project | Project | ✅ |
Pseudo-Components
Pseudo-Components behave like components but are created before the project. This is needed in situations where the project options are being generated.
| Pseudo-Component | Functionality | Base Project Type Required |
|---|---|---|
GitHubber |
The GitHubber pseudo-component add github repo, issues and homepage URLs to your project |
NodeProject |
NpmReleaser |
The NpmReleaser pseudo-component add npm release data to the project |
NodeProject |
Organisational |
The Organisational pseudo-component add organisation based author data to the project |
NodeProject |
Pseudo-Component Usage
Pseudo-Components are constructed and then added to the project using the addToProject() method
import { Organisational } from "@mountainpass/cool-bits-for-projen";
const organisational = new Organisational({
organisation: {
name: "Mountain Pass",
email: "info@mountain-pass.com.au",
url: "https://mountain-pass.com.au",
}
});
const project = new TypeScriptProject(
...organisational.nodeProjectOptions(),
//...
)
// NOTE: The follow step is needed for Pseudo-Components, otherwise
// their `preSynthesize()`, `synthesize()`, and `postSynthesize()`
// methods will not be called
organisational.addToProject(project);