Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
alexblunck committed Nov 6, 2018
0 parents commit 8786bf1
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
.DS_Store
package-lock.json
5 changes: 5 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"tabWidth": 4,
"semi": false,
"singleQuote": true
}
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Next.js + Markdown

Import markdown files in your Next.js project

## Installation

```
npm install --save @blunck/next-md
```

## Usage

Create a `next.config.js` in your project

```js
// next.config.js
const withMarkdown = require('@blunck/next-md')()
module.exports = withMarkdown()
```

You can now import parsed strings from `.md` files

```js
import foo from './foo.md'

export default () => <div dangerouslySetInnerHTML={{ __html: foo }} />
```

### With `markdown-loader` and `html-loader` options

Optionally you can provide [Marked.js](https://marked.js.org/#/USING_ADVANCED.md#options) and [html-loader](https://github.com/webpack-contrib/html-loader) options

```js
// next.config.js
const withMarkdown = require('@blunck/next-md')({
markdownLoaderOptions: {
gfm: true
},
htmlLoaderOptions: {
minimize: true,
conservativeCollapse: false
}
})
module.exports = withMarkdown()
```

### Configuring Next.js

Optionally you can add your custom Next.js configuration as parameter

```js
// next.config.js
const withMarkdown = require('@blunck/next-md')()
module.exports = withMarkdown({
webpack(config, options) {
return config
}
})
```
44 changes: 44 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const defaultHtmlOptions = {
minimize: true,
conservativeCollapse: false
}

const defaultMarkdownOptions = {
gfm: true
}

module.exports = ({ htmlLoaderOptions, markdownLoaderOptions } = {}) => (
nextConfig = {}
) => {
return Object.assign({}, nextConfig, {
webpack(config, options) {
config.module.rules.push({
test: /\.md$/,
use: [
{
loader: 'html-loader',
options: Object.assign(
{},
defaultHtmlOptions,
htmlLoaderOptions
)
},
{
loader: 'markdown-loader',
options: Object.assign(
{},
defaultMarkdownOptions,
markdownLoaderOptions
)
}
]
})

if (typeof nextConfig.webpack === 'function') {
return nextConfig.webpack(config, options)
}

return config
}
})
}
22 changes: 22 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "@blunck/next-md",
"version": "1.0.0",
"description": "Import markdown files in your Next.js project",
"main": "index.js",
"repository": "alexblunck/next-md",
"keywords": [
"nextjs",
"markdown-loader",
"markdown"
],
"author": "Alexander Blunck",
"license": "MIT",
"bugs": {
"url": "https://github.com/alexblunck/next-md/issues"
},
"homepage": "https://github.com/alexblunck/next-md#readme",
"dependencies": {
"html-loader": "0.5.5",
"markdown-loader": "4.0.0"
}
}

0 comments on commit 8786bf1

Please sign in to comment.