railspack 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5dd556c9adab402728830bd66306aef3de2e6082
4
- data.tar.gz: e6bc3009a6dbe0a8aba216b2c3767f0f18fb4b4a
3
+ metadata.gz: 8f7a3251194a5d83fe9264cba0e6eaea153920e7
4
+ data.tar.gz: ef9878cccb304fe06c3f79382f1d72658e58edad
5
5
  SHA512:
6
- metadata.gz: b76574409d473301159dbc5b96dd859403bc89293f1aed8e11dc57a8869b82f05a2b8a7938df67d3ace07773e785f0bc03cde9ed14446973efac8959fb1a8a50
7
- data.tar.gz: fd595cb93dfbf3c7749ca1cc10b82eadce040fd518fa628176ac9222dfa6058bcd9a11d399321e7fea46c549e556bbebf17776824aa6b7175ff6fc4e7ddf268b
6
+ metadata.gz: b3991414754154b63b61f10a320eb1c63898e32a785eec40e25319d0be912a19c137783d92ffe177b8e758f64ddcdd05f4f1dc0ac6fce579303ecc70982417e8
7
+ data.tar.gz: ccd1fd44d31c9ca6dc05a07894e66782ea662c2e1fb37f07ceafad581bce7fe805e7aafe242f37f5e6c785115c8403f10058393825768c926734e326937c5b2b
data/README.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Railspack
2
2
 
