webpacker 5.2.1 → 6.0.0.pre.1
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 +4 -4
- data/.eslintrc.js +1 -1
- data/.gitignore +2 -0
- data/.node-version +1 -1
- data/.rubocop.yml +11 -16
- data/CHANGELOG.md +15 -4
- data/CONTRIBUTING.md +1 -1
- data/Gemfile.lock +17 -11
- data/README.md +8 -4
- data/docs/assets.md +21 -5
- data/docs/css.md +24 -29
- data/docs/deployment.md +18 -0
- data/docs/docker.md +2 -2
- data/docs/engines.md +1 -1
- data/docs/env.md +5 -0
- data/docs/es6.md +1 -1
- data/docs/integrations.md +1 -1
- data/docs/props.md +2 -38
- data/docs/react.md +183 -0
- data/docs/testing.md +11 -0
- data/docs/typescript.md +2 -2
- data/docs/webpack-dev-server.md +17 -15
- data/docs/webpack.md +58 -107
- data/lib/install/config/webpack/base.js +3 -0
- data/lib/install/config/webpack/development.js +2 -2
- data/lib/install/config/webpack/production.js +2 -2
- data/lib/install/config/webpack/test.js +2 -2
- data/lib/install/config/webpacker.yml +8 -37
- data/lib/install/examples/{vue → vue3}/app.vue +10 -5
- data/lib/install/examples/vue3/hello_vue.js +15 -0
- data/lib/install/javascript/packs/application.css +9 -0
- data/lib/install/template.rb +33 -19
- data/lib/tasks/webpacker.rake +2 -11
- data/lib/tasks/webpacker/binstubs.rake +6 -4
- data/lib/tasks/webpacker/check_binstubs.rake +4 -4
- data/lib/tasks/webpacker/check_yarn.rake +1 -2
- data/lib/tasks/webpacker/compile.rake +4 -2
- data/lib/tasks/webpacker/info.rake +12 -10
- data/lib/tasks/webpacker/install.rake +6 -4
- data/lib/tasks/webpacker/verify_install.rake +2 -1
- data/lib/tasks/webpacker/yarn_install.rake +9 -1
- data/lib/webpacker/commands.rb +1 -1
- data/lib/webpacker/compiler.rb +7 -6
- data/lib/webpacker/configuration.rb +6 -30
- data/lib/webpacker/dev_server_runner.rb +21 -2
- data/lib/webpacker/helper.rb +22 -32
- data/lib/webpacker/manifest.rb +1 -1
- data/lib/webpacker/version.rb +1 -1
- data/lib/webpacker/webpack_runner.rb +5 -0
- data/package.json +23 -39
- data/package/__tests__/config.js +5 -37
- data/package/__tests__/development.js +9 -11
- data/package/__tests__/env.js +12 -4
- data/package/__tests__/production.js +6 -6
- data/package/__tests__/staging.js +7 -6
- data/package/__tests__/test.js +4 -5
- data/package/babel/preset-react.js +62 -0
- data/package/babel/preset.js +44 -0
- data/package/config.js +3 -11
- data/package/env.js +8 -2
- data/package/environments/__tests__/base.js +15 -47
- data/package/environments/base.js +66 -126
- data/package/environments/development.js +45 -44
- data/package/environments/production.js +69 -65
- data/package/environments/test.js +2 -2
- data/package/index.js +6 -6
- data/package/rules/babel.js +9 -7
- data/package/rules/coffee.js +6 -0
- data/package/rules/erb.js +13 -0
- data/package/rules/file.js +19 -19
- data/package/rules/index.js +24 -18
- data/package/rules/less.js +18 -0
- data/package/rules/sass.js +5 -6
- data/package/rules/svg.js +23 -0
- data/package/utils/get_style_rule.js +22 -28
- data/package/utils/helpers.js +3 -35
- data/test/compiler_test.rb +0 -12
- data/test/configuration_test.rb +1 -32
- data/test/dev_server_runner_test.rb +24 -5
- data/test/engine_rake_tasks_test.rb +39 -0
- data/test/helper_test.rb +15 -9
- data/test/mounted_app/Rakefile +4 -0
- data/test/mounted_app/test/dummy/Rakefile +3 -0
- data/test/mounted_app/test/dummy/bin/rails +3 -0
- data/test/mounted_app/test/dummy/bin/rake +3 -0
- data/test/mounted_app/test/dummy/config.ru +5 -0
- data/test/mounted_app/test/dummy/config/application.rb +10 -0
- data/test/mounted_app/test/dummy/config/environment.rb +3 -0
- data/test/mounted_app/test/dummy/config/webpacker.yml +75 -0
- data/test/mounted_app/test/dummy/package.json +7 -0
- data/test/rake_tasks_test.rb +1 -10
- data/test/test_app/config/webpacker.yml +1 -25
- data/test/test_app/config/webpacker_public_root.yml +0 -1
- data/test/test_app/public/packs/manifest.json +17 -13
- data/test/test_app/some.config.js +0 -0
- data/test/webpack_runner_test.rb +9 -3
- data/webpacker.gemspec +1 -1
- data/yarn.lock +1858 -4915
- metadata +47 -70
- data/.travis.yml +0 -43
- data/lib/install/angular.rb +0 -23
- data/lib/install/coffee.rb +0 -25
- data/lib/install/config/.browserslistrc +0 -1
- data/lib/install/config/babel.config.js +0 -70
- data/lib/install/config/postcss.config.js +0 -12
- data/lib/install/config/webpack/environment.js +0 -3
- data/lib/install/elm.rb +0 -39
- data/lib/install/erb.rb +0 -25
- data/lib/install/examples/angular/hello_angular.js +0 -7
- data/lib/install/examples/angular/hello_angular/app/app.component.ts +0 -9
- data/lib/install/examples/angular/hello_angular/app/app.module.ts +0 -16
- data/lib/install/examples/angular/hello_angular/index.ts +0 -8
- data/lib/install/examples/angular/hello_angular/polyfills.ts +0 -73
- data/lib/install/examples/coffee/hello_coffee.coffee +0 -4
- data/lib/install/examples/elm/Main.elm +0 -55
- data/lib/install/examples/elm/hello_elm.js +0 -16
- data/lib/install/examples/erb/hello_erb.js.erb +0 -6
- data/lib/install/examples/react/babel.config.js +0 -87
- data/lib/install/examples/react/hello_react.jsx +0 -26
- data/lib/install/examples/react/tsconfig.json +0 -21
- data/lib/install/examples/stimulus/application.js +0 -1
- data/lib/install/examples/stimulus/controllers/hello_controller.js +0 -18
- data/lib/install/examples/stimulus/controllers/index.js +0 -9
- data/lib/install/examples/svelte/app.svelte +0 -11
- data/lib/install/examples/svelte/hello_svelte.js +0 -20
- data/lib/install/examples/typescript/hello_typescript.ts +0 -4
- data/lib/install/examples/typescript/tsconfig.json +0 -24
- data/lib/install/examples/vue/hello_vue.js +0 -72
- data/lib/install/loaders/coffee.js +0 -6
- data/lib/install/loaders/elm.js +0 -25
- data/lib/install/loaders/erb.js +0 -11
- data/lib/install/loaders/svelte.js +0 -9
- data/lib/install/loaders/vue.js +0 -6
- data/lib/install/react.rb +0 -18
- data/lib/install/stimulus.rb +0 -12
- data/lib/install/svelte.rb +0 -29
- data/lib/install/typescript.rb +0 -39
- data/lib/install/vue.rb +0 -49
- data/lib/tasks/installers.rake +0 -42
- data/package/config_types/__tests__/config_list.js +0 -118
- data/package/config_types/__tests__/config_object.js +0 -43
- data/package/config_types/config_list.js +0 -75
- data/package/config_types/config_object.js +0 -55
- data/package/config_types/index.js +0 -7
- data/package/rules/module.css.js +0 -3
- data/package/rules/module.sass.js +0 -8
- data/package/rules/node_modules.js +0 -22
- data/package/utils/__tests__/deep_assign.js +0 -32
- data/package/utils/__tests__/deep_merge.js +0 -10
- data/package/utils/__tests__/get_style_rule.js +0 -65
- data/package/utils/__tests__/objectify.js +0 -9
- data/package/utils/deep_assign.js +0 -22
- data/package/utils/deep_merge.js +0 -22
- data/package/utils/objectify.js +0 -3
@@ -0,0 +1,23 @@
|
|
1
|
+
/* eslint global-require: 0 */
|
2
|
+
/* eslint import/no-dynamic-require: 0 */
|
3
|
+
|
4
|
+
module.exports = {
|
5
|
+
test: /\.svg$/i,
|
6
|
+
type: 'asset/inline',
|
7
|
+
generator: {
|
8
|
+
dataUrl: (content) => {
|
9
|
+
let optimisedContent = content
|
10
|
+
|
11
|
+
try {
|
12
|
+
if (require.resolve('mini-svg-data-uri')) {
|
13
|
+
const svgToMiniDataURI = require('mini-svg-data-uri')
|
14
|
+
optimisedContent = svgToMiniDataURI(content.toString())
|
15
|
+
}
|
16
|
+
} catch (e) {
|
17
|
+
/* Work out what to print here */
|
18
|
+
}
|
19
|
+
|
20
|
+
return optimisedContent
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
@@ -1,44 +1,38 @@
|
|
1
1
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
|
2
|
-
const { resolve } = require('path')
|
3
|
-
const config = require('../config')
|
4
2
|
|
5
|
-
const
|
6
|
-
|
3
|
+
const tryPostcss = () => {
|
4
|
+
let postcssLoader = false
|
5
|
+
try {
|
6
|
+
if (require.resolve('postcss-loader')) {
|
7
|
+
postcssLoader = {
|
8
|
+
loader: require.resolve('postcss-loader'),
|
9
|
+
options: { sourceMap: true }
|
10
|
+
}
|
11
|
+
}
|
12
|
+
} catch (e) {
|
13
|
+
/* Work out what to print here */
|
14
|
+
}
|
15
|
+
|
16
|
+
return postcssLoader
|
7
17
|
}
|
8
18
|
|
9
|
-
const getStyleRule = (test,
|
19
|
+
const getStyleRule = (test, preprocessors = []) => {
|
10
20
|
const use = [
|
21
|
+
{ loader: MiniCssExtractPlugin.loader },
|
11
22
|
{
|
12
|
-
loader: 'css-loader',
|
23
|
+
loader: require.resolve('css-loader'),
|
13
24
|
options: {
|
14
25
|
sourceMap: true,
|
15
|
-
importLoaders: 2
|
16
|
-
modules: modules ? {
|
17
|
-
localIdentName: '[name]__[local]___[hash:base64:5]'
|
18
|
-
} : false
|
19
|
-
}
|
20
|
-
},
|
21
|
-
{
|
22
|
-
loader: 'postcss-loader',
|
23
|
-
options: {
|
24
|
-
config: { path: resolve() },
|
25
|
-
sourceMap: true
|
26
|
+
importLoaders: 2
|
26
27
|
}
|
27
28
|
},
|
29
|
+
tryPostcss(),
|
28
30
|
...preprocessors
|
29
|
-
]
|
30
|
-
|
31
|
-
const options = modules ? { include: /\.module\.[a-z]+$/ } : { exclude: /\.module\.[a-z]+$/ }
|
32
|
-
|
33
|
-
if (config.extract_css) {
|
34
|
-
use.unshift(MiniCssExtractPlugin.loader)
|
35
|
-
} else {
|
36
|
-
use.unshift(styleLoader)
|
37
|
-
}
|
31
|
+
].filter(Boolean)
|
38
32
|
|
39
|
-
// sideEffects - See https://github.com/webpack/webpack/issues/6571
|
40
33
|
return {
|
41
|
-
test,
|
34
|
+
test,
|
35
|
+
use
|
42
36
|
}
|
43
37
|
}
|
44
38
|
|
data/package/utils/helpers.js
CHANGED
@@ -1,30 +1,5 @@
|
|
1
|
-
const { stringify } = require('flatted')
|
2
|
-
|
3
|
-
const isObject = (value) => typeof value === 'object'
|
4
|
-
&& value !== null
|
5
|
-
&& (value.length === undefined || value.length === null)
|
6
|
-
|
7
|
-
const isNotObject = (value) => !isObject(value)
|
8
|
-
|
9
|
-
const isBoolean = (str) => /^true/.test(str) || /^false/.test(str)
|
10
|
-
|
11
|
-
const isEmpty = (value) => value === null || value === undefined
|
12
|
-
|
13
|
-
const isString = (key) => key && typeof key === 'string'
|
14
|
-
|
15
|
-
const isStrPath = (key) => {
|
16
|
-
if (!isString(key)) throw new Error(`Key ${key} should be string`)
|
17
|
-
return isString(key) && key.includes('.')
|
18
|
-
}
|
19
|
-
|
20
1
|
const isArray = (value) => Array.isArray(value)
|
21
|
-
|
22
|
-
const isEqual = (target, source) => stringify(target) === stringify(source)
|
23
|
-
|
24
|
-
const canMerge = (value) => isObject(value) || isArray(value)
|
25
|
-
|
26
|
-
const prettyPrint = (obj) => JSON.stringify(obj, null, 2)
|
27
|
-
|
2
|
+
const isBoolean = (str) => /^true/.test(str) || /^false/.test(str)
|
28
3
|
const chdirTestApp = () => {
|
29
4
|
try {
|
30
5
|
return process.chdir('test/test_app')
|
@@ -44,15 +19,8 @@ const ensureTrailingSlash = (path) => (path.endsWith('/') ? path : `${path}/`)
|
|
44
19
|
module.exports = {
|
45
20
|
chdirTestApp,
|
46
21
|
chdirCwd,
|
47
|
-
ensureTrailingSlash,
|
48
|
-
isObject,
|
49
|
-
isNotObject,
|
50
|
-
isBoolean,
|
51
22
|
isArray,
|
52
|
-
|
53
|
-
|
54
|
-
isStrPath,
|
55
|
-
canMerge,
|
56
|
-
prettyPrint,
|
23
|
+
isBoolean,
|
24
|
+
ensureTrailingSlash,
|
57
25
|
resetEnv
|
58
26
|
}
|
data/test/compiler_test.rb
CHANGED
@@ -23,18 +23,6 @@ class CompilerTest < Minitest::Test
|
|
23
23
|
Webpacker.compiler.env = {}
|
24
24
|
end
|
25
25
|
|
26
|
-
def test_default_watched_paths
|
27
|
-
assert_equal Webpacker.compiler.send(:default_watched_paths), [
|
28
|
-
"app/assets/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
29
|
-
"/etc/yarn/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
30
|
-
"app/elm/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
31
|
-
"app/javascript/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
32
|
-
"yarn.lock",
|
33
|
-
"package.json",
|
34
|
-
"config/webpack/**/*"
|
35
|
-
]
|
36
|
-
end
|
37
|
-
|
38
26
|
def test_freshness
|
39
27
|
assert Webpacker.compiler.stale?
|
40
28
|
assert !Webpacker.compiler.fresh?
|
data/test/configuration_test.rb
CHANGED
@@ -14,11 +14,6 @@ class ConfigurationTest < Webpacker::Test
|
|
14
14
|
assert_equal source_path, @config.source_path.to_s
|
15
15
|
end
|
16
16
|
|
17
|
-
def test_source_path_globbed
|
18
|
-
assert_equal @config.source_path_globbed,
|
19
|
-
"app/javascript/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}"
|
20
|
-
end
|
21
|
-
|
22
17
|
def test_source_entry_path
|
23
18
|
source_entry_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/app/javascript", "packs").to_s
|
24
19
|
assert_equal @config.source_entry_path.to_s, source_entry_path
|
@@ -54,21 +49,7 @@ class ConfigurationTest < Webpacker::Test
|
|
54
49
|
end
|
55
50
|
|
56
51
|
def test_additional_paths
|
57
|
-
assert_equal @config.additional_paths, ["app/assets", "/etc/yarn", "app/elm"]
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_additional_paths_globbed
|
61
|
-
assert_equal @config.additional_paths_globbed, [
|
62
|
-
"app/assets/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
63
|
-
"/etc/yarn/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}",
|
64
|
-
"app/elm/**/*{.mjs,.js,.sass,.scss,.css,.module.sass,.module.scss,.module.css,.png,.svg,.gif,.jpeg,.jpg,.elm}"
|
65
|
-
]
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_extensions
|
69
|
-
config_path = File.expand_path File.join(File.dirname(__FILE__), "test_app/config/webpacker.yml").to_s
|
70
|
-
webpacker_yml = YAML.load_file(config_path)
|
71
|
-
assert_equal @config.extensions, webpacker_yml["default"]["extensions"]
|
52
|
+
assert_equal @config.additional_paths, ["app/assets", "/etc/yarn", "some.config.js", "app/elm"]
|
72
53
|
end
|
73
54
|
|
74
55
|
def test_cache_manifest?
|
@@ -94,16 +75,4 @@ class ConfigurationTest < Webpacker::Test
|
|
94
75
|
assert Webpacker.config.compile?
|
95
76
|
end
|
96
77
|
end
|
97
|
-
|
98
|
-
def test_extract_css?
|
99
|
-
assert @config.extract_css?
|
100
|
-
|
101
|
-
with_rails_env("development") do
|
102
|
-
refute Webpacker.config.extract_css?
|
103
|
-
end
|
104
|
-
|
105
|
-
with_rails_env("test") do
|
106
|
-
refute Webpacker.config.extract_css?
|
107
|
-
end
|
108
|
-
end
|
109
78
|
end
|
@@ -13,34 +13,53 @@ class DevServerRunnerTest < Webpacker::Test
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_run_cmd_via_node_modules
|
16
|
-
cmd = ["#{test_app_path}/node_modules/.bin/webpack
|
16
|
+
cmd = ["#{test_app_path}/node_modules/.bin/webpack", "serve", "--config", "#{test_app_path}/config/webpack/development.js"]
|
17
17
|
|
18
18
|
verify_command(cmd, use_node_modules: true)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_run_cmd_via_yarn
|
22
|
-
cmd = ["yarn", "webpack
|
22
|
+
cmd = ["yarn", "webpack", "serve", "--config", "#{test_app_path}/config/webpack/development.js"]
|
23
23
|
|
24
24
|
verify_command(cmd, use_node_modules: false)
|
25
25
|
end
|
26
26
|
|
27
|
+
def test_run_cmd_argv
|
28
|
+
cmd = ["#{test_app_path}/node_modules/.bin/webpack", "serve", "--config", "#{test_app_path}/config/webpack/development.js", "--quiet"]
|
29
|
+
|
30
|
+
verify_command(cmd, argv: ["--quiet"])
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_run_cmd_argv_with_https
|
34
|
+
cmd = ["#{test_app_path}/node_modules/.bin/webpack", "serve", "--config", "#{test_app_path}/config/webpack/development.js", "--https"]
|
35
|
+
|
36
|
+
dev_server = Webpacker::DevServer.new({})
|
37
|
+
def dev_server.host; "localhost"; end
|
38
|
+
def dev_server.port; "3035"; end
|
39
|
+
def dev_server.pretty?; false; end
|
40
|
+
def dev_server.https?; true; end
|
41
|
+
Webpacker::DevServer.stub(:new, dev_server) do
|
42
|
+
verify_command(cmd, argv: ["--https"])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
27
46
|
private
|
28
47
|
def test_app_path
|
29
48
|
File.expand_path("test_app", __dir__)
|
30
49
|
end
|
31
50
|
|
32
|
-
def verify_command(cmd, use_node_modules: true)
|
51
|
+
def verify_command(cmd, use_node_modules: true, argv: [])
|
33
52
|
cwd = Dir.pwd
|
34
53
|
Dir.chdir(test_app_path)
|
35
54
|
|
36
55
|
klass = Webpacker::DevServerRunner
|
37
|
-
instance = klass.new(
|
56
|
+
instance = klass.new(argv)
|
38
57
|
mock = Minitest::Mock.new
|
39
58
|
mock.expect(:call, nil, [Webpacker::Compiler.env, *cmd])
|
40
59
|
|
41
60
|
klass.stub(:new, instance) do
|
42
61
|
instance.stub(:node_modules_bin_exist?, use_node_modules) do
|
43
|
-
Kernel.stub(:exec, mock) { klass.run(
|
62
|
+
Kernel.stub(:exec, mock) { klass.run(argv) }
|
44
63
|
end
|
45
64
|
end
|
46
65
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class EngineRakeTasksTest < Minitest::Test
|
4
|
+
def setup
|
5
|
+
remove_webpack_binstubs
|
6
|
+
end
|
7
|
+
|
8
|
+
def teardown
|
9
|
+
remove_webpack_binstubs
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_task_mounted
|
13
|
+
output = Dir.chdir(mounted_app_path) { `rake -T` }
|
14
|
+
assert_includes output, "app:webpacker"
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_binstubs
|
18
|
+
Dir.chdir(mounted_app_path) { `bundle exec rake app:webpacker:binstubs` }
|
19
|
+
webpack_binstub_paths.each { |path| assert File.exist?(path) }
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def mounted_app_path
|
24
|
+
File.expand_path("mounted_app", __dir__)
|
25
|
+
end
|
26
|
+
|
27
|
+
def webpack_binstub_paths
|
28
|
+
[
|
29
|
+
"#{mounted_app_path}/test/dummy/bin/webpack",
|
30
|
+
"#{mounted_app_path}/test/dummy/bin/webpack-dev-server",
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def remove_webpack_binstubs
|
35
|
+
webpack_binstub_paths.each do |path|
|
36
|
+
File.delete(path) if File.exist?(path)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/test/helper_test.rb
CHANGED
@@ -17,21 +17,27 @@ class HelperTest < ActionView::TestCase
|
|
17
17
|
def test_asset_pack_path
|
18
18
|
assert_equal "/packs/bootstrap-300631c4f0e0f9c865bc.js", asset_pack_path("bootstrap.js")
|
19
19
|
assert_equal "/packs/bootstrap-c38deda30895059837cf.css", asset_pack_path("bootstrap.css")
|
20
|
-
|
21
|
-
Webpacker.config.stub :extract_css?, false do
|
22
|
-
assert_nil asset_pack_path("bootstrap.css")
|
23
|
-
assert_equal "/packs/application-k344a6d59eef8632c9d1.png", asset_pack_path("application.png")
|
24
|
-
end
|
25
20
|
end
|
26
21
|
|
27
22
|
def test_asset_pack_url
|
28
23
|
assert_equal "https://example.com/packs/bootstrap-300631c4f0e0f9c865bc.js", asset_pack_url("bootstrap.js")
|
29
24
|
assert_equal "https://example.com/packs/bootstrap-c38deda30895059837cf.css", asset_pack_url("bootstrap.css")
|
25
|
+
end
|
30
26
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
def test_image_pack_path
|
28
|
+
assert_equal "/packs/application-k344a6d59eef8632c9d1.png", image_pack_path("application.png")
|
29
|
+
assert_equal "/packs/media/images/image-c38deda30895059837cf.jpg", image_pack_path("image.jpg")
|
30
|
+
assert_equal "/packs/media/images/image-c38deda30895059837cf.jpg", image_pack_path("media/images/image.jpg")
|
31
|
+
assert_equal "/packs/media/images/nested/image-c38deda30895059837cf.jpg", image_pack_path("nested/image.jpg")
|
32
|
+
assert_equal "/packs/media/images/nested/image-c38deda30895059837cf.jpg", image_pack_path("media/images/nested/image.jpg")
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_image_pack_url
|
36
|
+
assert_equal "https://example.com/packs/application-k344a6d59eef8632c9d1.png", image_pack_url("application.png")
|
37
|
+
assert_equal "https://example.com/packs/media/images/image-c38deda30895059837cf.jpg", image_pack_url("image.jpg")
|
38
|
+
assert_equal "https://example.com/packs/media/images/image-c38deda30895059837cf.jpg", image_pack_url("media/images/image.jpg")
|
39
|
+
assert_equal "https://example.com/packs/media/images/nested/image-c38deda30895059837cf.jpg", image_pack_url("nested/image.jpg")
|
40
|
+
assert_equal "https://example.com/packs/media/images/nested/image-c38deda30895059837cf.jpg", image_pack_url("media/images/nested/image.jpg")
|
35
41
|
end
|
36
42
|
|
37
43
|
def test_image_pack_tag
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
default: &default
|
4
|
+
source_path: app/javascript
|
5
|
+
source_entry_path: packs
|
6
|
+
public_output_path: packs
|
7
|
+
cache_path: tmp/cache/webpacker
|
8
|
+
|
9
|
+
# Additional paths webpack should lookup modules
|
10
|
+
# ['app/assets', 'engine/foo/app/assets']
|
11
|
+
additional_paths:
|
12
|
+
- app/assets
|
13
|
+
- /etc/yarn
|
14
|
+
|
15
|
+
# Reload manifest.json on all requests so we reload latest compiled packs
|
16
|
+
cache_manifest: false
|
17
|
+
|
18
|
+
extensions:
|
19
|
+
- .js
|
20
|
+
- .sass
|
21
|
+
- .scss
|
22
|
+
- .css
|
23
|
+
- .module.sass
|
24
|
+
- .module.scss
|
25
|
+
- .module.css
|
26
|
+
- .png
|
27
|
+
- .svg
|
28
|
+
- .gif
|
29
|
+
- .jpeg
|
30
|
+
- .jpg
|
31
|
+
|
32
|
+
development:
|
33
|
+
<<: *default
|
34
|
+
compile: true
|
35
|
+
|
36
|
+
# Reference: https://webpack.js.org/configuration/dev-server/
|
37
|
+
dev_server:
|
38
|
+
https: false
|
39
|
+
host: localhost
|
40
|
+
port: 3035
|
41
|
+
public: localhost:3035
|
42
|
+
hmr: false
|
43
|
+
# Inline should be set to true if using HMR
|
44
|
+
inline: true
|
45
|
+
overlay: true
|
46
|
+
disable_host_check: true
|
47
|
+
use_local_ip: false
|
48
|
+
|
49
|
+
test:
|
50
|
+
<<: *default
|
51
|
+
compile: true
|
52
|
+
|
53
|
+
# Compile test packs to a separate directory
|
54
|
+
public_output_path: packs-test
|
55
|
+
|
56
|
+
production:
|
57
|
+
<<: *default
|
58
|
+
|
59
|
+
# Production depends on precompilation of packs prior to booting for performance.
|
60
|
+
compile: false
|
61
|
+
|
62
|
+
# Cache manifest.json for performance
|
63
|
+
cache_manifest: true
|
64
|
+
|
65
|
+
staging:
|
66
|
+
<<: *default
|
67
|
+
|
68
|
+
# Production depends on precompilation of packs prior to booting for performance.
|
69
|
+
compile: false
|
70
|
+
|
71
|
+
# Cache manifest.json for performance
|
72
|
+
cache_manifest: true
|
73
|
+
|
74
|
+
# Compile staging packs to a separate directory
|
75
|
+
public_output_path: packs-staging
|