webpacker-jets 3.2.100
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/.eslintignore +4 -0
- data/.eslintrc.js +14 -0
- data/.gitignore +6 -0
- data/.rubocop.yml +124 -0
- data/.travis.yml +32 -0
- data/CHANGELOG.md +523 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +154 -0
- data/MIT-LICENSE +20 -0
- data/README.md +445 -0
- data/Rakefile +12 -0
- data/docs/assets.md +106 -0
- data/docs/cloud9.md +310 -0
- data/docs/css.md +116 -0
- data/docs/deployment.md +74 -0
- data/docs/docker.md +49 -0
- data/docs/env.md +65 -0
- data/docs/es6.md +53 -0
- data/docs/folder-structure.md +66 -0
- data/docs/misc.md +23 -0
- data/docs/props.md +223 -0
- data/docs/testing.md +128 -0
- data/docs/troubleshooting.md +119 -0
- data/docs/typescript.md +116 -0
- data/docs/webpack-dev-server.md +92 -0
- data/docs/webpack.md +297 -0
- data/docs/yarn.md +12 -0
- data/exe/webpack +8 -0
- data/exe/webpack-dev-server +8 -0
- data/gemfiles/Gemfile-rails-edge +13 -0
- data/gemfiles/Gemfile-rails.4.2.x +10 -0
- data/gemfiles/Gemfile-rails.5.0.x +10 -0
- data/gemfiles/Gemfile-rails.5.1.x +10 -0
- data/lib/install/angular.rb +27 -0
- data/lib/install/coffee.rb +22 -0
- data/lib/install/config/.babelrc +18 -0
- data/lib/install/config/.postcssrc.yml +3 -0
- data/lib/install/config/webpack/development.js +3 -0
- data/lib/install/config/webpack/environment.js +3 -0
- data/lib/install/config/webpack/production.js +3 -0
- data/lib/install/config/webpack/staging.js +3 -0
- data/lib/install/config/webpack/test.js +3 -0
- data/lib/install/config/webpacker.yml +79 -0
- data/lib/install/elm.rb +38 -0
- data/lib/install/erb.rb +22 -0
- data/lib/install/examples/angular/hello_angular.js +7 -0
- data/lib/install/examples/angular/hello_angular/app/app.component.ts +9 -0
- data/lib/install/examples/angular/hello_angular/app/app.module.ts +16 -0
- data/lib/install/examples/angular/hello_angular/index.ts +8 -0
- data/lib/install/examples/angular/hello_angular/polyfills.ts +73 -0
- data/lib/install/examples/angular/tsconfig.json +19 -0
- data/lib/install/examples/coffee/hello_coffee.coffee +4 -0
- data/lib/install/examples/elm/Main.elm +54 -0
- data/lib/install/examples/elm/hello_elm.js +12 -0
- data/lib/install/examples/erb/hello_erb.js.erb +6 -0
- data/lib/install/examples/react/.babelrc +6 -0
- data/lib/install/examples/react/hello_react.jsx +26 -0
- data/lib/install/examples/vue/app.vue +22 -0
- data/lib/install/examples/vue/hello_vue.js +70 -0
- data/lib/install/javascript/packs/application.js +10 -0
- data/lib/install/loaders/coffee.js +6 -0
- data/lib/install/loaders/elm.js +23 -0
- data/lib/install/loaders/erb.js +11 -0
- data/lib/install/loaders/typescript.js +6 -0
- data/lib/install/loaders/vue.js +13 -0
- data/lib/install/react.rb +28 -0
- data/lib/install/template.rb +37 -0
- data/lib/install/vue.rb +26 -0
- data/lib/tasks/installers.rake +24 -0
- data/lib/tasks/webpacker.rake +22 -0
- data/lib/tasks/webpacker/check_binstubs.rake +12 -0
- data/lib/tasks/webpacker/check_node.rake +24 -0
- data/lib/tasks/webpacker/check_yarn.rake +24 -0
- data/lib/tasks/webpacker/clobber.rake +16 -0
- data/lib/tasks/webpacker/compile.rake +41 -0
- data/lib/tasks/webpacker/install.rake +13 -0
- data/lib/tasks/webpacker/verify_install.rake +16 -0
- data/lib/tasks/webpacker/yarn_install.rake +6 -0
- data/lib/webpacker.rb +32 -0
- data/lib/webpacker/commands.rb +23 -0
- data/lib/webpacker/compiler.rb +88 -0
- data/lib/webpacker/configuration.rb +87 -0
- data/lib/webpacker/dev_server.rb +61 -0
- data/lib/webpacker/dev_server_proxy.rb +26 -0
- data/lib/webpacker/dev_server_runner.rb +51 -0
- data/lib/webpacker/helper.rb +66 -0
- data/lib/webpacker/instance.rb +44 -0
- data/lib/webpacker/manifest.rb +75 -0
- data/lib/webpacker/railtie.rb +82 -0
- data/lib/webpacker/rake_tasks.rb +6 -0
- data/lib/webpacker/runner.rb +22 -0
- data/lib/webpacker/version.rb +9 -0
- data/lib/webpacker/webpack_runner.rb +15 -0
- data/package.json +67 -0
- data/package/__tests__/environment.js +74 -0
- data/package/config.js +34 -0
- data/package/config_types/__tests__/config_list.js +123 -0
- data/package/config_types/__tests__/config_object.js +43 -0
- data/package/config_types/config_list.js +85 -0
- data/package/config_types/config_object.js +55 -0
- data/package/config_types/index.js +7 -0
- data/package/environment.js +116 -0
- data/package/environments/development.js +46 -0
- data/package/environments/production.js +37 -0
- data/package/environments/test.js +3 -0
- data/package/index.js +20 -0
- data/package/rules/babel.js +13 -0
- data/package/rules/css.js +39 -0
- data/package/rules/file.js +13 -0
- data/package/rules/index.js +11 -0
- data/package/rules/sass.js +15 -0
- data/package/utils/__tests__/deep_assign.js +11 -0
- data/package/utils/__tests__/deep_merge.js +10 -0
- data/package/utils/__tests__/objectify.js +9 -0
- data/package/utils/deep_assign.js +22 -0
- data/package/utils/deep_merge.js +23 -0
- data/package/utils/helpers.js +32 -0
- data/package/utils/objectify.js +4 -0
- data/test/command_test.rb +27 -0
- data/test/compiler_test.rb +35 -0
- data/test/configuration_test.rb +69 -0
- data/test/dev_server_test.rb +24 -0
- data/test/helper_test.rb +52 -0
- data/test/manifest_test.rb +28 -0
- data/test/rake_tasks_test.rb +29 -0
- data/test/test_app/Rakefile +3 -0
- data/test/test_app/app/javascript/packs/application.js +10 -0
- data/test/test_app/config/application.rb +11 -0
- data/test/test_app/config/environment.rb +4 -0
- data/test/test_app/config/webpacker.yml +65 -0
- data/test/test_app/public/packs/manifest.json +6 -0
- data/test/test_helper.rb +29 -0
- data/webpacker-jets.gemspec +29 -0
- data/yarn.lock +5768 -0
- metadata +250 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const { join } = require('path')
|
|
2
|
+
const { source_path } = require('../config')
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
exclude: /\.(js|jsx|coffee|ts|tsx|vue|elm|scss|sass|css|html|json)?(\.erb)?$/,
|
|
6
|
+
use: [{
|
|
7
|
+
loader: 'file-loader',
|
|
8
|
+
options: {
|
|
9
|
+
name: '[path][name]-[hash].[ext]',
|
|
10
|
+
context: join(source_path)
|
|
11
|
+
}
|
|
12
|
+
}]
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const cssLoader = require('./css')
|
|
2
|
+
const deepMerge = require('../utils/deep_merge')
|
|
3
|
+
|
|
4
|
+
// Duplicate and remove css loader object reference
|
|
5
|
+
let sassLoader = JSON.parse(JSON.stringify(cssLoader))
|
|
6
|
+
|
|
7
|
+
sassLoader = deepMerge(sassLoader, {
|
|
8
|
+
test: /\.(scss|sass)$/i,
|
|
9
|
+
use: [{
|
|
10
|
+
loader: 'sass-loader',
|
|
11
|
+
options: { sourceMap: true }
|
|
12
|
+
}]
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
module.exports = sassLoader
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* global test expect */
|
|
2
|
+
|
|
3
|
+
const deepAssign = require('../deep_assign')
|
|
4
|
+
|
|
5
|
+
test('deep assign property', () => {
|
|
6
|
+
const object = { foo: { bar: { } } }
|
|
7
|
+
const path = 'foo.bar'
|
|
8
|
+
const value = { x: 1, y: 2 }
|
|
9
|
+
const expectation = { foo: { bar: { x: 1, y: 2 } } }
|
|
10
|
+
expect(deepAssign(object, path, value)).toEqual(expectation)
|
|
11
|
+
})
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/* global test expect */
|
|
2
|
+
|
|
3
|
+
const deepMerge = require('../deep_merge')
|
|
4
|
+
|
|
5
|
+
test('deep merge objects together', () => {
|
|
6
|
+
const object1 = { foo: { bar: [1, 2, 3], z: 1 }, x: 0 }
|
|
7
|
+
const object2 = { foo: { bar: ['x', 'y'] }, x: 1, y: 2 }
|
|
8
|
+
const expectation = { foo: { bar: [1, 2, 3, 'x', 'y'], z: 1 }, x: 1, y: 2 }
|
|
9
|
+
expect(deepMerge(object1, object2)).toEqual(expectation)
|
|
10
|
+
})
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* global test expect */
|
|
2
|
+
|
|
3
|
+
const objectify = require('../objectify')
|
|
4
|
+
|
|
5
|
+
test('Get object from a string path', () => {
|
|
6
|
+
const object = { foo: { bar: { x: 1 } } }
|
|
7
|
+
expect(objectify('foo.bar', object)).toEqual({ x: 1 })
|
|
8
|
+
expect(objectify('some.bar', object)).toEqual(undefined)
|
|
9
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const { canMerge, prettyPrint } = require('./helpers')
|
|
2
|
+
const deepMerge = require('./deep_merge')
|
|
3
|
+
|
|
4
|
+
const deepAssign = (obj, path, value) => {
|
|
5
|
+
if (!value) throw new Error(`Value can't be ${value}`)
|
|
6
|
+
|
|
7
|
+
const keys = path.split('.')
|
|
8
|
+
const key = keys.pop()
|
|
9
|
+
|
|
10
|
+
const objRef = keys.reduce((acc, currentValue) => {
|
|
11
|
+
/* eslint no-param-reassign: 0 */
|
|
12
|
+
if (!acc[currentValue]) acc[currentValue] = {}
|
|
13
|
+
return acc[currentValue]
|
|
14
|
+
}, obj)
|
|
15
|
+
|
|
16
|
+
if (!objRef) throw new Error(`Prop not found: ${path} in ${prettyPrint(obj)}`)
|
|
17
|
+
|
|
18
|
+
objRef[key] = canMerge(value) ? deepMerge(objRef[key], value) : value
|
|
19
|
+
return obj
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
module.exports = deepAssign
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const {
|
|
2
|
+
isObject, isArray, isEqual, isEmpty
|
|
3
|
+
} = require('./helpers')
|
|
4
|
+
|
|
5
|
+
const deepMerge = (target, source) => {
|
|
6
|
+
if (isEmpty(target)) return source
|
|
7
|
+
if (isEmpty(source)) return target
|
|
8
|
+
if (isEqual(target, source)) return source
|
|
9
|
+
if (isArray(target) && isArray(source)) return [...new Set([...target, ...source])]
|
|
10
|
+
if (!(isObject(target) && isObject(source))) return source
|
|
11
|
+
|
|
12
|
+
return [...Object.keys(target), ...Object.keys(source)].reduce(
|
|
13
|
+
(result, key) =>
|
|
14
|
+
(Object.assign(
|
|
15
|
+
{},
|
|
16
|
+
result,
|
|
17
|
+
{ [key]: deepMerge(target[key], source[key]) }
|
|
18
|
+
)),
|
|
19
|
+
{}
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = deepMerge
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const isObject = value => (
|
|
2
|
+
typeof value === 'object' &&
|
|
3
|
+
value !== null &&
|
|
4
|
+
(value.length === undefined || value.length === null)
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
const isEmpty = value => (value === null || value === undefined)
|
|
8
|
+
|
|
9
|
+
const isString = key => key && typeof key === 'string'
|
|
10
|
+
|
|
11
|
+
const isStrPath = (key) => {
|
|
12
|
+
if (!isString(key)) throw new Error(`Key ${key} should be string`)
|
|
13
|
+
return isString(key) && key.includes('.')
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const isArray = value => Array.isArray(value)
|
|
17
|
+
|
|
18
|
+
const isEqual = (target, source) => JSON.stringify(target) === JSON.stringify(source)
|
|
19
|
+
|
|
20
|
+
const canMerge = value => isObject(value) || isArray(value)
|
|
21
|
+
|
|
22
|
+
const prettyPrint = obj => JSON.stringify(obj, null, 2)
|
|
23
|
+
|
|
24
|
+
module.exports = {
|
|
25
|
+
isObject,
|
|
26
|
+
isArray,
|
|
27
|
+
isEqual,
|
|
28
|
+
isEmpty,
|
|
29
|
+
isStrPath,
|
|
30
|
+
canMerge,
|
|
31
|
+
prettyPrint
|
|
32
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class CommandTest < Minitest::Test
|
|
4
|
+
def test_compile_command_returns_success_status_when_stale
|
|
5
|
+
Webpacker.compiler.stub :stale?, true do
|
|
6
|
+
Webpacker.compiler.stub :run_webpack, true do
|
|
7
|
+
assert_equal true, Webpacker.commands.compile
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_compile_command_returns_success_status_when_fresh
|
|
13
|
+
Webpacker.compiler.stub :stale?, false do
|
|
14
|
+
Webpacker.compiler.stub :run_webpack, true do
|
|
15
|
+
assert_equal true, Webpacker.commands.compile
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_compile_command_returns_failure_status_when_stale
|
|
21
|
+
Webpacker.compiler.stub :stale?, true do
|
|
22
|
+
Webpacker.compiler.stub :run_webpack, false do
|
|
23
|
+
assert_equal false, Webpacker.commands.compile
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class CompilerTest < Minitest::Test
|
|
4
|
+
def setup
|
|
5
|
+
Webpacker.compiler.send(:compilation_digest_path).tap do |path|
|
|
6
|
+
path.delete if path.exist?
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_custom_environment_variables
|
|
11
|
+
assert Webpacker.compiler.send(:webpack_env)["FOO"] == nil
|
|
12
|
+
Webpacker.compiler.env["FOO"] = "BAR"
|
|
13
|
+
assert Webpacker.compiler.send(:webpack_env)["FOO"] == "BAR"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_default_watched_paths
|
|
17
|
+
assert_equal Webpacker.compiler.send(:default_watched_paths), [
|
|
18
|
+
"app/assets/**/*",
|
|
19
|
+
"/etc/yarn/**/*",
|
|
20
|
+
"test/test_app/app/javascript/**/*",
|
|
21
|
+
"yarn.lock",
|
|
22
|
+
"package.json",
|
|
23
|
+
"config/webpack/**/*"
|
|
24
|
+
]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_freshness
|
|
28
|
+
assert Webpacker.compiler.stale?
|
|
29
|
+
assert !Webpacker.compiler.fresh?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_compilation_digest_path
|
|
33
|
+
assert Webpacker.compiler.send(:compilation_digest_path).to_s.ends_with?(Webpacker.env)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ConfigurationTest < Webpacker::Test
|
|
4
|
+
def test_source_path
|
|
5
|
+
source_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/app/javascript").to_s
|
|
6
|
+
assert_equal source_path, Webpacker.config.source_path.to_s
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_source_entry_path
|
|
10
|
+
source_entry_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/app/javascript", "packs").to_s
|
|
11
|
+
assert_equal Webpacker.config.source_entry_path.to_s, source_entry_path
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_public_output_path
|
|
15
|
+
public_output_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/public/packs").to_s
|
|
16
|
+
assert_equal Webpacker.config.public_output_path.to_s, public_output_path
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_public_manifest_path
|
|
20
|
+
public_manifest_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/public/packs", "manifest.json").to_s
|
|
21
|
+
assert_equal Webpacker.config.public_manifest_path.to_s, public_manifest_path
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_cache_path
|
|
25
|
+
cache_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/tmp/cache/webpacker").to_s
|
|
26
|
+
assert_equal Webpacker.config.cache_path.to_s, cache_path
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_resolved_paths
|
|
30
|
+
assert_equal Webpacker.config.resolved_paths, ["app/assets", "/etc/yarn"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_resolved_paths_globbed
|
|
34
|
+
assert_equal Webpacker.config.resolved_paths_globbed, ["app/assets/**/*", "/etc/yarn/**/*"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_extensions
|
|
38
|
+
webpacker_yml = YAML.load_file("lib/install/config/webpacker.yml")
|
|
39
|
+
assert_equal Webpacker.config.extensions, webpacker_yml["default"]["extensions"]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_cache_manifest?
|
|
43
|
+
with_node_env("development") do
|
|
44
|
+
refute reloaded_config.cache_manifest?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
with_node_env("test") do
|
|
48
|
+
refute reloaded_config.cache_manifest?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
with_node_env("production") do
|
|
52
|
+
assert reloaded_config.cache_manifest?
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_compile?
|
|
57
|
+
with_node_env("development") do
|
|
58
|
+
assert reloaded_config.compile?
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
with_node_env("test") do
|
|
62
|
+
assert reloaded_config.compile?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
with_node_env("production") do
|
|
66
|
+
refute reloaded_config.compile?
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class DevServerTest < Webpacker::Test
|
|
4
|
+
def test_host
|
|
5
|
+
with_node_env("development") do
|
|
6
|
+
reloaded_config
|
|
7
|
+
assert_equal Webpacker.dev_server.host, "localhost"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_port
|
|
12
|
+
with_node_env("development") do
|
|
13
|
+
reloaded_config
|
|
14
|
+
assert_equal Webpacker.dev_server.port, 3035
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_https?
|
|
19
|
+
with_node_env("development") do
|
|
20
|
+
reloaded_config
|
|
21
|
+
assert_equal Webpacker.dev_server.https?, false
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
data/test/helper_test.rb
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class HelperTest < ActionView::TestCase
|
|
4
|
+
tests Webpacker::Helper
|
|
5
|
+
|
|
6
|
+
attr_reader :request
|
|
7
|
+
|
|
8
|
+
def setup
|
|
9
|
+
@request = Class.new do
|
|
10
|
+
def send_early_hints(links) end
|
|
11
|
+
def base_url
|
|
12
|
+
"https://example.com"
|
|
13
|
+
end
|
|
14
|
+
end.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_asset_pack_path
|
|
18
|
+
assert_equal "/packs/bootstrap-300631c4f0e0f9c865bc.js", asset_pack_path("bootstrap.js")
|
|
19
|
+
assert_equal "/packs/bootstrap-c38deda30895059837cf.css", asset_pack_path("bootstrap.css")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_asset_pack_url
|
|
23
|
+
assert_equal "https://example.com/packs/bootstrap-300631c4f0e0f9c865bc.js", asset_pack_url("bootstrap.js")
|
|
24
|
+
assert_equal "https://example.com/packs/bootstrap-c38deda30895059837cf.css", asset_pack_url("bootstrap.css")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_javascript_pack_tag
|
|
28
|
+
assert_equal \
|
|
29
|
+
%(<script src="/packs/bootstrap-300631c4f0e0f9c865bc.js"></script>),
|
|
30
|
+
javascript_pack_tag("bootstrap.js")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_javascript_pack_tag_splat
|
|
34
|
+
assert_equal \
|
|
35
|
+
%(<script src="/packs/bootstrap-300631c4f0e0f9c865bc.js" defer="defer"></script>\n) +
|
|
36
|
+
%(<script src="/packs/application-k344a6d59eef8632c9d1.js" defer="defer"></script>),
|
|
37
|
+
javascript_pack_tag("bootstrap.js", "application.js", defer: true)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_stylesheet_pack_tag
|
|
41
|
+
assert_equal \
|
|
42
|
+
%(<link rel="stylesheet" media="screen" href="/packs/bootstrap-c38deda30895059837cf.css" />),
|
|
43
|
+
stylesheet_pack_tag("bootstrap.css")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_stylesheet_pack_tag_splat
|
|
47
|
+
assert_equal \
|
|
48
|
+
%(<link rel="stylesheet" media="all" href="/packs/bootstrap-c38deda30895059837cf.css" />\n) +
|
|
49
|
+
%(<link rel="stylesheet" media="all" href="/packs/application-dd6b1cd38bfa093df600.css" />),
|
|
50
|
+
stylesheet_pack_tag("bootstrap.css", "application.css", media: "all")
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ManifestTest < Minitest::Test
|
|
4
|
+
def test_lookup_exception!
|
|
5
|
+
manifest_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/public/packs", "manifest.json").to_s
|
|
6
|
+
asset_file = "calendar.js"
|
|
7
|
+
|
|
8
|
+
Webpacker.config.stub :compile?, false do
|
|
9
|
+
error = assert_raises Webpacker::Manifest::MissingEntryError do
|
|
10
|
+
Webpacker.manifest.lookup!(asset_file)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
assert_match "Webpacker can't find #{asset_file} in #{manifest_path}", error.message
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_lookup_success!
|
|
18
|
+
assert_equal Webpacker.manifest.lookup!("bootstrap.js"), "/packs/bootstrap-300631c4f0e0f9c865bc.js"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_lookup_nil
|
|
22
|
+
assert_nil Webpacker.manifest.lookup("foo.js")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_lookup_success
|
|
26
|
+
assert_equal Webpacker.manifest.lookup("bootstrap.js"), "/packs/bootstrap-300631c4f0e0f9c865bc.js"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class RakeTasksTest < Minitest::Test
|
|
4
|
+
def test_rake_tasks
|
|
5
|
+
output = Dir.chdir(test_app_path) { `rake -T` }
|
|
6
|
+
assert_includes output, "webpacker"
|
|
7
|
+
assert_includes output, "webpacker:check_binstubs"
|
|
8
|
+
assert_includes output, "webpacker:check_node"
|
|
9
|
+
assert_includes output, "webpacker:check_yarn"
|
|
10
|
+
assert_includes output, "webpacker:clobber"
|
|
11
|
+
assert_includes output, "webpacker:compile"
|
|
12
|
+
assert_includes output, "webpacker:install"
|
|
13
|
+
assert_includes output, "webpacker:install:angular"
|
|
14
|
+
assert_includes output, "webpacker:install:elm"
|
|
15
|
+
assert_includes output, "webpacker:install:react"
|
|
16
|
+
assert_includes output, "webpacker:install:vue"
|
|
17
|
+
assert_includes output, "webpacker:verify_install"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_rake_task_webpacker_check_binstubs
|
|
21
|
+
output = Dir.chdir(test_app_path) { `rake webpacker:check_binstubs 2>&1` }
|
|
22
|
+
refute_includes output, "webpack binstubs not found."
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
def test_app_path
|
|
27
|
+
File.expand_path("test_app", __dir__)
|
|
28
|
+
end
|
|
29
|
+
end
|