3
- Easily add all the configuration files to setup Webpack in your Rails app.
3
+ A CLI tool that assists in getting [Webpack](https://webpack.github.io/) setup
4
+ in your [Rails](http://rubyonrails.org/) application.
5
+
6
+ ## Prerequisites
7
+
8
+ Make sure that you have `node` installed
9
+
10
+ The gem will install just fine without node, but you won't be able to
11
+ install any of dependencies listed in your new `package.json` file without
12
+ `node` and `npm`
4
13
 
5
14
  ## Installation
6
15
 
@@ -15,16 +24,16 @@ $ gem install railspack
15
24
  1. Go to the root directory of your Rails project.
16
25
  2. Run `railspack generate`
17
26
 
18
- ## Development
27
+ Make sure that you run `npm install` after running the `railspack generate`
28
+ command. This will install all the dependencies defined in the `package.json`
29
+ file.
19
30
 
20
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
21
-
22
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
31
+ Take a look at the [Generated Files Guide](docs/generated_files) page to see
32
+ a full description of all the files that are generated.
23
33
 
24
34
  ## Contributing
25
35
 
26
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/railspack.
27
-
36
+ Please check out the [Contributing Guide](docs/contributing)
28
37
 
29
38
  ## License
30
39
 
data/lib/railspack/cli.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'thor'
2
+ require 'erubis'
3
+ require 'pathname'
2
4
 
3
5
  module Railspack
4
6
  class CLI < Thor
@@ -10,12 +12,56 @@ module Railspack
10
12
 
11
13
  desc "generate", "Generate all webpack files"
12
14
  def generate
15
+ if !npm_available?
16
+ puts "NPM not installed"
17
+ return
18
+ end
19
+
20
+ build_package_json
13
21
  copy_file("index.js", "frontend/index.js")
14
22
  copy_file("registerComponent.js", "frontend/registerComponent.js")
15
23
  copy_file("react_helper.rb", "app/helpers/react_helper.rb")
16
- copy_file("package.json", "package.json")
17
24
  copy_file("babelrc.js", ".babelrc")
18
25
  copy_file("webpack.js", "webpack.config.babel.js")
26
+
27
+ puts "Running `npm install`"
28
+ exec("npm install")
29
+ end
30
+
31
+ private
32
+
33
+ def npm_available?
34
+ output = `which npm`
35
+ !output.include? "not found"
36
+ end
37
+
38
+ def get_git_username
39
+ username = `git config user.name`.strip
40
+ end
41
+
42
+ def get_project_name
43
+ directory_path = Pathname.new(FileUtils.pwd)
44
+ directory_path.basename
45
+ end
46
+
47
+ def get_template_from_file(template_name)
48
+ template_path = File.join(File.dirname(__FILE__), 'templates', template_name)
49
+ file = File.open(template_path, "rb")
50
+ contents = file.read
51
+ end
52
+
53
+ def render_template(template_name, locals)
54
+ contents = get_template_from_file(template_name)
55
+ Erubis::Eruby.new(contents).result(locals)
56
+ end
57
+
58
+ def build_package_json
59
+ project_name = get_project_name
60
+ author_name = get_git_username
61
+
62
+ locals = { application_name: project_name, author_name: author_name }
63
+ contents = render_template('package.json.erb', locals)
64
+ create_file('package.json', contents)
19
65
  end
20
66
  end
21
67
  end
@@ -1,3 +1,3 @@
1
1
  {
2
- "presets": ["es2015", "react"]
2
+ "presets": ["es2015", "react", "stage-0"]
3
3
  }
@@ -1,10 +1,12 @@
1
1
  import React from 'react'
2
2
  import ReactDOM from 'react-dom'
3
3
 
4
- import { registerComponent } from 'componentRegistration'
4
+ import { registerComponent } from 'registerComponent'
5
5
 
6
6
  // Register any components that you want to call in your Rails views
7
7
  // using the react_component view_helper
8
- document.addEventListener('DOMContentLoaded', () => {
9
- // registerComponent('component', 'container-name')
10
- })
8
+
9
+ const domReadyEvent = (typeof TurboLinks !== 'undefined') ? 'turbolinks:load' : 'DOMContentLoaded'
10
+ document.addEventListener(domReadyEvent, () => {
11
+ // registerComponent(OhHai, 'oh-hai'));
12
+ }
@@ -1,28 +1,26 @@
1
1
  {
2
- "name": "[Enter Your App Name]",
2
+ "name": "<%= application_name %>",
3
3
  "version": "1.0.0",
4
- "description": "[Enter App Description]",
4
+ "description": "<%= application_name %>",
5
5
  "main": "index.js",
6
- "author": "[Enter Author Name]",
6
+ "author": "<%= author_name %>",
7
+
7
8
  "scripts": {
8
9
  "start-dev": "webpack -wc --config webpack.config.babel.js",
9
10
  "postinstall": "webpack --config webpack.config.babel.js"
10
11
  },
12
+
11
13
  "dependencies": {
12
14
  "babel-core": "latest",
13
15
  "babel-loader": "latest",
14
16
  "babel-preset-es2015": "latest",
15
17
  "babel-preset-react": "latest",
16
18
  "babel-preset-stage-0": "latest",
17
- "classnames": "latest",
18
- "lodash": "latest",
19
- "moment": "latest",
20
19
  "react": "latest",
21
- "react-addons-css-transition-group": "latest",
22
20
  "react-dom": "latest",
23
- "react-input-slider": "latest",
24
21
  "webpack": "latest"
25
22
  },
23
+
26
24
  "devDependencies": {
27
25
  "webpack-dev-server": "latest"
28
26
  }
@@ -2,14 +2,12 @@ import path from 'path'
2
2
  import webpack from 'webpack'
3
3
 
4
4
  module.exports = {
5
- context: __dirname,
6
-
7
5
  entry: {
8
- app: path.join(__dirname, 'src', 'index.js')
6
+ app: path.join(__dirname, 'frontend', 'index.js')
9
7
  },
10
8
 
11
9
  output: {
12
- path: path.join(__dirname, 'assets', 'javascripts'),
10
+ path: path.join(__dirname, 'app', 'assets', 'javascripts'),
13
11
  filename: 'frontend.js'
14
12
  },
15
13
 
@@ -1,3 +1,3 @@
1
1
  module Railspack
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railspack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - jdmorlan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-19 00:00:00.000000000 Z
11
+ date: 2016-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: erubis
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +95,7 @@ files:
81
95
  - lib/railspack/cli.rb
82
96
  - lib/railspack/templates/babelrc.js
83
97
  - lib/railspack/templates/index.js
84
- - lib/railspack/templates/package.json
98
+ - lib/railspack/templates/package.json.erb
85
99
  - lib/railspack/templates/react_helper.rb
86
100
  - lib/railspack/templates/registerComponent.js
87
101
  - lib/railspack/templates/webpack.js