Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/caviarjs/next-resolve-alias-plugin

@caviar/next-block plugin to define module resolving aliases for both server side and client side
https://github.com/caviarjs/next-resolve-alias-plugin

caviar caviar-plugin

Last synced: about 2 months ago
JSON representation

@caviar/next-block plugin to define module resolving aliases for both server side and client side

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/kaelzhang/caviar-plugin-resolve-alias.svg?branch=master)](https://travis-ci.org/kaelzhang/caviar-plugin-resolve-alias)
[![Coverage](https://codecov.io/gh/kaelzhang/caviar-plugin-resolve-alias/branch/master/graph/badge.svg)](https://codecov.io/gh/kaelzhang/caviar-plugin-resolve-alias)

# @caviar/next-resolve-alias-plugin

[@caviar/next-block](https://www.npmjs.com/package/@caviar/next-block) plugin to define module resolving aliases for both server side and client side

## Install

```sh
$ npm i @caviar/next-resolve-alias-plugin
```

## Usage

caviar.config.js

```js
const AliasPlugin = require('@caviar/next-resolve-alias-plugin')

module.exports = {
caviar: {
plugins: [
new AliasPlugin([{
id: 'fetch',
server: 'node-fetch',
client: 'fetch-ponyfill'
}], __dirname),
...
]
},
...
}
```

The code above will set `webpack.output.resolve.alias.fetch` as

- `'node-fetch'` in server side
- and `'fetch-ponyfill'` in client side

## new AliasPlugin(aliases, defaultFrom?)

- **aliases** `Array`
- **defaultFrom?** `path`

```ts
interface Alias {
// Module id
id: string
// `server` could be
// - a module id string
// - a `require.resolve()`d absolute path for a module id
// - false to prevent from setting resolve alias for server side
server?: string = id | false
client?: string = id | false
// Where should `server` and `client` be resolved from, defaults to `defaultFrom`,
// will be useless if `server` and `client` are both absolute paths
from?: string = defaultFrom
}
```

### Using `react` installed in current project

```js
new AliasPlugin(['react'], __dirname)
```

Or

```js
// You could resolve the module id yourself
new AliasPlugin([{
id: 'react',
server: require.resolve('react'),
client: require.resolve('react')
}])

// `defaultFrom` could be omitted if `server` and `client` are absolute paths
```

## License

MIT