Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zetachang/opalrb-loader
Opal Ruby module loader for webpack
https://github.com/zetachang/opalrb-loader
Last synced: 3 months ago
JSON representation
Opal Ruby module loader for webpack
- Host: GitHub
- URL: https://github.com/zetachang/opalrb-loader
- Owner: zetachang
- License: mit
- Created: 2015-08-25T08:34:09.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-04-05T19:06:57.000Z (almost 9 years ago)
- Last Synced: 2024-07-31T23:11:59.008Z (6 months ago)
- Language: JavaScript
- Size: 346 KB
- Stars: 9
- Watchers: 4
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-opal - Opal Loader - Opal Ruby module loader for webpack (Uncategorized / Uncategorized)
README
# opalrb-loader
> Opal is a compiler for writing JavaScript in Ruby.This package allows transpiling Ruby files using [Opal](http://opalrb.org) and [webpack](https://github.com/webpack/webpack).
Check out [this blog post](https://medium.com/@zetachang/from-sprockets-to-webpack-5f3d1afbd1b0) if you are interested in the project background.
[![npm version](https://img.shields.io/npm/v/opalrb-loader.svg?style=flat-square)](https://www.npmjs.com/package/opalrb-loader)
[![npm downloads](https://img.shields.io/npm/dt/opalrb-loader.svg?style=flat-square)](https://www.npmjs.com/package/opalrb-loader)
[![Circle CI](https://circleci.com/gh/zetachang/opalrb-loader.svg?style=svg)](https://circleci.com/gh/zetachang/opalrb-loader)## Installation
```bash
npm install opalrb-loader --save-dev
```## Usage
[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)
```javascript
// webpack.config.js
module: {
loaders: [
{
test: /\.rb?$/,
loader: 'opalrb-loader'
}
]
}
```### Options
See `Opal::Compiler` [options](https://github.com/opal/opal/blob/master/lib/opal/compiler.rb) for possible options.
```javascript
// webpack.config.js
module: {
loaders: [
{
test: /\.rb?$/,
loader: 'opalrb-loader',
query: {
requirable: false,
freezing: false,
}
}
]
}
```#### OPAL_LOAD_PATH
By passing `OPAL_LOAD_PATH` environment variable to webpack, the loader will correctly resolve file other than relative path.
`opalrb-loader` is only bundled with compiler module. It left the decision on managing runtime, corelib or gems to developer.
See the example [Rakefile](https://github.com/zetachang/opalrb-loader/blob/master/examples/complex/Rakefile) for how to integrate using other Opal gems.
### Compared to `Opal::Builder`
* Relative `require` is correctly resolved.
* `require_trees` is **not yet implemented**.
* erb is not supported (which should be implemented as separate loader).### Known issues
* First time compiling is relatively slow compared to Ruby one, use `--watch` option for webpack to speed up dev iteration.
* Use `require` to load JS file is broken, but you can write as below to load JS module (webpack will correctly resolve it).
```ruby
# Inside ruby file
`var $ = require("jquery")`
```
* **stdlib** and some gems may not be correctly compiled, please file an issue if you encounter one.### Examples
It's under [Examples](https://github.com/zetachang/opalrb-loader/tree/master/examples) folder.
* simple: Basic setup without further dependency.
* complex: Compile opal/corelib and other gems.## Development
* `npm install`
* `npm run build_compiler` to build compiler
* `npm start` to compile & watch `index.es6.js`## Contact
[David Chang](http://github.com/zetachang)
[@zetachang](https://twitter.com/zetachang)## License
Available under the MIT license. See the LICENSE file for more info.