Awesome NodeJS stack (M.E.E.N = MongoDB + ExpressJS + EdgeJS + NodeJS)
npm install @dudojs/meenjavascript
/**
* Compose an app. You can compose website or api app with built-in modules via options or your own fully-customised app by passing modules via modules
* @param {String} appName Your app name
* @param {Array} modules Module must be function with first param is app as Express App Instance and second param is config
*/
composeApp(appName, modules);
`
Note: Order of configuration as the following:
1. Default
1. @local/config/app.js (will be loaded if available)
1. {appName}/config/app.js (will be loaded if available)
Note 2: Other files in {appName}/config/app.js will be load as properties of app.config. Such as icon.js will
be available in app.config.icon.
Built-in modules
Each module has its own config same as its name. Example: publicFolder module will use publicFolder in config
Modules list:
* bodyParser
* bruteForce
* compression
* cors
* handleError
* mongoose
* morgan
* publicFolder
* session
* view
Presets
MEEN provides presets for app types via config.app.preset. Order of modules will be loaded as specified in below
$3
1. compression
1. publicFolder
1. view
1. session
1. bodyParser
1. mongoose
1. morgan
$3
1. cors
1. bodyParser
1. mongoose
1. morgan
Default configuration
`javascript
const { resolvePath } = require('@dudojs/utils');
const en = require('./locale/en');
const vi = require('./locale/vi');
module.exports = {
lang: 'en',
locales: {
en,
vi,
},
preset: null,
loadLocalPackage: {
enabled: false,
},
info: {
title: 'M.E.E.N',
version: '1.0.0',
},
mongoose: {
debug: false,
options: {
useNewUrlParser: true,
useUnifiedTopology: true,
},
},
logger: {
level: 'info',
logFile: false,
},
cors: '*',
session: {
secret: 'M.E.E.N',
maxAge: 7 24 60 60 1000,
},
publicFolder: {
path: {
'/public': resolvePath('public'),
},
debug: false,
},
view: {
minify: false,
cache: false,
},
handleError: {
enabled: true,
isJson: false,
},
bodyParser: {
json: {
limit: '5mb',
},
urlencoded: {
limit: '5mb',
extended: true,
},
},
bruteForce: {
mongoStore: true,
collectionName: 'BRUTE_FORCE',
maxRequest: 60,
limitTime: 60 * 1000,
},
paginator: {
itemPerPage: 20,
pageStep: 2,
},
};
``