frontrunner 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/README.md +230 -0
- data/Rakefile +10 -0
- data/frontrunner.gemspec +24 -0
- data/lib/frontrunner.rb +11 -0
- data/lib/frontrunner/helper.rb +21 -0
- data/lib/frontrunner/version.rb +3 -0
- data/lib/generators/frontrunner/install_generator.rb +19 -0
- data/lib/generators/frontrunner/templates/application.js +16 -0
- data/lib/generators/frontrunner/templates/application.scss +5 -0
- data/lib/generators/frontrunner/templates/hello.coffee +2 -0
- data/lib/generators/frontrunner/templates/package.json +33 -0
- data/lib/generators/frontrunner/templates/webpack.config.js +61 -0
- metadata +101 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 9ea87ed4e2b6ec196503d17a654df0f1dd7245b3
         | 
| 4 | 
            +
              data.tar.gz: 304a3c9eb2c55cc4cbbd08809607fdfbd8c2aebd
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 76d1d50882926e9f11e1d2029d8c0ffd1c588de1e1f331d78d8dbcf9bb69f83c18dba3ee4f6b8717b31dee28b12cef83d3a5b62371a773fb3e046c9414612d95
         | 
| 7 | 
            +
              data.tar.gz: 42c914ffd62905639e9cd247c28c7da3233c7add2aa2272ced94464928604d691135fdf14dc2836b7ab34ccf1f62074444a2fb70b20469150d31f0db346f01fc
         | 
    
        data/.gitignore
    ADDED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,230 @@ | |
