browserify-rails 0.6.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -2
- data/lib/browserify-rails/browserify_processor.rb +117 -54
- data/lib/browserify-rails/railtie.rb +4 -1
- data/lib/browserify-rails/version.rb +1 -1
- data/test/compilation_test.rb +13 -21
- data/test/dummy/package.json +1 -0
- data/test/fixtures/application.changed.out.js +4 -4
- data/test/fixtures/application.foo_changed.out.js +5 -5
- data/test/fixtures/application.node_test_package_changed.out.js +5 -5
- data/test/fixtures/application.out.js +5 -5
- data/test/fixtures/foo.out.js +1 -1
- data/test/fixtures/main.out.js +3 -3
- data/test/fixtures/mocha.js +4 -4
- data/test/fixtures/node_path_based_require.out.js +3 -3
- data/test/fixtures/secondary.out.js +3 -3
- data/test/test_helper.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ec87a4fff319b405562ec1fa058d017b69f6d11
|
4
|
+
data.tar.gz: 237322a74b3801ccb8124b948fd89700a742c831
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b7cf388a9aedb93b97d24d0169f02a8c98ebb10b1aa053f224fb03d954982602edb57f379072da200f29ffafa477157bcff897d0fbcc8ad583359b9582fe85f
|
7
|
+
data.tar.gz: 7f0a8eb6d944b42b032f3b04b3d6700a1ba69562364f7a732df7e0c631ff625d5be17c71cbd8eb443bbd986285ebd488f33a0d2a05a228e0ccd5b99c60feec7b
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ It lets you mix and match `//= require` directives and `require()` calls for in
|
|
17
17
|
|
18
18
|
Add this line to your application's Gemfile:
|
19
19
|
|
20
|
-
gem "browserify-rails", "~> 0.
|
20
|
+
gem "browserify-rails", "~> 0.7"
|
21
21
|
|
22
22
|
Create `package.json` in your Rails root:
|
23
23
|
|
@@ -25,7 +25,8 @@ Create `package.json` in your Rails root:
|
|
25
25
|
{
|
26
26
|
"name": "something",
|
27
27
|
"devDependencies" : {
|
28
|
-
"browserify": "~> 6.3"
|
28
|
+
"browserify": "~> 6.3",
|
29
|
+
"browserify-incremental": "^1.4.0"
|
29
30
|
},
|
30
31
|
"license": "MIT",
|
31
32
|
"engines": {
|
@@ -143,6 +144,14 @@ use cases have been considered. If your use case does not work, please open
|
|
143
144
|
an issue with a runnable example of the problem including your
|
144
145
|
browserify.yml file.
|
145
146
|
|
147
|
+
### Inside Isolated Engines
|
148
|
+
|
149
|
+
To make browserify-rails work inside an isolated engine, add the engine app directory to the browserify-rails paths (inside engine.rb):
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
config.browserify_rails.paths << lambda { |p| p.start_with?(Engine.root.join("app").to_s) }
|
153
|
+
```
|
154
|
+
|
146
155
|
## Support for rails asset directories as non-relative module sources
|
147
156
|
|
148
157
|
In the Rails asset pipeline, it is common to have files in
|
@@ -1,37 +1,55 @@
|
|
1
1
|
require "open3"
|
2
|
+
require "fileutils"
|
3
|
+
require "tempfile"
|
2
4
|
|
3
5
|
module BrowserifyRails
|
4
6
|
class BrowserifyProcessor < Tilt::Template
|
5
|
-
|
7
|
+
NODE_BIN = "node_modules/.bin/"
|
8
|
+
|
9
|
+
BROWSERIFY_CMD = File.join(NODE_BIN, "browserify").freeze
|
10
|
+
BROWSERIFYINC_CMD = File.join(NODE_BIN, "browserifyinc").freeze
|
11
|
+
|
12
|
+
TMP_PATH = File.join("tmp/browserify-rails").freeze
|
6
13
|
|
7
14
|
def prepare
|
8
|
-
|
15
|
+
ensure_tmp_dir_exists!
|
16
|
+
ensure_commands_exist!
|
9
17
|
end
|
10
18
|
|
11
19
|
def evaluate(context, locals, &block)
|
12
|
-
|
13
|
-
|
14
|
-
context.depend_on(path)
|
15
|
-
end
|
20
|
+
# If there's nothing to do, we just return the data we received
|
21
|
+
return data unless should_browserify?
|
16
22
|
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
# Signal dependencies to sprockets to ensure we track changes
|
24
|
+
evaluate_dependencies(context.environment.paths).each do |path|
|
25
|
+
context.depend_on(path)
|
20
26
|
end
|
27
|
+
|
28
|
+
run_browserify(context.logical_path)
|
21
29
|
end
|
22
30
|
|
23
|
-
|
31
|
+
private
|
24
32
|
|
25
|
-
def
|
26
|
-
|
33
|
+
def config
|
34
|
+
Rails.application.config.browserify_rails
|
27
35
|
end
|
28
36
|
|
29
|
-
def
|
30
|
-
|
37
|
+
def ensure_tmp_dir_exists!
|
38
|
+
FileUtils.mkdir_p(rails_path(TMP_PATH))
|
31
39
|
end
|
32
40
|
|
33
|
-
def
|
34
|
-
|
41
|
+
def ensure_commands_exist!
|
42
|
+
error = ->(cmd) { "Unable to run #{cmd}. Ensure you have installed it with npm." }
|
43
|
+
|
44
|
+
# Browserify has to be installed in any case
|
45
|
+
if !File.exists?(rails_path(BROWSERIFY_CMD))
|
46
|
+
raise BrowserifyRails::BrowserifyError.new(error.call(BROWSERIFY_CMD))
|
47
|
+
end
|
48
|
+
|
49
|
+
# If the user wants to use browserifyinc, we need to ensure it's there too
|
50
|
+
if config.use_browserifyinc && !File.exists?(rails_path(BROWSERIFYINC_CMD))
|
51
|
+
raise BrowserifyRails::BrowserifyError.new(error.call(BROWSERIFYINC_CMD))
|
52
|
+
end
|
35
53
|
end
|
36
54
|
|
37
55
|
def should_browserify?
|
@@ -58,6 +76,10 @@ module BrowserifyRails
|
|
58
76
|
data.to_s.include?("module.exports") || data.present? && data.to_s.include?("require") && dependencies.length > 0
|
59
77
|
end
|
60
78
|
|
79
|
+
def asset_paths
|
80
|
+
@asset_paths ||= Rails.application.config.assets.paths.collect { |p| p.to_s }.join(":") || ""
|
81
|
+
end
|
82
|
+
|
61
83
|
# This primarily filters out required files from node modules
|
62
84
|
#
|
63
85
|
# @return [<String>] Paths of dependencies to evaluate
|
@@ -71,27 +93,20 @@ module BrowserifyRails
|
|
71
93
|
|
72
94
|
# @return [<String>] Paths of files, that this file depends on
|
73
95
|
def dependencies
|
74
|
-
@dependencies ||=
|
75
|
-
#
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
def browserify_cmd
|
85
|
-
cmd = File.join(Rails.root, BROWSERIFY_CMD)
|
86
|
-
|
87
|
-
if !File.exist?(cmd)
|
88
|
-
raise BrowserifyRails::BrowserifyError.new("browserify could not be found at #{cmd}. Please run npm install.")
|
96
|
+
@dependencies ||= begin
|
97
|
+
# We forcefully run browserify (avoiding browserifyinc) with the --list
|
98
|
+
# option to get a list of files.
|
99
|
+
list = run_browserify(nil, "--list")
|
100
|
+
|
101
|
+
list.lines.map(&:strip).select do |path|
|
102
|
+
# Filter the temp file, where browserify caches the input stream
|
103
|
+
File.exists?(path)
|
104
|
+
end
|
89
105
|
end
|
90
|
-
|
91
|
-
cmd
|
92
106
|
end
|
93
107
|
|
94
|
-
# Run
|
108
|
+
# Run the requested version of browserify (browserify or browserifyinc)
|
109
|
+
# based on configuration or the use_browserifyinc parameter if present.
|
95
110
|
#
|
96
111
|
# We are passing the data via stdin, so that earlier preprocessing steps are
|
97
112
|
# respected. If you had, say, an "application.js.coffee.erb", passing the
|
@@ -101,32 +116,61 @@ module BrowserifyRails
|
|
101
116
|
# javascript at the time this processor is called.
|
102
117
|
#
|
103
118
|
# @raise [BrowserifyRails::BrowserifyError] if browserify does not succeed
|
104
|
-
# @param
|
105
|
-
# @
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
119
|
+
# @param logical_path [String] Sprockets's logical path for the file
|
120
|
+
# @param extra_options [String] Options to be included in the command
|
121
|
+
# @param force_browserifyinc [Boolean] Causes browserifyinc to be used if true
|
122
|
+
# @return [String] Output of the command
|
123
|
+
def run_browserify(logical_path=nil, extra_options=nil, force_browserifyinc=nil)
|
124
|
+
command_options = "#{options} #{extra_options} #{granular_options(logical_path)}".strip
|
125
|
+
|
126
|
+
# Browserifyinc uses a special cache file. We set up the path for it if
|
127
|
+
# we're going to use browserifyinc.
|
128
|
+
if uses_browserifyinc(force_browserifyinc)
|
129
|
+
cache_file_path = rails_path(TMP_PATH, "browserifyinc-cache.json")
|
130
|
+
command_options << " --cachefile=#{cache_file_path.inspect}"
|
115
131
|
end
|
116
132
|
|
117
|
-
|
118
|
-
|
133
|
+
# Create a temporary file for the output. Such file is necessary when
|
134
|
+
# using browserifyinc, but we use it in all instances for consistency
|
135
|
+
output_file = Tempfile.new("output", rails_path(TMP_PATH))
|
136
|
+
command_options << " -o #{output_file.path.inspect}"
|
137
|
+
|
138
|
+
# Compose the full command (using browserify or browserifyinc as necessary)
|
139
|
+
command = "#{browserify_command(force_browserifyinc)} #{command_options} -"
|
140
|
+
env = { "NODE_PATH" => asset_paths }
|
141
|
+
|
142
|
+
# The directory the command will be executed from
|
143
|
+
base_directory = File.dirname(file)
|
144
|
+
|
119
145
|
Logger::log "Browserify: #{command}"
|
120
|
-
|
121
|
-
"NODE_PATH" => asset_paths
|
122
|
-
}
|
123
|
-
stdout, stderr, status = Open3.capture3(env, command, stdin_data: data, chdir: directory)
|
146
|
+
stdout, stderr, status = Open3.capture3(env, command, stdin_data: data, chdir: base_directory)
|
124
147
|
|
125
148
|
if !status.success?
|
126
149
|
raise BrowserifyRails::BrowserifyError.new("Error while running `#{command}`:\n\n#{stderr}")
|
127
150
|
end
|
128
151
|
|
129
|
-
|
152
|
+
# Read the output that was stored in the temp file
|
153
|
+
output = output_file.read
|
154
|
+
|
155
|
+
# Destroy the temp file (good practice)
|
156
|
+
output_file.close
|
157
|
+
output_file.unlink
|
158
|
+
|
159
|
+
# Some command flags (such as --list) make the output go to stdout,
|
160
|
+
# ignoring -o. If this happens, we give out stdout instead.
|
161
|
+
if stdout.present?
|
162
|
+
stdout
|
163
|
+
else
|
164
|
+
output
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def uses_browserifyinc(force=nil)
|
169
|
+
!force.nil? ? force : config.use_browserifyinc
|
170
|
+
end
|
171
|
+
|
172
|
+
def browserify_command(force=nil)
|
173
|
+
rails_path(uses_browserifyinc(force) ? BROWSERIFYINC_CMD : BROWSERIFY_CMD)
|
130
174
|
end
|
131
175
|
|
132
176
|
def options
|
@@ -139,8 +183,27 @@ module BrowserifyRails
|
|
139
183
|
options.uniq.join(" ")
|
140
184
|
end
|
141
185
|
|
142
|
-
def
|
143
|
-
|
186
|
+
def get_granular_config(logical_path)
|
187
|
+
granular_config = config.granular["javascript"]
|
188
|
+
|
189
|
+
granular_config && granular_config[logical_path]
|
190
|
+
end
|
191
|
+
|
192
|
+
def granular_options(logical_path)
|
193
|
+
granular_config = get_granular_config(logical_path)
|
194
|
+
|
195
|
+
return nil if granular_config.blank?
|
196
|
+
|
197
|
+
# We set separate options for each of the items in granular_config
|
198
|
+
options = granular_config.keys.collect do |key|
|
199
|
+
granular_config[key].collect { |value| "--#{key} #{value}" }
|
200
|
+
end
|
201
|
+
|
202
|
+
options.flatten.join(" ") if options
|
203
|
+
end
|
204
|
+
|
205
|
+
def rails_path(*paths)
|
206
|
+
Rails.root.join(*paths).to_s
|
144
207
|
end
|
145
208
|
end
|
146
209
|
end
|
@@ -12,11 +12,14 @@ module BrowserifyRails
|
|
12
12
|
# Environments to generate source maps in
|
13
13
|
config.browserify_rails.source_map_environments = ["development"]
|
14
14
|
|
15
|
+
# Use browserifyinc instead of browserify
|
16
|
+
config.browserify_rails.use_browserifyinc = true
|
17
|
+
|
15
18
|
initializer :setup_browserify do |app|
|
16
19
|
# Load granular configuration
|
17
20
|
filename = File.join(Rails.root, 'config', 'browserify.yml')
|
18
21
|
configuration = YAML::load(File.read(filename)) if File.exist? filename
|
19
|
-
config.
|
22
|
+
config.browserify_rails.granular = configuration || {}
|
20
23
|
|
21
24
|
app.assets.register_postprocessor "application/javascript", BrowserifyRails::BrowserifyProcessor
|
22
25
|
end
|
data/test/compilation_test.rb
CHANGED
@@ -12,6 +12,9 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
12
12
|
setup do
|
13
13
|
Rails.application.assets.cache = nil
|
14
14
|
|
15
|
+
cache_file = File.join(Rails.root, "tmp/browserify-rails/browserifyinc-cache.json")
|
16
|
+
File.delete(cache_file) if File.exists?(cache_file)
|
17
|
+
|
15
18
|
copy_example_file "application.js.example"
|
16
19
|
copy_example_file "foo.js.example"
|
17
20
|
copy_example_file "nested/index.js.example"
|
@@ -30,36 +33,16 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
30
33
|
expected_output = fixture("application.out.js")
|
31
34
|
|
32
35
|
get "/assets/application.js"
|
33
|
-
assert_response :success
|
34
|
-
assert_equal expected_output, @response.body.strip
|
35
|
-
end
|
36
36
|
|
37
|
-
test "asset pipeline should serve foo.js" do
|
38
|
-
expected_output = fixture("application.out.js")
|
39
|
-
|
40
|
-
get "/assets/application.js"
|
41
37
|
assert_response :success
|
42
38
|
assert_equal expected_output, @response.body.strip
|
43
39
|
end
|
44
40
|
|
45
|
-
test "asset pipeline should
|
46
|
-
Dummy::Application.config.browserify_rails.evaluate_node_modules = false
|
41
|
+
test "asset pipeline should serve foo.js" do
|
47
42
|
expected_output = fixture("application.out.js")
|
48
43
|
|
49
44
|
get "/assets/application.js"
|
50
|
-
assert_response :success
|
51
|
-
assert_equal expected_output, @response.body.strip
|
52
|
-
|
53
|
-
# Ensure that Sprockets can detect the change to the file modification time
|
54
|
-
sleep 1
|
55
|
-
|
56
|
-
File.open(File.join(Rails.root, "node_modules/node-test-package/index.js"), "w+") do |f|
|
57
|
-
f.puts 'module.exports = console.log("goodbye friend");'
|
58
|
-
end
|
59
|
-
|
60
|
-
expected_output = fixture("application.out.js")
|
61
45
|
|
62
|
-
get "/assets/application.js"
|
63
46
|
assert_response :success
|
64
47
|
assert_equal expected_output, @response.body.strip
|
65
48
|
end
|
@@ -69,6 +52,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
69
52
|
expected_output = fixture("application.out.js")
|
70
53
|
|
71
54
|
get "/assets/application.js"
|
55
|
+
|
72
56
|
assert_response :success
|
73
57
|
assert_equal expected_output, @response.body.strip
|
74
58
|
|
@@ -82,6 +66,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
82
66
|
expected_output = fixture("application.node_test_package_changed.out.js")
|
83
67
|
|
84
68
|
get "/assets/application.js"
|
69
|
+
|
85
70
|
assert_response :success
|
86
71
|
assert_equal expected_output, @response.body.strip
|
87
72
|
end
|
@@ -90,6 +75,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
90
75
|
expected_output = fixture("application.out.js")
|
91
76
|
|
92
77
|
get "/assets/application.js"
|
78
|
+
|
93
79
|
assert_response :success
|
94
80
|
assert_equal expected_output, @response.body.strip
|
95
81
|
|
@@ -104,6 +90,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
104
90
|
expected_output = fixture("application.foo_changed.out.js")
|
105
91
|
|
106
92
|
get "/assets/application.js"
|
93
|
+
|
107
94
|
assert_response :success
|
108
95
|
assert_equal expected_output, @response.body.strip
|
109
96
|
end
|
@@ -112,6 +99,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
112
99
|
expected_output = fixture("application.out.js")
|
113
100
|
|
114
101
|
get "/assets/application.js"
|
102
|
+
|
115
103
|
assert_response :success
|
116
104
|
assert_equal expected_output, @response.body.strip
|
117
105
|
|
@@ -126,6 +114,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
126
114
|
expected_output = fixture("application.changed.out.js")
|
127
115
|
|
128
116
|
get "/assets/application.js"
|
117
|
+
|
129
118
|
assert_response :success
|
130
119
|
assert_equal expected_output, @response.body.strip
|
131
120
|
end
|
@@ -141,6 +130,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
141
130
|
|
142
131
|
test "browserifies files with coffee requires" do
|
143
132
|
get "/assets/coffee.js"
|
133
|
+
|
144
134
|
assert_no_match /BrowserifyRails::BrowserifyError/, @response.body
|
145
135
|
end
|
146
136
|
|
@@ -156,6 +146,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
156
146
|
|
157
147
|
test "skips files that are already browserified" do
|
158
148
|
get "/assets/browserified.js"
|
149
|
+
|
159
150
|
assert_equal fixture("browserified.out.js"), @response.body.strip
|
160
151
|
end
|
161
152
|
|
@@ -184,6 +175,7 @@ class BrowserifyTest < ActionController::IntegrationTest
|
|
184
175
|
end
|
185
176
|
|
186
177
|
get "/assets/application.js"
|
178
|
+
|
187
179
|
assert_match /BrowserifyRails::BrowserifyError/, @response.body
|
188
180
|
end
|
189
181
|
end
|
data/test/dummy/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var foo = require('./foo');
|
3
3
|
console.log(foo(11));
|
4
4
|
|
5
|
-
},{"./foo":
|
5
|
+
},{"./foo":"__RAILS_ROOT__/app/assets/javascripts/foo.js"}],"__RAILS_ROOT__/app/assets/javascripts/foo.js":[function(require,module,exports){
|
6
6
|
require('./nested');
|
7
7
|
module.exports = function (n) { return n * 11 }
|
8
8
|
|
9
|
-
},{"./nested":
|
9
|
+
},{"./nested":"__RAILS_ROOT__/app/assets/javascripts/nested/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/nested/index.js":[function(require,module,exports){
|
10
10
|
module.exports.NESTED = true;
|
11
11
|
|
12
|
-
},{}]},{},[
|
12
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
@@ -1,15 +1,15 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var foo = require('./foo');
|
3
3
|
var nodeTestPackage = require('node-test-package');
|
4
4
|
|
5
|
-
},{"./foo":
|
5
|
+
},{"./foo":"__RAILS_ROOT__/app/assets/javascripts/foo.js","node-test-package":"__RAILS_ROOT__/node_modules/node-test-package/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/foo.js":[function(require,module,exports){
|
6
6
|
require('./nested');
|
7
7
|
module.exports = function (n) { return n * 12 }
|
8
8
|
|
9
|
-
},{"./nested":
|
9
|
+
},{"./nested":"__RAILS_ROOT__/app/assets/javascripts/nested/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/nested/index.js":[function(require,module,exports){
|
10
10
|
module.exports.NESTED = true;
|
11
11
|
|
12
|
-
},{}],
|
12
|
+
},{}],"__RAILS_ROOT__/node_modules/node-test-package/index.js":[function(require,module,exports){
|
13
13
|
module.exports = console.log("hello friend");
|
14
14
|
|
15
|
-
},{}]},{},[
|
15
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
@@ -1,15 +1,15 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var foo = require('./foo');
|
3
3
|
var nodeTestPackage = require('node-test-package');
|
4
4
|
|
5
|
-
},{"./foo":
|
5
|
+
},{"./foo":"__RAILS_ROOT__/app/assets/javascripts/foo.js","node-test-package":"__RAILS_ROOT__/node_modules/node-test-package/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/foo.js":[function(require,module,exports){
|
6
6
|
require('./nested');
|
7
7
|
module.exports = function (n) { return n * 11 }
|
8
8
|
|
9
|
-
},{"./nested":
|
9
|
+
},{"./nested":"__RAILS_ROOT__/app/assets/javascripts/nested/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/nested/index.js":[function(require,module,exports){
|
10
10
|
module.exports.NESTED = true;
|
11
11
|
|
12
|
-
},{}],
|
12
|
+
},{}],"__RAILS_ROOT__/node_modules/node-test-package/index.js":[function(require,module,exports){
|
13
13
|
module.exports = console.log("goodbye friend");
|
14
14
|
|
15
|
-
},{}]},{},[
|
15
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
@@ -1,15 +1,15 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var foo = require('./foo');
|
3
3
|
var nodeTestPackage = require('node-test-package');
|
4
4
|
|
5
|
-
},{"./foo":
|
5
|
+
},{"./foo":"__RAILS_ROOT__/app/assets/javascripts/foo.js","node-test-package":"__RAILS_ROOT__/node_modules/node-test-package/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/foo.js":[function(require,module,exports){
|
6
6
|
require('./nested');
|
7
7
|
module.exports = function (n) { return n * 11 }
|
8
8
|
|
9
|
-
},{"./nested":
|
9
|
+
},{"./nested":"__RAILS_ROOT__/app/assets/javascripts/nested/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/nested/index.js":[function(require,module,exports){
|
10
10
|
module.exports.NESTED = true;
|
11
11
|
|
12
|
-
},{}],
|
12
|
+
},{}],"__RAILS_ROOT__/node_modules/node-test-package/index.js":[function(require,module,exports){
|
13
13
|
module.exports = console.log("hello friend");
|
14
14
|
|
15
|
-
},{}]},{},[
|
15
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
data/test/fixtures/foo.out.js
CHANGED
data/test/fixtures/main.out.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var library = require('./a_huge_library');
|
3
3
|
|
4
4
|
module.exports = function() {
|
5
5
|
console.log('library', library);
|
6
6
|
};
|
7
7
|
|
8
|
-
},{"./a_huge_library":
|
8
|
+
},{"./a_huge_library":"__RAILS_ROOT__/app/assets/javascripts/a_huge_library.js"}],"__RAILS_ROOT__/app/assets/javascripts/a_huge_library.js":[function(require,module,exports){
|
9
9
|
// pretend this file is 1 MB
|
10
10
|
//
|
11
11
|
// app_main.js is going to require() it and browserify.yml is going to tell it to use --require on it
|
@@ -21,4 +21,4 @@ module.exports = function() {
|
|
21
21
|
|
22
22
|
module.exports = "THIS IS A HUGE LIBRARY";
|
23
23
|
|
24
|
-
},{}]},{},[
|
24
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
data/test/fixtures/mocha.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
(function() {
|
3
3
|
var f, hello;
|
4
4
|
|
@@ -10,11 +10,11 @@
|
|
10
10
|
|
11
11
|
}).call(this);
|
12
12
|
|
13
|
-
},{"./foo":
|
13
|
+
},{"./foo":"__RAILS_ROOT__/app/assets/javascripts/foo.js"}],"__RAILS_ROOT__/app/assets/javascripts/foo.js":[function(require,module,exports){
|
14
14
|
require('./nested');
|
15
15
|
module.exports = function (n) { return n * 11 }
|
16
16
|
|
17
|
-
},{"./nested":
|
17
|
+
},{"./nested":"__RAILS_ROOT__/app/assets/javascripts/nested/index.js"}],"__RAILS_ROOT__/app/assets/javascripts/nested/index.js":[function(require,module,exports){
|
18
18
|
module.exports.NESTED = true;
|
19
19
|
|
20
|
-
},{}]},{},[
|
20
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
@@ -1,9 +1,9 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var answer = require('some_folder/answer');
|
3
3
|
|
4
4
|
console.log('answer', answer);
|
5
5
|
|
6
|
-
},{"some_folder/answer":
|
6
|
+
},{"some_folder/answer":"__RAILS_ROOT__/app/assets/javascripts/some_folder/answer.js"}],"__RAILS_ROOT__/app/assets/javascripts/some_folder/answer.js":[function(require,module,exports){
|
7
7
|
module.exports = 42;
|
8
8
|
|
9
|
-
},{}]},{},[
|
9
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
@@ -1,11 +1,11 @@
|
|
1
|
-
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"__RAILS_ROOT__/app/assets/javascripts/_stream_0.js":[function(require,module,exports){
|
2
2
|
var library = require('./a_huge_library');
|
3
3
|
|
4
4
|
module.exports = function() {
|
5
5
|
console.log('some problem', library);
|
6
6
|
};
|
7
7
|
|
8
|
-
},{"./a_huge_library":"/a_huge_library"}],
|
8
|
+
},{"./a_huge_library":"/a_huge_library"}],"__RAILS_ROOT__/app/assets/javascripts/a_huge_library.js":[function(require,module,exports){
|
9
9
|
// pretend this file is 1 MB
|
10
10
|
//
|
11
11
|
// app_main.js is going to require() it and browserify.yml is going to tell it to use --require on it
|
@@ -21,4 +21,4 @@ module.exports = function() {
|
|
21
21
|
|
22
22
|
module.exports = "THIS IS A HUGE LIBRARY";
|
23
23
|
|
24
|
-
},{}]},{},[
|
24
|
+
},{}]},{},["__RAILS_ROOT__/app/assets/javascripts/_stream_0.js"]);
|
data/test/test_helper.rb
CHANGED
@@ -16,7 +16,8 @@ FileUtils.rm_rf "#{File.dirname(__FILE__)}/dummy/tmp"
|
|
16
16
|
ActiveSupport::TestCase.class_eval do
|
17
17
|
def fixture(filename)
|
18
18
|
File.open(File.join(File.dirname(__FILE__), "fixtures", filename)) do |f|
|
19
|
-
f.read.strip
|
19
|
+
contents = f.read.strip
|
20
|
+
contents.gsub(/__RAILS_ROOT__/, Rails.root.to_s) if contents
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browserify-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henry Hsu, Cymen Vig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sprockets
|