├── .npmignore ├── .gitignore ├── test ├── samples │ ├── test.md │ └── main.js └── test.js ├── rollup.config.js ├── README.md ├── .eslintrc ├── src └── index.js └── package.json /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | -------------------------------------------------------------------------------- /test/samples/test.md: -------------------------------------------------------------------------------- 1 | ## rollup-plugin-md 2 | 3 | a simple plugin -------------------------------------------------------------------------------- /test/samples/main.js: -------------------------------------------------------------------------------- 1 | import md from './test.md' 2 | console.log('md: ', md) -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | var pkg = require('./package.json') 2 | var external = Object.keys( pkg.dependencies ); 3 | 4 | export default { 5 | input: 'src/index.js', 6 | output: [ 7 | { 8 | format: 'cjs', 9 | file: pkg['main'], 10 | sourcemap: true, 11 | exports: 'auto' 12 | }, 13 | { 14 | format: 'es', 15 | file: pkg['jsnext:main'], 16 | sourcemap: true 17 | } 18 | ], 19 | external: external 20 | }; 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rollup-plugin-md 2 | ## Install 3 | 4 | ```node 5 | npm install rollup-plugin-md --save 6 | ``` 7 | 8 | ## usage 9 | 10 | ```js 11 | import md from './test.md'; 12 | console.log( `Template for render: ${md}` ); 13 | ``` 14 | 15 | ```js 16 | import { rollup } from 'rollup'; 17 | import md from 'rollup-plugin-md'; 18 | 19 | rollup({ 20 | entry: 'main.js', 21 | plugins: [ 22 | md({ 23 | // to disable marked set to false 24 | marked: { 25 | //marked options 26 | } 27 | }) 28 | ] 29 | }); 30 | ``` 31 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "indent": [ 2, "tab", { "SwitchCase": 1 } ], 4 | "quotes": [ 2, "single" ], 5 | "linebreak-style": [ 2, "unix" ], 6 | "semi": [ 2, "always" ], 7 | "keyword-spacing": [ 2, { "before": true, "after": true } ], 8 | "space-before-blocks": [ 2, "always" ], 9 | "space-before-function-paren": [ 2, "always" ], 10 | "no-mixed-spaces-and-tabs": [ 2, "smart-tabs" ], 11 | "no-cond-assign": [ 0 ] 12 | }, 13 | "env": { 14 | "es6": true, 15 | "browser": true, 16 | "mocha": true, 17 | "node": true 18 | }, 19 | "extends": "eslint:recommended", 20 | "parserOptions": { 21 | "ecmaVersion": 6, 22 | "sourceType": "module" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import marked from 'marked'; 2 | import { createFilter } from 'rollup-pluginutils'; 3 | 4 | const ext = /\.md$/; 5 | 6 | 7 | export default function md ( options = {} ) { 8 | const filter = createFilter( options.include || [ '**/*.md'], options.exclude ); 9 | if(options.marked){ 10 | marked.setOptions(options.marked) 11 | } 12 | return { 13 | name: 'md', 14 | 15 | transform ( md, id ) { 16 | if ( !ext.test( id ) ) return null; 17 | if ( !filter( id ) ) return null; 18 | 19 | const data = options.marked === false ? md : marked( md ); 20 | return { 21 | code: `export default ${JSON.stringify(data.toString())};`, 22 | map: { mappings: '' } 23 | }; 24 | } 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rollup-plugin-md", 3 | "version": "1.0.1", 4 | "description": "a rollup plugin for markdown files", 5 | "main": "dist/rollup-plugin-md.js", 6 | "jsnext:main": "dist/rollup-plugin-md.mjs", 7 | "scripts": { 8 | "test": "mocha test/*.js", 9 | "pretest": "npm run build", 10 | "build": "rollup -c", 11 | "prebuild": "rm -rf dist/*" 12 | }, 13 | "keywords": [ 14 | "rollup", 15 | "plugin", 16 | "md", 17 | "markdown" 18 | ], 19 | "author": "yangxiaofu", 20 | "license": "ISC", 21 | "dependencies": { 22 | "marked": "^1.2.7", 23 | "rollup": "^2.35.1", 24 | "rollup-pluginutils": "^2.8.2" 25 | }, 26 | "devDependencies": { 27 | "@rollup/plugin-node-resolve": "^11.0.1", 28 | "assert": "^2.0.0", 29 | "eslint": "^7.16.0", 30 | "mocha": "^8.2.1", 31 | "source-map-support": "^0.5.19" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | var assert = require( 'assert' ); 2 | var rollup = require( 'rollup' ); 3 | var md = require( '../dist/rollup-plugin-md.js' ); 4 | var npm = require( '@rollup/plugin-node-resolve' ); 5 | 6 | require( 'source-map-support' ).install(); 7 | 8 | process.chdir( __dirname ); 9 | 10 | function executeBundle ( bundle ) { 11 | var generated = bundle.generate(); 12 | var code = generated.code; 13 | 14 | var fn = new Function( 'assert', code ); 15 | fn( assert ); 16 | } 17 | 18 | describe( 'rollup-plugin-md', function () { 19 | it( 'converts md', function () { 20 | return rollup.rollup({ 21 | input: 'samples/main.js', 22 | plugins: [ md({ 23 | marked: { 24 | gfm: true, 25 | tables: true, 26 | breaks: false, 27 | pedantic: false, 28 | smartLists: true, 29 | smartypants: false 30 | } 31 | }) ] 32 | }).then( executeBundle ); 33 | }); 34 | }); 35 | --------------------------------------------------------------------------------