project
Access project metadata and paths.
Interface
await this.project.name
await this.project.rootPath
await this.project.config
await this.project.existsProperties
| Property | Description |
|---|---|
name | Project name from package.json (or 'unknown') |
rootPath | Absolute path to project root |
configPath | Path to package.json |
config | Parsed package.json contents |
exists | Boolean - valid project found |
entryPath | Main entry point path |
nodePaths | Array of node_modules directories |
Description
The project service provides access to project metadata from package.json. It walks up the directory tree to find the project root and parses configuration.
Examples
Basic Usage
export default {
async run() {
const projectName = await this.project.name;
console.log(`Project: ${projectName}`);
if (await this.project.exists) {
console.log('Valid project detected');
}
}
}Access Package.json
export default {
async run() {
const config = await this.project.config;
console.log(`Version: ${config.version}`);
console.log(`Description: ${config.description}`);
}
}Database Naming
export default {
async normalizeDatabaseConfig(config) {
const environment = process.env.NODE_ENV || 'development';
return {
...config,
database: `${this.inflector.snakeify(await this.project.name)}_${environment}`
};
}
}Version Service
export default {
create() {
return this.defer(async () => {
let version = await this.project.config.version || '0.1.0';
if (await this.environment === 'development') {
version += `.${Date.now()}`;
}
return version;
});
}
}Notes
- Uses deferred initialization (requires
await) - Returns 'unknown' for name when not found
- All paths are absolute and resolved
- Singleton instance shared across application