The generated files
Pending Updates
This page has not yet been updated for Feathers Dove.
Let's have a brief look at the files that have been generated:
For TypeScript Apps
config/
contains the configuration files for the appdefault.json
contains the basic application configurationproduction.json
files overridedefault.json
when in production mode by settingNODE_ENV=production
. For details, see the configuration API documentation
node_modules/
our installed dependencies which are also added in thepackage.json
public/
contains static files to be served. A sample favicon andindex.html
(which will show up when going directly to the server URL) are already included.src/
contains the Feathers server code.hooks/
contains our custom hooksservices/
contains our servicesusers/
is a service that has been generated automatically to allow registering and authenticating usersusers.class.ts
is the service classusers.hooks.ts
initializes Feathers hooks for this serviceusers.service.ts
registers this service on our Feathers application
middleware/
contains any Express middlewaremodels/
contains database model filesusers.model.ts
sets up our user collection for NeDB
app.ts
configures our Feathers application like we did in the getting started chapterapp.hooks.ts
registers hooks that apply to every serviceauthentication.ts
sets up Feathers authentication systemchannels.ts
sets up Feathers event channelsdeclarations.ts
contains TypeScript declarations for our appindex.ts
loads and starts the application
test/
contains test files for the app, hooks and servicesservices/
has our service testsusers.test.ts
contains some basic tests for theusers
service
app.test.ts
tests that the index page appears, as well as 404 errors for HTML pages and JSONauthentication.test.ts
includes some tests that basic authentication works
.editorconfig
is an EditorConfig setting to help developers define and maintain consistent coding styles among different editors and IDEs..gitignore
specifies intentionally untracked files which git, GitHub and other similar projects ignore.tsconfig.json
the TypeScript compiler configurationpackage.json
contains information about our NodeJS project like its name or dependencies.README.md
has installation and usage instructions
Feathers does not use a complex dependency injection mechanism.
Configure functions
The most important pattern used in the generated application to split things up into individual files are configure functions which are functions that are exported from a file and take the Feathers app object and then use it to e.g. register services. Those functions are then passed to app.configure.
For example, have a look at the following files:
For TypeScript Apps
src/services/index.ts
looks like this:
import { Application } from '../declarations'
import users from './users/users.service'
export default function (app: Application) {
app.configure(users)
}
import { Application } from '../declarations'
import users from './users/users.service'
export default function (app: Application) {
app.configure(users)
}
import { Application } from '../declarations.js'
import users from './users/users.service.js'
export default function (app) {
app.configure(users)
}
import { Application } from '../declarations.js'
import users from './users/users.service.js'
export default function (app) {
app.configure(users)
}
It uses another configure function exported from src/services/users/users.service.ts
. The export from src/services/index.js
is in turn used in src/app.ts
as:
// ...
import services from './services'
// ...
app.configure(authentication)
// Set up our services (see `services/index.js`)
app.configure(services)
// ...
// ...
import services from './services'
// ...
app.configure(authentication)
// Set up our services (see `services/index.js`)
app.configure(services)
// ...
// ...
import services from './services.js'
// ...
app.configure(authentication)
// Set up our services (see `services/index.js`)
app.configure(services)
// ...
// ...
import services from './services.js'
// ...
app.configure(authentication)
// Set up our services (see `services/index.js`)
app.configure(services)
// ...
This is how the generator splits things up into separate files and any documentation example that uses the app
object can be used in a configure function. You can create your own files that export a configure function and require
/import
and app.configure
them in app.js
.
Note: Keep in mind that the order in which configure functions are called might matter, e.g. if it is using a service, that service has to be registered first.