@rayners/foundry-dev-tools
v1.6.1
Published
Shared development tools and configurations for FoundryVTT modules
Maintainers
Readme
@rayners/foundry-dev-tools
Shared development tools and configurations for FoundryVTT modules.
Installation
npm install --save-dev @rayners/foundry-dev-toolsUsage
Rollup Configuration
Create or update your rollup.config.js:
import { createFoundryConfig } from '@rayners/foundry-dev-tools';
export default createFoundryConfig({
cssFileName: 'styles/your-module-name.css',
additionalCopyTargets: [
{ src: 'assets/**/*', dest: 'dist/' },
{ src: 'calendars', dest: 'dist' }
]
});For modules that need directory output (like J&J):
import { createFoundryConfigWithDir } from '@rayners/foundry-dev-tools';
export default createFoundryConfigWithDir({
cssFileName: 'styles/journeys-and-jamborees.css',
additionalCopyTargets: [
{ src: 'templates/partials/*.hbs', dest: 'dist/templates/partials/' }
]
});TypeScript Configuration
Create or update your tsconfig.json:
{
"extends": "@rayners/foundry-dev-tools/configs/tsconfig.base.json",
"compilerOptions": {
"types": ["jquery"],
"typeRoots": ["./node_modules/@types", "./src/types"]
}
}ESLint Configuration
Create or update your .eslintrc.json:
{
"extends": ["@rayners/foundry-dev-tools/configs/eslint"]
}Prettier Configuration
Create prettier.config.js:
export { default } from '@rayners/foundry-dev-tools/configs/prettier.config.js';Or add to your package.json:
{
"prettier": "@rayners/foundry-dev-tools/configs/prettier.config.js"
}Vitest Configuration
Create or update your vitest.config.ts:
import { createFoundryTestConfig } from '@rayners/foundry-dev-tools/configs/vitest.config.js';
export default createFoundryTestConfig();With custom coverage thresholds:
export default createFoundryTestConfig({
test: {
coverage: {
thresholds: {
global: {
lines: 90,
functions: 90
}
}
}
}
});Features
- Standardized Rollup Configuration: Automatic SCSS compilation, file copying, and GitHub release URL injection
- TypeScript Configuration: Optimized for FoundryVTT module development
- ESLint Rules: Foundry-specific globals and TypeScript best practices
- Prettier Formatting: Consistent code formatting across all modules
- Vitest Testing: Pre-configured for FoundryVTT module testing with jsdom environment
- Development Server: Built-in dev server with live reload for faster development
Configuration Options
Rollup Options
cssFileName: Required - Output path for compiled CSSadditionalCopyTargets: Additional files to copy to distscssOptions: Override SCSS plugin optionstypescriptOptions: Override TypeScript plugin optionsuseDevServer: Enable development server (default:process.env.SERVE === 'true')devServerPort: Development server port (default: 30000)outputFormat: 'es' for single file, 'dir' for directory output
Package.json Updates
After installing, you can remove these duplicate dependencies from your modules:
{
"devDependencies": {
// Remove these - they're now provided by @rayners/foundry-dev-tools
"@rollup/plugin-node-resolve": "^15.0.0",
"@rollup/plugin-typescript": "^11.0.0",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"@vitest/coverage-v8": "^3.1.4",
"eslint-config-prettier": "^10.1.5",
"eslint-plugin-prettier": "^5.4.0",
"jsdom": "^26.1.0",
"rollup-plugin-copy": "^3.4.0",
"rollup-plugin-scss": "^4.0.0",
"sass": "^1.62.0",
"tslib": "^2.5.0"
}
}GitHub Packages
This package is published to GitHub Packages. Make sure your .npmrc includes:
@rayners:registry=https://npm.pkg.github.comLicense
MIT
