webpackrails 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +23 -2
- data/lib/webpackrails/railtie.rb +12 -5
- data/lib/webpackrails/tasks/npm.rake +20 -0
- data/lib/webpackrails/version.rb +1 -1
- data/lib/webpackrails/webpack_processor.rb +53 -4
- data/webpackrails.gemspec +1 -1
- metadata +8 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23a0ed3b4f87bc4f9f28188d34e0b3917f1de549
|
4
|
+
data.tar.gz: 7fcec1a616e7664b9e5cee82b3a0fafb9920b85c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95e37ac03e8379e6cb98d5a1b64dd042487f23f235ea6e5e667cd1d0f47c799c222f77042083165462064b9a13b58c218ece9bc715915b65f530a38e22dcf15b
|
7
|
+
data.tar.gz: d892189d8cfd6544eb9b391ce71e2a672f79a8aa8ed6caa99dcd88aab696f6bf7aa393d718b5e36a86ec00ba588d744f76870d1573ac1833e163e67e29b5083b
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@ This gem make [Webpack](http://webpack.github.io) works with [Rails](http://gith
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
*Rails: >= 3*
|
8
|
+
|
7
9
|
Add this line to your application's Gemfile:
|
8
10
|
|
9
11
|
```ruby
|
@@ -24,7 +26,8 @@ Create `package.json` in your Rails root:
|
|
24
26
|
{
|
25
27
|
"name": "app",
|
26
28
|
"dependencies": {
|
27
|
-
"webpack": "^1.11.0"
|
29
|
+
"webpack": "^1.11.0",
|
30
|
+
"railshot-webpack-plugin": "*"
|
28
31
|
}
|
29
32
|
}
|
30
33
|
```
|
@@ -36,7 +39,25 @@ Run `npm i` to install the dependencies.
|
|
36
39
|
Make sure you have a `webpack.config.js` file in your Rails root dir, or specific your
|
37
40
|
webpack config file within `application.rb`
|
38
41
|
|
39
|
-
`config.
|
42
|
+
`config.webpackrails.config_file = "path_to_the_config_file"`
|
43
|
+
|
44
|
+
### Watch file for changes
|
45
|
+
|
46
|
+
Use webpack plugin `railshot-webpack-plugin` in your `webpack.config.js`.
|
47
|
+
If you haven't install the plugin yet, run `npm install railshot-webpack-plugin`.
|
48
|
+
|
49
|
+
```js
|
50
|
+
// webpack.config.js
|
51
|
+
|
52
|
+
var railshotPlugin = require('railshot-webpack-plugin');
|
53
|
+
|
54
|
+
// no entry here.
|
55
|
+
module.exports = {
|
56
|
+
plugins: [
|
57
|
+
railshotPlugin()
|
58
|
+
]
|
59
|
+
}
|
60
|
+
```
|
40
61
|
|
41
62
|
### Config
|
42
63
|
|
data/lib/webpackrails/railtie.rb
CHANGED
@@ -2,22 +2,29 @@
|
|
2
2
|
|
3
3
|
module WebpackRails
|
4
4
|
class Railtie < Rails::Engine
|
5
|
-
config.
|
5
|
+
config.webpackrails = ActiveSupport::OrderedOptions.new
|
6
6
|
|
7
7
|
# Webpack config file location
|
8
|
-
config.
|
8
|
+
config.webpackrails.config_file = ''
|
9
9
|
|
10
10
|
# Process every file?
|
11
|
-
config.
|
11
|
+
config.webpackrails.force = false
|
12
12
|
|
13
13
|
# paths to be parse
|
14
|
-
config.
|
14
|
+
config.webpackrails.paths = [lambda { |p| p.start_with?(Rails.root.join("app").to_s) },
|
15
15
|
lambda { |p| p.start_with?(Rails.root.join('node_modules').to_s) }]
|
16
16
|
|
17
|
-
config.
|
17
|
+
config.webpackrails.node_bin = "node_modules/.bin/"
|
18
|
+
|
19
|
+
# ignore node_modules
|
20
|
+
config.webpackrails.ignore_node_modules = true
|
18
21
|
|
19
22
|
initializer :setup_webpack do |app|
|
20
23
|
app.assets.register_postprocessor "application/javascript", WebpackRails::WebpackProcessor
|
21
24
|
end
|
25
|
+
|
26
|
+
rake_tasks do
|
27
|
+
Dir[File.join(File.dirname(__FILE__), "tasks/*.rake")].each { |f| load f }
|
28
|
+
end
|
22
29
|
end
|
23
30
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
namespace :npm do
|
2
|
+
desc "Run npm install"
|
3
|
+
task :install do
|
4
|
+
sh "npm install && npm --save install railshot-webpack-plugin" do |ok, res|
|
5
|
+
fail "Error running npm install." unless ok
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Clean npm node_modules"
|
10
|
+
task :clean do
|
11
|
+
sh "rm -rf ./node_modules" do |ok, res|
|
12
|
+
fail "Error cleaning npm node_modules." unless ok
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
namespace :install do
|
17
|
+
desc "Run a clean npm install"
|
18
|
+
task :clean => ['npm:clean', 'npm:install']
|
19
|
+
end
|
20
|
+
end
|
data/lib/webpackrails/version.rb
CHANGED
@@ -11,7 +11,7 @@ module WebpackRails
|
|
11
11
|
attr_accessor :config
|
12
12
|
|
13
13
|
def initialize(template)
|
14
|
-
self.config = Rails.application.config.
|
14
|
+
self.config = Rails.application.config.webpackrails
|
15
15
|
super(template)
|
16
16
|
end
|
17
17
|
|
@@ -25,14 +25,20 @@ module WebpackRails
|
|
25
25
|
# return if there is nothing to do
|
26
26
|
return data unless should_webpack?
|
27
27
|
|
28
|
-
run_webpack(context.pathname || context.logical_path)
|
28
|
+
evaluated = run_webpack(context.pathname || context.logical_path)
|
29
|
+
|
30
|
+
evaluate_dependencies(context.environment.paths).each do |path|
|
31
|
+
context.depend_on(path.to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
evaluated
|
29
35
|
end
|
30
36
|
|
31
37
|
private
|
32
38
|
|
33
39
|
# Set the temp path
|
34
40
|
def tmp_path
|
35
|
-
@tmp_path ||= Rails.root.join('tmp', 'cache', '
|
41
|
+
@tmp_path ||= Rails.root.join('tmp', 'cache', 'webpackrails').freeze
|
36
42
|
end
|
37
43
|
|
38
44
|
# return the webpack command path
|
@@ -43,6 +49,42 @@ module WebpackRails
|
|
43
49
|
# make sure the temp dir exists
|
44
50
|
def ensure_tmp_dir_exists!
|
45
51
|
FileUtils.mkdir_p(rails_path(tmp_path))
|
52
|
+
@deps_path = File.join(tmp_path, '_$webpackrails_dependencies');
|
53
|
+
end
|
54
|
+
|
55
|
+
# Filter out node_module/ files
|
56
|
+
def evaluate_dependencies(asset_paths)
|
57
|
+
return dependencies if !config.ignore_node_modules
|
58
|
+
|
59
|
+
dependencies.select do |path|
|
60
|
+
path.start_with?(*asset_paths)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# return array
|
65
|
+
def dependencies
|
66
|
+
ret ||= begin
|
67
|
+
if !File.exists?(@deps_path)
|
68
|
+
return []
|
69
|
+
end
|
70
|
+
|
71
|
+
output = ''
|
72
|
+
begin
|
73
|
+
file = File.open(@deps_path, 'r')
|
74
|
+
output = file.read
|
75
|
+
file.close
|
76
|
+
rescue
|
77
|
+
output = ''
|
78
|
+
end
|
79
|
+
|
80
|
+
if !output
|
81
|
+
return []
|
82
|
+
end
|
83
|
+
|
84
|
+
output.lines.map(&:strip).select do |path|
|
85
|
+
File.exists?(path)
|
86
|
+
end
|
87
|
+
end
|
46
88
|
end
|
47
89
|
|
48
90
|
# make sure the webpack config file exists
|
@@ -93,6 +135,8 @@ module WebpackRails
|
|
93
135
|
env_hash = {}
|
94
136
|
env_hash["NODE_PATH"] = asset_paths unless uses_exorcist
|
95
137
|
env_hash["NODE_ENV"] = config.node_env || Rails.env
|
138
|
+
env_hash["WR_TMP_FILE"] = @deps_path;
|
139
|
+
env_hash['RAILS_ROOT'] = Rails.root.to_s
|
96
140
|
env_hash
|
97
141
|
end
|
98
142
|
|
@@ -116,7 +160,12 @@ module WebpackRails
|
|
116
160
|
raise WebpackRails::WebpackError.new("Error while running `#{command}`:\n\n#{stderr}")
|
117
161
|
end
|
118
162
|
|
119
|
-
output_file.read
|
163
|
+
output = output_file.read
|
164
|
+
|
165
|
+
output_file.close
|
166
|
+
output_file.unlink
|
167
|
+
|
168
|
+
output
|
120
169
|
end
|
121
170
|
|
122
171
|
def rails_path(*paths)
|
data/webpackrails.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
|
-
spec.add_runtime_dependency "railties", "
|
30
|
+
spec.add_runtime_dependency "railties", ">= 3.0"
|
31
31
|
spec.add_runtime_dependency "sprockets", "~> 2.0"
|
32
32
|
|
33
33
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,35 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webpackrails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- towry
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.2'
|
20
|
-
- - <=
|
17
|
+
- - '>='
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: '3.0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.2'
|
30
|
-
- - <=
|
24
|
+
- - '>='
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
26
|
+
version: '3.0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: sprockets
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,6 +125,7 @@ files:
|
|
131
125
|
- bin/setup
|
132
126
|
- lib/webpackrails.rb
|
133
127
|
- lib/webpackrails/railtie.rb
|
128
|
+
- lib/webpackrails/tasks/npm.rake
|
134
129
|
- lib/webpackrails/version.rb
|
135
130
|
- lib/webpackrails/webpack_error.rb
|
136
131
|
- lib/webpackrails/webpack_logger.rb
|
@@ -162,3 +157,4 @@ signing_key:
|
|
162
157
|
specification_version: 4
|
163
158
|
summary: Make Webpack work with Rails for you
|
164
159
|
test_files: []
|
160
|
+
has_rdoc:
|