webpacker 2.0 → 3.0.0
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/.gitignore +2 -0
- data/.rubocop.yml +21 -21
- data/CHANGELOG.md +107 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +15 -8
- data/README.md +137 -937
- data/docs/assets.md +106 -0
- data/docs/css.md +82 -0
- data/docs/deployment.md +39 -0
- data/docs/env.md +62 -0
- data/docs/es6.md +53 -0
- data/docs/folder-structure.md +66 -0
- data/docs/misc.md +23 -0
- data/docs/props.md +105 -0
- data/docs/testing.md +45 -0
- data/docs/troubleshooting.md +65 -0
- data/docs/typescript.md +115 -0
- data/docs/webpack-dev-server.md +32 -0
- data/docs/webpack.md +108 -0
- data/docs/yarn.md +12 -0
- data/lib/install/angular.rb +4 -7
- data/lib/install/bin/webpack-dev-server.tt +35 -11
- data/lib/install/bin/webpack.tt +3 -4
- data/lib/install/config/.babelrc +1 -0
- data/lib/install/config/.postcssrc.yml +1 -2
- data/lib/install/config/webpack/development.js +2 -31
- data/lib/install/config/webpack/environment.js +3 -0
- data/lib/install/config/webpack/production.js +2 -34
- data/lib/install/config/webpack/test.js +2 -5
- data/lib/install/config/webpacker.yml +20 -2
- data/lib/install/elm.rb +6 -11
- data/lib/install/examples/vue/hello_vue.js +31 -2
- data/lib/install/react.rb +2 -5
- data/lib/install/template.rb +3 -8
- data/lib/install/vue.rb +4 -7
- data/lib/tasks/webpacker.rake +1 -1
- data/lib/tasks/webpacker/{check_webpack_binstubs.rake → check_binstubs.rake} +3 -2
- data/lib/tasks/webpacker/check_node.rake +8 -6
- data/lib/tasks/webpacker/check_yarn.rake +2 -2
- data/lib/tasks/webpacker/clobber.rake +2 -3
- data/lib/tasks/webpacker/compile.rake +16 -18
- data/lib/tasks/webpacker/verify_install.rake +5 -5
- data/lib/tasks/webpacker/yarn_install.rake +1 -1
- data/lib/webpacker.rb +15 -11
- data/lib/webpacker/commands.rb +22 -0
- data/lib/webpacker/compiler.rb +66 -10
- data/lib/webpacker/configuration.rb +54 -38
- data/lib/webpacker/dev_server.rb +47 -0
- data/lib/webpacker/dev_server_proxy.rb +24 -0
- data/lib/webpacker/helper.rb +23 -5
- data/lib/webpacker/instance.rb +44 -0
- data/lib/webpacker/manifest.rb +58 -34
- data/lib/webpacker/railtie.rb +22 -3
- data/lib/webpacker/version.rb +2 -1
- data/package.json +37 -7
- data/package/asset_host.js +21 -0
- data/package/config.js +8 -0
- data/package/environment.js +95 -0
- data/package/environments/development.js +47 -0
- data/package/environments/production.js +34 -0
- data/package/environments/test.js +3 -0
- data/package/index.js +16 -0
- data/package/loaders/babel.js +11 -0
- data/{lib/install/config/loaders/core → package/loaders}/coffee.js +0 -0
- data/{lib/install/config/loaders/installers → package/loaders}/elm.js +4 -5
- data/{lib/install/config/loaders/core → package/loaders}/erb.js +0 -0
- data/package/loaders/file.js +15 -0
- data/package/loaders/style.js +31 -0
- data/{lib/install/config/loaders/installers/angular.js → package/loaders/typescript.js} +1 -1
- data/package/loaders/vue.js +12 -0
- data/test/compiler_test.rb +20 -0
- data/test/configuration_test.rb +43 -19
- data/test/dev_server_test.rb +24 -0
- data/test/helper_test.rb +21 -5
- data/test/manifest_test.rb +25 -19
- data/test/test_app/public/packs/manifest.json +3 -1
- data/test/webpacker_test_helper.rb +40 -0
- data/webpacker.gemspec +1 -1
- data/yarn.lock +4701 -578
- metadata +52 -29
- data/lib/install/config/loaders/core/assets.js +0 -12
- data/lib/install/config/loaders/core/babel.js +0 -5
- data/lib/install/config/loaders/core/sass.js +0 -15
- data/lib/install/config/loaders/installers/react.js +0 -5
- data/lib/install/config/loaders/installers/vue.js +0 -13
- data/lib/install/config/webpack/configuration.js +0 -35
- data/lib/install/config/webpack/shared.js +0 -58
- data/lib/webpacker/env.rb +0 -23
- data/lib/webpacker/file_loader.rb +0 -24
- data/test/env_test.rb +0 -14
- data/test/webpacker_test.rb +0 -15
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webpacker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -26,33 +26,33 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '4.2'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: railties
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '4.2'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '4.2'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: rack-proxy
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: 0.6.1
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 0.6.1
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: bundler
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,24 +85,28 @@ files:
|
|
85
85
|
- MIT-LICENSE
|
86
86
|
- README.md
|
87
87
|
- Rakefile
|
88
|
+
- docs/assets.md
|
89
|
+
- docs/css.md
|
90
|
+
- docs/deployment.md
|
91
|
+
- docs/env.md
|
92
|
+
- docs/es6.md
|
93
|
+
- docs/folder-structure.md
|
94
|
+
- docs/misc.md
|
95
|
+
- docs/props.md
|
96
|
+
- docs/testing.md
|
97
|
+
- docs/troubleshooting.md
|
98
|
+
- docs/typescript.md
|
99
|
+
- docs/webpack-dev-server.md
|
100
|
+
- docs/webpack.md
|
101
|
+
- docs/yarn.md
|
88
102
|
- lib/install/angular.rb
|
89
103
|
- lib/install/bin/webpack-dev-server.tt
|
90
104
|
- lib/install/bin/webpack.tt
|
91
105
|
- lib/install/config/.babelrc
|
92
106
|
- lib/install/config/.postcssrc.yml
|
93
|
-
- lib/install/config/loaders/core/assets.js
|
94
|
-
- lib/install/config/loaders/core/babel.js
|
95
|
-
- lib/install/config/loaders/core/coffee.js
|
96
|
-
- lib/install/config/loaders/core/erb.js
|
97
|
-
- lib/install/config/loaders/core/sass.js
|
98
|
-
- lib/install/config/loaders/installers/angular.js
|
99
|
-
- lib/install/config/loaders/installers/elm.js
|
100
|
-
- lib/install/config/loaders/installers/react.js
|
101
|
-
- lib/install/config/loaders/installers/vue.js
|
102
|
-
- lib/install/config/webpack/configuration.js
|
103
107
|
- lib/install/config/webpack/development.js
|
108
|
+
- lib/install/config/webpack/environment.js
|
104
109
|
- lib/install/config/webpack/production.js
|
105
|
-
- lib/install/config/webpack/shared.js
|
106
110
|
- lib/install/config/webpack/test.js
|
107
111
|
- lib/install/config/webpacker.yml
|
108
112
|
- lib/install/elm.rb
|
@@ -124,8 +128,8 @@ files:
|
|
124
128
|
- lib/install/vue.rb
|
125
129
|
- lib/tasks/installers.rake
|
126
130
|
- lib/tasks/webpacker.rake
|
131
|
+
- lib/tasks/webpacker/check_binstubs.rake
|
127
132
|
- lib/tasks/webpacker/check_node.rake
|
128
|
-
- lib/tasks/webpacker/check_webpack_binstubs.rake
|
129
133
|
- lib/tasks/webpacker/check_yarn.rake
|
130
134
|
- lib/tasks/webpacker/clobber.rake
|
131
135
|
- lib/tasks/webpacker/compile.rake
|
@@ -133,22 +137,40 @@ files:
|
|
133
137
|
- lib/tasks/webpacker/verify_install.rake
|
134
138
|
- lib/tasks/webpacker/yarn_install.rake
|
135
139
|
- lib/webpacker.rb
|
140
|
+
- lib/webpacker/commands.rb
|
136
141
|
- lib/webpacker/compiler.rb
|
137
142
|
- lib/webpacker/configuration.rb
|
138
|
-
- lib/webpacker/
|
139
|
-
- lib/webpacker/
|
143
|
+
- lib/webpacker/dev_server.rb
|
144
|
+
- lib/webpacker/dev_server_proxy.rb
|
140
145
|
- lib/webpacker/helper.rb
|
146
|
+
- lib/webpacker/instance.rb
|
141
147
|
- lib/webpacker/manifest.rb
|
142
148
|
- lib/webpacker/railtie.rb
|
143
149
|
- lib/webpacker/version.rb
|
144
150
|
- package.json
|
151
|
+
- package/asset_host.js
|
152
|
+
- package/config.js
|
153
|
+
- package/environment.js
|
154
|
+
- package/environments/development.js
|
155
|
+
- package/environments/production.js
|
156
|
+
- package/environments/test.js
|
157
|
+
- package/index.js
|
158
|
+
- package/loaders/babel.js
|
159
|
+
- package/loaders/coffee.js
|
160
|
+
- package/loaders/elm.js
|
161
|
+
- package/loaders/erb.js
|
162
|
+
- package/loaders/file.js
|
163
|
+
- package/loaders/style.js
|
164
|
+
- package/loaders/typescript.js
|
165
|
+
- package/loaders/vue.js
|
166
|
+
- test/compiler_test.rb
|
145
167
|
- test/configuration_test.rb
|
146
|
-
- test/
|
168
|
+
- test/dev_server_test.rb
|
147
169
|
- test/helper_test.rb
|
148
170
|
- test/manifest_test.rb
|
149
171
|
- test/test_app/config/secrets.yml
|
150
172
|
- test/test_app/public/packs/manifest.json
|
151
|
-
- test/
|
173
|
+
- test/webpacker_test_helper.rb
|
152
174
|
- webpacker.gemspec
|
153
175
|
- yarn.lock
|
154
176
|
homepage: https://github.com/rails/webpacker
|
@@ -171,15 +193,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
193
|
version: '0'
|
172
194
|
requirements: []
|
173
195
|
rubyforge_project:
|
174
|
-
rubygems_version: 2.6.
|
196
|
+
rubygems_version: 2.6.13
|
175
197
|
signing_key:
|
176
198
|
specification_version: 4
|
177
199
|
summary: Use Webpack to manage app-like JavaScript modules in Rails
|
178
200
|
test_files:
|
201
|
+
- test/compiler_test.rb
|
179
202
|
- test/configuration_test.rb
|
180
|
-
- test/
|
203
|
+
- test/dev_server_test.rb
|
181
204
|
- test/helper_test.rb
|
182
205
|
- test/manifest_test.rb
|
183
206
|
- test/test_app/config/secrets.yml
|
184
207
|
- test/test_app/public/packs/manifest.json
|
185
|
-
- test/
|
208
|
+
- test/webpacker_test_helper.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
const { env, publicPath } = require('../configuration.js')
|
2
|
-
|
3
|
-
module.exports = {
|
4
|
-
test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
|
5
|
-
use: [{
|
6
|
-
loader: 'file-loader',
|
7
|
-
options: {
|
8
|
-
publicPath,
|
9
|
-
name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]'
|
10
|
-
}
|
11
|
-
}]
|
12
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
2
|
-
const { env } = require('../configuration.js')
|
3
|
-
|
4
|
-
module.exports = {
|
5
|
-
test: /\.(scss|sass|css)$/i,
|
6
|
-
use: ExtractTextPlugin.extract({
|
7
|
-
fallback: 'style-loader',
|
8
|
-
use: [
|
9
|
-
{ loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
|
10
|
-
{ loader: 'postcss-loader', options: { sourceMap: true } },
|
11
|
-
'resolve-url-loader',
|
12
|
-
{ loader: 'sass-loader', options: { sourceMap: true } }
|
13
|
-
]
|
14
|
-
})
|
15
|
-
}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module.exports = {
|
2
|
-
test: /.vue$/,
|
3
|
-
loader: 'vue-loader',
|
4
|
-
options: {
|
5
|
-
extractCSS: true,
|
6
|
-
loaders: {
|
7
|
-
js: 'babel-loader',
|
8
|
-
file: 'file-loader',
|
9
|
-
scss: 'vue-style-loader!css-loader!postcss-loader!sass-loader',
|
10
|
-
sass: 'vue-style-loader!css-loader!postcss-loader!sass-loader?indentedSyntax'
|
11
|
-
}
|
12
|
-
}
|
13
|
-
}
|
@@ -1,35 +0,0 @@
|
|
1
|
-
// Common configuration for webpacker loaded from config/webpacker.yml
|
2
|
-
|
3
|
-
const { join, resolve } = require('path')
|
4
|
-
const { env } = require('process')
|
5
|
-
const { safeLoad } = require('js-yaml')
|
6
|
-
const { readFileSync } = require('fs')
|
7
|
-
|
8
|
-
const configPath = resolve('config', 'webpacker.yml')
|
9
|
-
const loadersDir = join(__dirname, 'loaders')
|
10
|
-
const settings = safeLoad(readFileSync(configPath), 'utf8')[env.NODE_ENV]
|
11
|
-
|
12
|
-
function removeOuterSlashes(string) {
|
13
|
-
return string.replace(/^\/*/, '').replace(/\/*$/, '')
|
14
|
-
}
|
15
|
-
|
16
|
-
function formatPublicPath(host = '', path = '') {
|
17
|
-
let formattedHost = removeOuterSlashes(host)
|
18
|
-
if (formattedHost && !/^http/i.test(formattedHost)) {
|
19
|
-
formattedHost = `//${formattedHost}`
|
20
|
-
}
|
21
|
-
const formattedPath = removeOuterSlashes(path)
|
22
|
-
return `${formattedHost}/${formattedPath}/`
|
23
|
-
}
|
24
|
-
|
25
|
-
const output = {
|
26
|
-
path: resolve('public', settings.public_output_path),
|
27
|
-
publicPath: formatPublicPath(env.ASSET_HOST, settings.public_output_path)
|
28
|
-
}
|
29
|
-
|
30
|
-
module.exports = {
|
31
|
-
settings,
|
32
|
-
env,
|
33
|
-
loadersDir,
|
34
|
-
output
|
35
|
-
}
|
@@ -1,58 +0,0 @@
|
|
1
|
-
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
-
|
3
|
-
/* eslint global-require: 0 */
|
4
|
-
/* eslint import/no-dynamic-require: 0 */
|
5
|
-
|
6
|
-
const webpack = require('webpack')
|
7
|
-
const { basename, dirname, join, relative, resolve } = require('path')
|
8
|
-
const { sync } = require('glob')
|
9
|
-
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
10
|
-
const ManifestPlugin = require('webpack-manifest-plugin')
|
11
|
-
const extname = require('path-complete-extname')
|
12
|
-
const { env, settings, output, loadersDir } = require('./configuration.js')
|
13
|
-
|
14
|
-
const extensionGlob = `**/*{${settings.extensions.join(',')}}*`
|
15
|
-
const entryPath = join(settings.source_path, settings.source_entry_path)
|
16
|
-
const packPaths = sync(join(entryPath, extensionGlob))
|
17
|
-
|
18
|
-
module.exports = {
|
19
|
-
entry: packPaths.reduce(
|
20
|
-
(map, entry) => {
|
21
|
-
const localMap = map
|
22
|
-
const namespace = relative(join(entryPath), dirname(entry))
|
23
|
-
localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
|
24
|
-
return localMap
|
25
|
-
}, {}
|
26
|
-
),
|
27
|
-
|
28
|
-
output: {
|
29
|
-
filename: '[name].js',
|
30
|
-
path: output.path,
|
31
|
-
publicPath: output.publicPath
|
32
|
-
},
|
33
|
-
|
34
|
-
module: {
|
35
|
-
rules: sync(join(loadersDir, '*.js')).map(loader => require(loader))
|
36
|
-
},
|
37
|
-
|
38
|
-
plugins: [
|
39
|
-
new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
|
40
|
-
new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'),
|
41
|
-
new ManifestPlugin({
|
42
|
-
publicPath: output.publicPath,
|
43
|
-
writeToFileEmit: true
|
44
|
-
})
|
45
|
-
],
|
46
|
-
|
47
|
-
resolve: {
|
48
|
-
extensions: settings.extensions,
|
49
|
-
modules: [
|
50
|
-
resolve(settings.source_path),
|
51
|
-
'node_modules'
|
52
|
-
]
|
53
|
-
},
|
54
|
-
|
55
|
-
resolveLoader: {
|
56
|
-
modules: ['node_modules']
|
57
|
-
}
|
58
|
-
}
|
data/lib/webpacker/env.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# Singleton registry for determining NODE_ENV from config/webpacker.yml
|
2
|
-
require "webpacker/file_loader"
|
3
|
-
|
4
|
-
class Webpacker::Env < Webpacker::FileLoader
|
5
|
-
class << self
|
6
|
-
def current
|
7
|
-
raise Webpacker::FileLoader::FileLoaderError.new("Webpacker::Env.load must be called first") unless instance
|
8
|
-
instance.data
|
9
|
-
end
|
10
|
-
|
11
|
-
def file_path
|
12
|
-
Rails.root.join("config", "webpacker.yml")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
def load
|
18
|
-
environments = File.exist?(@path) ? YAML.load(File.read(@path)).keys : [].freeze
|
19
|
-
return ENV["NODE_ENV"] if environments.include?(ENV["NODE_ENV"])
|
20
|
-
return Rails.env if environments.include?(Rails.env)
|
21
|
-
"production"
|
22
|
-
end
|
23
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# Provides a base singleton-configuration pattern for loading a file, given a path
|
2
|
-
class Webpacker::FileLoader
|
3
|
-
class NotFoundError < StandardError; end
|
4
|
-
class FileLoaderError < StandardError; end
|
5
|
-
|
6
|
-
class_attribute :instance
|
7
|
-
attr_accessor :data
|
8
|
-
|
9
|
-
class << self
|
10
|
-
def load(path = file_path)
|
11
|
-
self.instance = new(path)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
def initialize(path)
|
17
|
-
@path = path
|
18
|
-
@data = load
|
19
|
-
end
|
20
|
-
|
21
|
-
def load
|
22
|
-
{}.freeze
|
23
|
-
end
|
24
|
-
end
|
data/test/env_test.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require "webpacker_test"
|
2
|
-
|
3
|
-
class EnvTest < Minitest::Test
|
4
|
-
def test_current_env
|
5
|
-
assert_equal Webpacker::Env.current, "production"
|
6
|
-
assert_equal Webpacker.env, "production"
|
7
|
-
assert Webpacker.env.production?
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_file_path
|
11
|
-
correct_path = File.join(File.dirname(__FILE__), "test_app/config", "webpacker.yml").to_s
|
12
|
-
assert_equal Webpacker::Env.file_path.to_s, correct_path
|
13
|
-
end
|
14
|
-
end
|
data/test/webpacker_test.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "minitest/autorun"
|
4
|
-
require "rails"
|
5
|
-
require "rails/test_help"
|
6
|
-
require "webpacker"
|
7
|
-
|
8
|
-
module TestApp
|
9
|
-
class Application < ::Rails::Application
|
10
|
-
config.root = File.join(File.dirname(__FILE__), "test_app")
|
11
|
-
config.eager_load = true
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
TestApp::Application.initialize!
|