├── .eslintrc ├── .gitignore ├── CHANGELOG.md ├── README.md ├── package.json ├── rollup.config.js ├── src └── index.js └── test ├── samples ├── basic │ ├── Widget.html │ └── main.js └── nested │ ├── components │ ├── Main.html │ └── foo │ │ └── Foo.html │ └── main.js └── test.js /.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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ 3 | node_modules 4 | dist 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # rollup-plugin-ractive changelog 2 | 3 | ## 2.0.0 4 | 5 | * Update rcu, to support Ractive 0.8 6 | 7 | ## 1.2.1 8 | 9 | * Return a `name` 10 | 11 | ## 1.2.0 12 | 13 | * Update dependencies 14 | 15 | ## 1.1.2 16 | 17 | * Add missing dependency 18 | 19 | ## 1.1.1 20 | 21 | * Add missing dependency 22 | 23 | ## 1.1.0 24 | 25 | * Sourcemap support 26 | 27 | ## 1.0.1 28 | 29 | * Fix rcu-builders dependency 30 | 31 | ## 1.0.0 32 | 33 | * First release 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Inactive 2 | 3 | Ractive as a project is essentially dead, and this plugin is no longer maintained nor supported. 4 | 5 | # rollup-plugin-ractive 6 | 7 | Precompile Ractive components. 8 | 9 | 10 | ## Installation 11 | 12 | ```bash 13 | npm install --save ractive # not included! 14 | npm install --save-dev rollup-plugin-ractive 15 | ``` 16 | 17 | 18 | ## Usage 19 | 20 | ```js 21 | import { rollup } from 'rollup'; 22 | import ractive from 'rollup-plugin-ractive'; 23 | 24 | rollup({ 25 | entry: 'src/main.js', 26 | plugins: [ 27 | ractive({ 28 | // By default, all .html files are compiled 29 | extensions: [ '.html', '.ract' ], 30 | 31 | // You can restrict which files are compiled 32 | // using `include` and `exclude` 33 | include: 'src/components/**.html', 34 | 35 | // Output format. When doing server-side rendering, you might need to set this 36 | // to "cjs" if you import other JS files in your components. 37 | format: 'es6', 38 | 39 | // Options passed to Ractive.parse() 40 | parseOptions: {} 41 | }) 42 | ] 43 | }).then(...) 44 | ``` 45 | 46 | ## License 47 | 48 | MIT 49 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rollup-plugin-ractive", 3 | "description": "Compile Ractive components", 4 | "version": "2.2.0", 5 | "author": "Rich Harris", 6 | "repository": "rollup/rollup-plugin-ractive", 7 | "license": "MIT", 8 | "main": "dist/rollup-plugin-ractive.cjs.js", 9 | "jsnext:main": "dist/rollup-plugin-ractive.es.js", 10 | "module": "dist/rollup-plugin-ractive.es.js", 11 | "scripts": { 12 | "build": "rollup -c", 13 | "test": "mocha --compilers js:buble/register test/test.js", 14 | "pretest": "npm run build", 15 | "prepublish": "npm run lint && rm -rf dist && npm test", 16 | "lint": "eslint src" 17 | }, 18 | "files": [ 19 | "dist", 20 | "README.md" 21 | ], 22 | "devDependencies": { 23 | "buble": "^0.14.0", 24 | "eslint": "^3.9.0", 25 | "mocha": "^3.1.2", 26 | "ractive": "^0.10.0", 27 | "rollup": "^0.36.3", 28 | "rollup-plugin-buble": "^0.14.0" 29 | }, 30 | "dependencies": { 31 | "rcu": "^0.11.0", 32 | "rcu-builders": "^0.6.0", 33 | "rollup-pluginutils": "^1.3.1" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import buble from 'rollup-plugin-buble'; 2 | 3 | export default { 4 | entry: 'src/index.js', 5 | plugins: [ buble() ], 6 | targets: [ 7 | { dest: 'dist/rollup-plugin-ractive.cjs.js', format: 'cjs' }, 8 | { dest: 'dist/rollup-plugin-ractive.es.js', format: 'es' } 9 | ] 10 | }; 11 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import { extname } from 'path'; 2 | import Ractive from 'ractive'; 3 | import rcu from 'rcu'; 4 | import * as builders from 'rcu-builders'; 5 | import { createFilter } from 'rollup-pluginutils'; 6 | 7 | rcu.init( Ractive ); 8 | 9 | export default function dsv ( options = {} ) { 10 | const filter = createFilter( options.include, options.exclude ); 11 | const extensions = options.extensions || [ '.html' ]; 12 | const format = options.format || 'es6'; 13 | 14 | return { 15 | name: 'ractive', 16 | 17 | transform ( code, id ) { 18 | if ( !filter( id ) ) return null; 19 | 20 | if ( !~extensions.indexOf( extname( id ) ) ) return null; 21 | 22 | const definition = rcu.parse( code, options.parseOptions ); 23 | const module = builders[ format ]( definition, { 24 | preserveExtensions: true, 25 | sourceMap: true 26 | }); 27 | 28 | return module; 29 | } 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /test/samples/basic/Widget.html: -------------------------------------------------------------------------------- 1 |

the answer is {{answer}}

2 | 3 | 10 | -------------------------------------------------------------------------------- /test/samples/basic/main.js: -------------------------------------------------------------------------------- 1 | import Widget from './Widget.html'; 2 | 3 | const widget = new Widget(); 4 | 5 | assert.equal( widget.toHTML(), '

the answer is 42

' ); 6 | assert.equal( widget.get( 'answer' ), 42 ); 7 | -------------------------------------------------------------------------------- /test/samples/nested/components/Main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | -------------------------------------------------------------------------------- /test/samples/nested/components/foo/Foo.html: -------------------------------------------------------------------------------- 1 |

Foo

2 | -------------------------------------------------------------------------------- /test/samples/nested/main.js: -------------------------------------------------------------------------------- 1 | import Main from './components/Main.html'; 2 | 3 | const ractive = new Main(); 4 | 5 | assert.equal( ractive.toHTML(), '

Foo

' ); 6 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | const assert = require( 'assert' ); 2 | const { rollup } = require( 'rollup' ); 3 | const ractive = require( '..' ); 4 | 5 | process.chdir( __dirname ); 6 | 7 | function executeBundle ( bundle ) { 8 | const generated = bundle.generate({ 9 | format: 'cjs' 10 | }); 11 | 12 | const fn = new Function ( 'require', 'module', 'assert', generated.code ); 13 | let module = {}; 14 | 15 | fn( require, module, assert ); 16 | 17 | return module; 18 | } 19 | 20 | describe( 'rollup-plugin-ractive', () => { 21 | it( 'compiles a component', () => { 22 | return rollup({ 23 | entry: 'samples/basic/main.js', 24 | plugins: [ ractive() ] 25 | }).then( executeBundle ); 26 | }); 27 | 28 | it( 'compiles nested components', () => { 29 | return rollup({ 30 | entry: 'samples/nested/main.js', 31 | plugins: [ ractive() ] 32 | }).then( executeBundle ); 33 | }); 34 | }); 35 | --------------------------------------------------------------------------------