English | 简体中文
Require2
is an enhanced version of builtinrequire
module. It supports alias to simplify your tedious require statement and also provides some experiential features.
npm install @misaka.ink/require2
Add field alias
to maintain mapping rules in your package.json
file, all path should be related to the dir of package.json
path.
CAUTION: when usingrequire2(${module})
, only the nearest package.json
to current js file will be used.
Your package.json file
{
"alias": {
"@x": "@lerna",
"@components": "./packages/components/src/"
}
}
require('@misaka.ink/require2') // include require2 in your entry file, which only need once
require2('@components/header') // => equal to `require('<PROJECT_ROOT>/packages/components/src/header')`
require2('@x/version') // => equal to `require('@lerna/version')`
const env = {
development: require('./conf'),
production: require('./conf.prod.json'),
test: require('./conf.test')
}[process.env.NODE_ENV || 'development']
require2
provides a method to add envmap
files to reduce env based code.
CAUTION: the .json
postfix is strictly required to enable this feature. And you can use envmap with alias without any conflict.
{
"envmap": {
"production": "prod",
"test": "test",
"[NODE_ENV]": "[ABBR]"
}
}
/**
below is statement is equal to
```javascript
const env = {
development: require('./conf'),
production: require('./conf.prod.json'),
test: require('./conf.test')
}[process.env.NODE_ENV || 'development']
```
*/
const conf = require2('./conf.json')
/**
below is statement is equal to
```javascript
const env = {
development: require('<PROJECT_ROOT>/packages/components/src/mainfest.json'),
production: require('<PROJECT_ROOT>/packages/components/src/mainfest.prod.json'),
test: require('<PROJECT_ROOT>/packages/components/src/mainfest.test.json'),
}[process.env.NODE_ENV || 'development']
```
*/
require2('@components/mainfest.json')