{"id":15511904,"url":"https://github.com/usabilityhub/rails-erb-loader","last_synced_at":"2025-04-07T05:08:13.290Z","repository":{"id":8352800,"uuid":"58094530","full_name":"usabilityhub/rails-erb-loader","owner":"usabilityhub","description":"Embedded Ruby (.erb) webpack loader for Ruby projects.","archived":false,"fork":false,"pushed_at":"2024-08-30T12:27:53.000Z","size":1109,"stargazers_count":103,"open_issues_count":17,"forks_count":28,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-31T04:04:38.469Z","etag":null,"topics":["erb","javascript","loader","nodejs","rails","rails-erb-loader","ruby","webpack","webpack-loader"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/usabilityhub.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-05T01:15:16.000Z","updated_at":"2024-08-30T12:27:55.000Z","dependencies_parsed_at":"2023-01-13T14:45:40.699Z","dependency_job_id":"fe01ade7-e3fe-482a-84b9-caefc89ad7aa","html_url":"https://github.com/usabilityhub/rails-erb-loader","commit_stats":{"total_commits":156,"total_committers":18,"mean_commits":8.666666666666666,"dds":0.4807692307692307,"last_synced_commit":"1698444e9767f3633b50ca8a9a8b788a05f4127d"},"previous_names":["usabilityhub/erb-loader"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usabilityhub%2Frails-erb-loader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usabilityhub%2Frails-erb-loader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usabilityhub%2Frails-erb-loader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usabilityhub%2Frails-erb-loader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/usabilityhub","download_url":"https://codeload.github.com/usabilityhub/rails-erb-loader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595334,"owners_count":20963943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erb","javascript","loader","nodejs","rails","rails-erb-loader","ruby","webpack","webpack-loader"],"created_at":"2024-10-02T09:53:17.342Z","updated_at":"2025-04-07T05:08:13.258Z","avatar_url":"https://github.com/usabilityhub.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# rails-erb-loader\n\n[![npm version](https://img.shields.io/npm/v/rails-erb-loader.svg?style=flat-square)](https://www.npmjs.com/package/rails-erb-loader)\n[![npm downloads](https://img.shields.io/npm/dm/rails-erb-loader.svg?style=flat-square)](https://npm-stat.com/charts.html?package=rails-erb-loader\u0026from=2016-11-07)\n[![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](http://standardjs.com/)\n[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n[![Build Status](http://img.shields.io/travis/usabilityhub/rails-erb-loader.svg?style=flat-square)](https://travis-ci.org/usabilityhub/rails-erb-loader)\n\n\u003e Embedded Ruby (`.erb`) webpack loader for Ruby projects.\n\nCompiles Embedded Ruby template files in any Ruby project. Files are built using either the `Erubis` or `ERB` gem.\n\n## Table of Contents\n- [Install](#install)\n- [Usage](#usage)\n- [Configuration](#configuration)\n  - [Options](#options)\n  - [Dependencies](#dependencies)\n- [Contribute](#contribute)\n- [License](#license)\n\n## Install\n\n### npm\n\n```console\n$ npm install rails-erb-loader --save-dev\n```\n\n### yarn\n\n```console\n$ yarn add -D rails-erb-loader\n```\n\n## Usage\n\nAdd `rails-erb-loader` to your rules.\n\n```js\n// webpack.config.js\n\nmodule.exports = {\n  module: {\n    rules: [\n      {\n        test: /\\.erb$/,\n        enforce: \"pre\",\n        loader: \"rails-erb-loader\"\n      }\n    ]\n  }\n};\n```\n\nNow you can use `.erb` files in your project, for example:\n\n`app/assets/javascripts/UserFormFields.jsx.erb`\n```erb\n/* rails-erb-loader-dependencies models/user models/image */\n\nexport default function UserFormFields() {\n  return (\n    \u003cdiv\u003e\n      \u003clabel htmlFor='avatar'\u003e\n        Avatar\n      \u003c/label\u003e\n      \u003cImageField id='avatar' maxSize={\u003c%= Image::MAX_SIZE %\u003e} /\u003e\n      \u003clabel htmlFor='name'\u003e\n        Name\n      \u003c/label\u003e\n      \u003cinput\n        id='name'\n        type='text'\n        maxLength={\u003c%= User::MAX_NAME_LENGTH %\u003e}\n      /\u003e\n      \u003clabel htmlFor='age'\u003e\n        Age\n      \u003c/label\u003e\n      \u003cinput\n        id='age'\n        type='number'\n        min={\u003c%= User::MIN_AGE %\u003e}\n        max={\u003c%= User::MAX_AGE %\u003e}\n      /\u003e\n    \u003c/div\u003e\n  )\n}\n```\n\n### Spring\nIn case you use gem `spring`  \nYou might need customization on the loader  \n\nExample from [a reply in #47](https://github.com/usabilityhub/rails-erb-loader/issues/47#issuecomment-434138107)\n```js\n/* put this in file like /config/webpack/loaders/erb.js */\n/* global process:false */\n\nmodule.exports = {\n  test: /\\.erb$/,\n  enforce: \"pre\",\n  exclude: /node_modules/,\n\n  use: [{\n    loader: \"rails-erb-loader\",\n    options: {\n      runner: (/^win/.test(process.platform) ? \"ruby \" : \"\") + \"bin/rails runner\",\n      env: {\n        ...process.env,\n        DISABLE_SPRING: 1,\n      },\n    },\n  }],\n}\n```\n\n## Configuration\n\n### Options\n\nCan be configured with [UseEntry#options](https://webpack.js.org/configuration/module/#useentry).\n\n| Option | Default | Description |\n| ------ | ------- | ----------- |\n| `dependenciesRoot` | `\"app\"` | The root of your Rails project, relative to webpack's working directory. |\n| `engine` | `\"erb\"` | ERB Template engine, `\"erubi\"`, `\"erubis\"` and `\"erb\"` are supported. |\n| `runner` | `\"./bin/rails runner\"` | Command to run Ruby scripts, relative to webpack's working directory. |\n| `timeoutMs` | `0` | Timeout for the runner task in milliseconds. `0` is no timeout. Set this if you want a hanging runner to error out the build. |\n| `env` | `process.env` | Environment variables to be passed to runner. |\n\nFor example, if your webpack process is running in a subdirectory of your Rails project:\n\n```js\n{\n  loader: 'rails-erb-loader',\n  options: {\n    runner: '../bin/rails runner',\n    dependenciesRoot: '../app',\n  }\n}\n```\n\nAlso supports building without Rails:\n\n```js\n{\n  loader: 'rails-erb-loader',\n  options: {\n    runner: 'ruby',\n    engine: 'erb'\n  }\n}\n```\n\n### Dependencies\n\nIf your `.erb` files depend on files in your Ruby project, you can list them explicitly. Inclusion of `rails-erb-loader-dependency` (or `-dependencies`) in a javascript comment block will tell webpack to watch these files - causing webpack-dev-server to rebuild when they are changed. \n\nIf you don't want the directive to end up in the result, or wish to use it outside of a javascript context, \ninclude the javascript comment block inside an erb comment block. \n\n#### Watch individual files\n\nList dependencies in the comment. `.rb` extension is optional.\n\n```js\n/* rails-erb-loader-dependencies models/account models/user */\n```\n\n#### Watch a whole directory\n\nTo watch all files in a directory, end the path in a `/`.\n\n```js\n/* rails-erb-loader-dependencies ../config/locales/ */\n```\n\n## Contribute\n\nQuestions, bug reports and pull requests welcome. See [GitHub issues](https://github.com/usabilityhub/rails-erb-loader/issues).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusabilityhub%2Frails-erb-loader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fusabilityhub%2Frails-erb-loader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusabilityhub%2Frails-erb-loader/lists"}