| 1 | 
            +
            # Frontrunner
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            :fire: Webpack for Rails
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Why Webpack?
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            - Manage your JavaScript and CSS dependencies with [npm](https://www.npmjs.com/), the JavaScript package manager
         | 
| 8 | 
            +
            - Use modules to keep your code organized
         | 
| 9 | 
            +
            - *Optional* Use hot module replacement for faster iteration
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            But there are also a few drawbacks:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            - More complex development process
         | 
| 14 | 
            +
            - Longer build times, as there is currently no way to [cache between builds](https://github.com/webpack/webpack/issues/250)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            As with the Rails asset pipeline (Sprockets), you also get:
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            - Minification and compression
         | 
| 19 | 
            +
            - Digests for long-term caching
         | 
| 20 | 
            +
            - Coffeescript and Sass support
         | 
| 21 | 
            +
            - Source maps (Sprockets 4+)
         | 
| 22 | 
            +
            - ES6 support (Sprockets 4+)
         | 
| 23 | 
            +
            - *Optional* JSX support for React
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            Frontrunner plays nicely with the Rails asset pipeline. This makes it easy to transition existing apps at your own pace. While it may be tempting to remove Sprockets, some Rails engines like [RailsAdmin](https://github.com/sferik/rails_admin) depend on it.  You never know when you’ll want to add one of these, so we recommend keeping it around.
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            Like Rails, [jQuery](https://github.com/jquery/jquery), [jQuery UJS](https://github.com/rails/jquery-ujs), and [Turbolinks](https://github.com/turbolinks/turbolinks) are added to start, but these can be easily removed if desired.
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ## The Setup
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            Here are the files and directories we’ll use.
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            Files | Description
         | 
| 34 | 
            +
            --- | ---
         | 
| 35 | 
            +
            package.json | Gemfile for npm
         | 
| 36 | 
            +
            npm-shrinkwrap.json | Gemfile.lock for npm
         | 
| 37 | 
            +
            webpack.config.js | Webpack config
         | 
| 38 | 
            +
            node_modules | npm packages
         | 
| 39 | 
            +
            app/webpack | app/assets equivalent
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ## Installation
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            Add this line to your application’s Gemfile
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            ```ruby
         | 
| 46 | 
            +
            gem 'frontrunner'
         | 
| 47 | 
            +
            ```
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            And run:
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            ```sh
         | 
| 52 | 
            +
            bundle install
         | 
| 53 | 
            +
            ```
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            Generate files
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            ```sh
         | 
| 58 | 
            +
            rails generate frontrunner:install
         | 
| 59 | 
            +
            ```
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            And run:
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ```sh
         | 
| 64 | 
            +
            npm install && npm shrinkwrap --dev
         | 
| 65 | 
            +
            ```
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            Then, add to your layout:
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            ```erb
         | 
| 70 | 
            +
            <%= webpack_include_tag "application" %>
         | 
| 71 | 
            +
            ```
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            ## Development
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            Run:
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            ```sh
         | 
| 78 | 
            +
            npm run server
         | 
| 79 | 
            +
            ```
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            This will start the [webpack-dev-server](https://webpack.github.io/docs/webpack-dev-server.html) at `http://localhost:8080`.
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            It’s possible to serve Webpack assets through Sprockets rather than a separate web server in development, but this can be significantly slower.
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            If you use [Foreman](https://github.com/ddollar/foreman), you can create a `Procfile.dev` with:
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            ```
         | 
| 88 | 
            +
            web: bin/rails server
         | 
| 89 | 
            +
            webpack: npm run server
         | 
| 90 | 
            +
            ```
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            And run it with:
         | 
| 93 | 
            +
             | 
| 94 | 
            +
            ```sh
         | 
| 95 | 
            +
            foreman start -f Procfile.dev
         | 
| 96 | 
            +
            ```
         | 
| 97 | 
            +
             | 
| 98 | 
            +
            ## Packages
         | 
| 99 | 
            +
             | 
| 100 | 
            +
            Add new packages with npm.
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            ```sh
         | 
| 103 | 
            +
            npm install underscore -S
         | 
| 104 | 
            +
            ```
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            Use the `-S` option to save it to `package.json`.
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            You can now include the package in your JavaScript.
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            ```js
         | 
| 111 | 
            +
            var _ = require("underscore");
         | 
| 112 | 
            +
            var trips = _.map([1, 2, 3], function (i) { return i * 3; });
         | 
| 113 | 
            +
            console.log(trips);
         | 
| 114 | 
            +
            ```
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            ### Bootstrap
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            Run:
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            ```sh
         | 
| 121 | 
            +
            npm install bootstrap-sass -S
         | 
| 122 | 
            +
            ```
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            For CSS, in `application.scss`, add:
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            ```scss
         | 
| 127 | 
            +
            $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
         | 
| 128 | 
            +
            @import "bootstrap-sass/assets/stylesheets/bootstrap";
         | 
| 129 | 
            +
            ```
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            Or only include specific components with:
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            ```scss
         | 
| 134 | 
            +
            @import "bootstrap-sass/assets/stylesheets/bootstrap/variables";
         | 
| 135 | 
            +
            @import "bootstrap-sass/assets/stylesheets/bootstrap/mixins";
         | 
| 136 | 
            +
            @import "bootstrap-sass/assets/stylesheets/bootstrap/alerts";
         | 
| 137 | 
            +
            ```
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            For JavaScript, in `application.js`, add:
         | 
| 140 | 
            +
             | 
| 141 | 
            +
            ```js
         | 
| 142 | 
            +
            require("bootstrap-sass/assets/javascripts/bootstrap");
         | 
| 143 | 
            +
            ```
         | 
| 144 | 
            +
             | 
| 145 | 
            +
            Or only include specific components with:
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            ```js
         | 
| 148 | 
            +
            require("bootstrap-sass/assets/javascripts/bootstrap/alert");
         | 
| 149 | 
            +
            ```
         | 
| 150 | 
            +
             | 
| 151 | 
            +
            ### React
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            Run:
         | 
| 154 | 
            +
             | 
| 155 | 
            +
            ```sh
         | 
| 156 | 
            +
            npm install react react-dom -S
         | 
| 157 | 
            +
            ```
         | 
| 158 | 
            +
             | 
| 159 | 
            +
            [React Hot Loader](http://gaearon.github.io/react-hot-loader/) and support for `jsx` are already included. See [Hot Module Replacement](#hot-module-replacement) for how to activate.
         | 
| 160 | 
            +
             | 
| 161 | 
            +
            ## Entry Points
         | 
| 162 | 
            +
             | 
| 163 | 
            +
            During installation, a single [entry point](https://webpack.github.io/docs/multiple-entry-points.html) - `application` - is created.
         | 
| 164 | 
            +
             | 
| 165 | 
            +
            To add another entry point - for instance, for a blog - create `blog.js` and add it to `webpack.config.js`.
         | 
| 166 | 
            +
             | 
| 167 | 
            +
            ```js
         | 
| 168 | 
            +
            {
         | 
| 169 | 
            +
              entry: {
         | 
| 170 | 
            +
                application: "application",
         | 
| 171 | 
            +
                blog: "blog"
         | 
| 172 | 
            +
              }
         | 
| 173 | 
            +
            }
         | 
| 174 | 
            +
            ```
         | 
| 175 | 
            +
             | 
| 176 | 
            +
            To include it in your views, use:
         | 
| 177 | 
            +
             | 
| 178 | 
            +
            ```erb
         | 
| 179 | 
            +
            <%= webpack_include_tag "blog" %>
         | 
| 180 | 
            +
            ```
         | 
| 181 | 
            +
             | 
| 182 | 
            +
            ## Hot Module Replacement
         | 
| 183 | 
            +
             | 
| 184 | 
            +
            Use [hot module replacement](https://webpack.github.io/docs/hot-module-replacement.html) to update code without reloading the page.
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            Just run `npm run server:hot` instead of `npm run server`.
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            If you use React, this includes the [React Hot Loader](http://gaearon.github.io/react-hot-loader/).
         | 
| 189 | 
            +
             | 
| 190 | 
            +
            ## Deployment
         | 
| 191 | 
            +
             | 
| 192 | 
            +
            Node.js is required to build the assets. As part of the build process, run:
         | 
| 193 | 
            +
             | 
| 194 | 
            +
            ```sh
         | 
| 195 | 
            +
            npm run assets:precompile
         | 
| 196 | 
            +
            ```
         | 
| 197 | 
            +
             | 
| 198 | 
            +
            ### Heroku
         | 
| 199 | 
            +
             | 
| 200 | 
            +
            On Heroku, you’ll need to use multiple buildpacks.
         | 
| 201 | 
            +
             | 
| 202 | 
            +
            ```sh
         | 
| 203 | 
            +
            heroku buildpacks:add heroku/nodejs
         | 
| 204 | 
            +
            heroku buildpacks:add heroku/ruby
         | 
| 205 | 
            +
            ```
         | 
| 206 | 
            +
             | 
| 207 | 
            +
            And ask Heroku to install dev dependencies from `package.json`.
         | 
| 208 | 
            +
             | 
| 209 | 
            +
            ```sh
         | 
| 210 | 
            +
            heroku config:set NPM_CONFIG_PRODUCTION=false
         | 
| 211 | 
            +
            ```
         | 
| 212 | 
            +
             | 
| 213 | 
            +
            And in `package.json`, under `scripts`, add:
         | 
| 214 | 
            +
             | 
| 215 | 
            +
            ```json
         | 
| 216 | 
            +
            {
         | 
| 217 | 
            +
              "scripts": {
         | 
| 218 | 
            +
                "heroku-postbuild": "npm run assets:precompile"
         | 
| 219 | 
            +
              }
         | 
| 220 | 
            +
            }
         | 
| 221 | 
            +
            ```
         | 
| 222 | 
            +
             | 
| 223 | 
            +
            ## Contributing
         | 
| 224 | 
            +
             | 
| 225 | 
            +
            Everyone is encouraged to help improve this project. Here are a few ways you can help:
         | 
| 226 | 
            +
             | 
| 227 | 
            +
            - [Report bugs](https://github.com/ankane/frontrunner/issues)
         | 
| 228 | 
            +
            - Fix bugs and [submit pull requests](https://github.com/ankane/frontrunner/pulls)
         | 
| 229 | 
            +
            - Write, clarify, or fix documentation
         | 
| 230 | 
            +
            - Suggest or add new features
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/frontrunner.gemspec
    ADDED
    
    | @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            lib = File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
            require "frontrunner/version"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |spec|
         | 
| 7 | 
            +
              spec.name          = "frontrunner"
         | 
| 8 | 
            +
              spec.version       = Frontrunner::VERSION
         | 
| 9 | 
            +
              spec.authors       = ["Andrew Kane"]
         | 
| 10 | 
            +
              spec.email         = ["andrew@chartkick.com"]
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              spec.summary       = "Webpack for Rails"
         | 
| 13 | 
            +
              spec.homepage      = "https://github.com/ankane/frontrunner"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 16 | 
            +
              spec.bindir        = "exe"
         | 
| 17 | 
            +
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 18 | 
            +
              spec.require_paths = ["lib"]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              spec.add_dependency "activesupport"
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              spec.add_development_dependency "bundler", "~> 1.12"
         | 
| 23 | 
            +
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 24 | 
            +
            end
         | 
    
        data/lib/frontrunner.rb
    ADDED
    
    
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module Frontrunner
         | 
| 2 | 
            +
              module Helper
         | 
| 3 | 
            +
                def webpack_include_tag(*sources)
         | 
| 4 | 
            +
                  options = sources.extract_options!
         | 
| 5 | 
            +
                  sources =
         | 
| 6 | 
            +
                    sources.map do |source|
         | 
| 7 | 
            +
                      @webpack_manifest = nil if Rails.env.development?
         | 
| 8 | 
            +
                      entry = webpack_manifest[source]
         | 
| 9 | 
            +
                      raise Frontrunner::Error, "Could not find webpack entry point: #{source}" unless entry
         | 
| 10 | 
            +
                      entry["js"]
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  javascript_include_tag *sources, options
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def webpack_manifest
         | 
| 16 | 
            +
                  @webpack_manifest ||= JSON.parse(File.read(Rails.root.join("webpack-assets.json")))
         | 
| 17 | 
            +
                rescue => e
         | 
| 18 | 
            +
                  raise Frontrunner::Error, "Error reading webpack manifest - be sure to start the dev server"
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require "rails/generators"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Frontrunner
         | 
| 4 | 
            +
              module Generators
         | 
| 5 | 
            +
                class InstallGenerator < Rails::Generators::Base
         | 
| 6 | 
            +
                  source_root File.expand_path("../templates", __FILE__)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def perform
         | 
| 9 | 
            +
                    copy_file "package.json", "package.json"
         | 
| 10 | 
            +
                    copy_file "webpack.config.js", "webpack.config.js"
         | 
| 11 | 
            +
                    append_file ".gitignore", "\n# Webpack\n/node_modules/\nnpm-debug.log\nwebpack-assets.json\n"
         | 
| 12 | 
            +
                    create_file "app/webpack/images/.keep"
         | 
| 13 | 
            +
                    copy_file "application.js", "app/webpack/javascripts/application.js"
         | 
| 14 | 
            +
                    copy_file "hello.coffee", "app/webpack/javascripts/hello.coffee"
         | 
| 15 | 
            +
                    copy_file "application.scss", "app/webpack/stylesheets/application.scss"
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            // Styles
         | 
| 2 | 
            +
            require("application.scss");
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            // jQuery
         | 
| 5 | 
            +
            window.$ = window.jQuery = require("jquery");
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            // Rails UJS
         | 
| 8 | 
            +
            require("jquery-ujs");
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            // Turbolinks
         | 
| 11 | 
            +
            const Turbolinks = require("turbolinks");
         | 
| 12 | 
            +
            Turbolinks.start();
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            // Hi!
         | 
| 15 | 
            +
            const hello = require("hello");
         | 
| 16 | 
            +
            console.log(hello("Webpack"));
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
              "dependencies": {
         | 
| 3 | 
            +
                "jquery": "^2.2.4",
         | 
| 4 | 
            +
                "jquery-ujs": "^1.2.1",
         | 
| 5 | 
            +
                "turbolinks": "^5.0.0-beta5"
         | 
| 6 | 
            +
              },
         | 
| 7 | 
            +
              "devDependencies": {
         | 
| 8 | 
            +
                "assets-webpack-plugin": "^3.4.0",
         | 
| 9 | 
            +
                "babel-core": "^6.9.0",
         | 
| 10 | 
            +
                "babel-loader": "^6.2.4",
         | 
| 11 | 
            +
                "babel-plugin-react-require": "^2.1.0",
         | 
| 12 | 
            +
                "babel-preset-es2015": "^6.9.0",
         | 
| 13 | 
            +
                "babel-preset-react": "^6.5.0",
         | 
| 14 | 
            +
                "coffee-loader": "^0.7.2",
         | 
| 15 | 
            +
                "coffee-script": "^1.10.0",
         | 
| 16 | 
            +
                "compression-webpack-plugin": "^0.3.1",
         | 
| 17 | 
            +
                "css-loader": "^0.23.1",
         | 
| 18 | 
            +
                "file-loader": "^0.8.5",
         | 
| 19 | 
            +
                "node-sass": "^3.7.0",
         | 
| 20 | 
            +
                "react-hot-loader": "^1.3.0",
         | 
| 21 | 
            +
                "sass-loader": "^3.2.0",
         | 
| 22 | 
            +
                "style-loader": "^0.13.1",
         | 
| 23 | 
            +
                "url-loader": "^0.5.7",
         | 
| 24 | 
            +
                "webpack": "^1.13.1",
         | 
| 25 | 
            +
                "webpack-dev-server": "^1.14.1"
         | 
| 26 | 
            +
              },
         | 
| 27 | 
            +
              "scripts": {
         | 
| 28 | 
            +
                "assets:precompile": "webpack",
         | 
| 29 | 
            +
                "server": "webpack-dev-server",
         | 
| 30 | 
            +
                "server:hot": "webpack-dev-server --inline --hot"
         | 
| 31 | 
            +
              },
         | 
| 32 | 
            +
              "private": true
         | 
| 33 | 
            +
            }
         | 
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            var path = require("path");
         | 
| 2 | 
            +
            var webpack = require("webpack");
         | 
| 3 | 
            +
            var AssetsPlugin = require("assets-webpack-plugin");
         | 
| 4 | 
            +
            var CompressionPlugin = require("compression-webpack-plugin");
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            var development = !process.env.RAILS_ENV || process.env.RAILS_ENV === "development";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            var config = {
         | 
| 9 | 
            +
              entry: {
         | 
| 10 | 
            +
                application: "application"
         | 
| 11 | 
            +
              },
         | 
| 12 | 
            +
              output: {
         | 
| 13 | 
            +
                path: path.join(__dirname, "public", "webpack"),
         | 
| 14 | 
            +
                filename: development ? "[name].js" : "[name]-[hash].js",
         | 
| 15 | 
            +
                publicPath: development ? "http://localhost:8080/" : "/webpack/",
         | 
| 16 | 
            +
              },
         | 
| 17 | 
            +
              module: {
         | 
| 18 | 
            +
                loaders: [
         | 
| 19 | 
            +
                  {test: /\.css$/, loader: "style-loader!css-loader"},
         | 
| 20 | 
            +
                  {test: /\.scss$/, loader: "style-loader!css-loader!sass-loader"},
         | 
| 21 | 
            +
                  {test: /\.jsx?$|\.tag$/, exclude: /node_modules/, loader: "react-hot!babel-loader?cacheDirectory&presets[]=es2015&presets[]=react&plugins[]=react-require"},
         | 
| 22 | 
            +
                  {test: /\.coffee$/, loader: "coffee-loader"},
         | 
| 23 | 
            +
                  {test: /\.woff2?$|\.ttf$|\.eot$|\.svg$/, loader: "file"}
         | 
| 24 | 
            +
                ]
         | 
| 25 | 
            +
              },
         | 
| 26 | 
            +
              plugins: [
         | 
| 27 | 
            +
                new webpack.DefinePlugin({
         | 
| 28 | 
            +
                  "process.env": JSON.stringify({
         | 
| 29 | 
            +
                    NODE_ENV: process.env.RAILS_ENV
         | 
| 30 | 
            +
                  })
         | 
| 31 | 
            +
                }),
         | 
| 32 | 
            +
                new AssetsPlugin({path: path.join(__dirname)})
         | 
| 33 | 
            +
              ],
         | 
| 34 | 
            +
              resolve: {
         | 
| 35 | 
            +
                root: [
         | 
| 36 | 
            +
                  path.join(__dirname, "app", "webpack", "javascripts"),
         | 
| 37 | 
            +
                  path.join(__dirname, "app", "webpack", "stylesheets"),
         | 
| 38 | 
            +
                  path.join(__dirname, "app", "webpack", "images")
         | 
| 39 | 
            +
                ],
         | 
| 40 | 
            +
                extensions: ["", ".js", ".jsx", ".coffee"]
         | 
| 41 | 
            +
              },
         | 
| 42 | 
            +
              sassLoader: {
         | 
| 43 | 
            +
                includePaths: [
         | 
| 44 | 
            +
                  path.join(__dirname, "node_modules")
         | 
| 45 | 
            +
                ]
         | 
| 46 | 
            +
              }
         | 
| 47 | 
            +
            };
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            if (development) {
         | 
| 50 | 
            +
              config.devtool = "#eval-cheap-module-inline-source-map";
         | 
| 51 | 
            +
            } else {
         | 
| 52 | 
            +
              config.plugins.push(
         | 
| 53 | 
            +
                new webpack.optimize.UglifyJsPlugin({sourceMap: false, compress: {warnings: false}}),
         | 
| 54 | 
            +
                new webpack.optimize.DedupePlugin(),
         | 
| 55 | 
            +
                new webpack.optimize.OccurenceOrderPlugin(),
         | 
| 56 | 
            +
                new CompressionPlugin()
         | 
| 57 | 
            +
              );
         | 
| 58 | 
            +
              config.bail = true;
         | 
| 59 | 
            +
            }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            module.exports = config;
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,101 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: frontrunner
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Andrew Kane
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: exe
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2016-05-30 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: activesupport
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: bundler
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '1.12'
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '1.12'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rake
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '10.0'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '10.0'
         | 
| 55 | 
            +
            description: 
         | 
| 56 | 
            +
            email:
         | 
| 57 | 
            +
            - andrew@chartkick.com
         | 
| 58 | 
            +
            executables: []
         | 
| 59 | 
            +
            extensions: []
         | 
| 60 | 
            +
            extra_rdoc_files: []
         | 
| 61 | 
            +
            files:
         | 
| 62 | 
            +
            - ".gitignore"
         | 
| 63 | 
            +
            - CHANGELOG.md
         | 
| 64 | 
            +
            - Gemfile
         | 
| 65 | 
            +
            - README.md
         | 
| 66 | 
            +
            - Rakefile
         | 
| 67 | 
            +
            - frontrunner.gemspec
         | 
| 68 | 
            +
            - lib/frontrunner.rb
         | 
| 69 | 
            +
            - lib/frontrunner/helper.rb
         | 
| 70 | 
            +
            - lib/frontrunner/version.rb
         | 
| 71 | 
            +
            - lib/generators/frontrunner/install_generator.rb
         | 
| 72 | 
            +
            - lib/generators/frontrunner/templates/application.js
         | 
| 73 | 
            +
            - lib/generators/frontrunner/templates/application.scss
         | 
| 74 | 
            +
            - lib/generators/frontrunner/templates/hello.coffee
         | 
| 75 | 
            +
            - lib/generators/frontrunner/templates/package.json
         | 
| 76 | 
            +
            - lib/generators/frontrunner/templates/webpack.config.js
         | 
| 77 | 
            +
            homepage: https://github.com/ankane/frontrunner
         | 
| 78 | 
            +
            licenses: []
         | 
| 79 | 
            +
            metadata: {}
         | 
| 80 | 
            +
            post_install_message: 
         | 
| 81 | 
            +
            rdoc_options: []
         | 
| 82 | 
            +
            require_paths:
         | 
| 83 | 
            +
            - lib
         | 
| 84 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 85 | 
            +
              requirements:
         | 
| 86 | 
            +
              - - ">="
         | 
| 87 | 
            +
                - !ruby/object:Gem::Version
         | 
| 88 | 
            +
                  version: '0'
         | 
| 89 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 90 | 
            +
              requirements:
         | 
| 91 | 
            +
              - - ">="
         | 
| 92 | 
            +
                - !ruby/object:Gem::Version
         | 
| 93 | 
            +
                  version: '0'
         | 
| 94 | 
            +
            requirements: []
         | 
| 95 | 
            +
            rubyforge_project: 
         | 
| 96 | 
            +
            rubygems_version: 2.6.1
         | 
| 97 | 
            +
            signing_key: 
         | 
| 98 | 
            +
            specification_version: 4
         | 
| 99 | 
            +
            summary: Webpack for Rails
         | 
| 100 | 
            +
            test_files: []
         | 
| 101 | 
            +
            has_rdoc: 
         |