Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
d224b59a
Commit
d224b59a
authored
Apr 26, 2018
by
Mike Greiling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update webpack manifest integration to recognize multi-chunk entrypoints
parent
996e5d79
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
11 deletions
+56
-11
app/helpers/webpack_helper.rb
app/helpers/webpack_helper.rb
+7
-8
app/views/layouts/_head.html.haml
app/views/layouts/_head.html.haml
+0
-3
lib/gitlab/webpack/manifest.rb
lib/gitlab/webpack/manifest.rb
+49
-0
No files found.
app/helpers/webpack_helper.rb
View file @
d224b59a
require
'
webpack/rails
/manifest'
require
'
gitlab/webpack
/manifest'
module
WebpackHelper
def
webpack_bundle_tag
(
bundle
,
force_same_domain:
false
)
javascript_include_tag
(
*
gitlab_webpack_asse
t_paths
(
bundle
,
force_same_domain:
force_same_domain
))
javascript_include_tag
(
*
entrypoin
t_paths
(
bundle
,
force_same_domain:
force_same_domain
))
end
def
webpack_controller_bundle_tags
...
...
@@ -18,23 +18,22 @@ module WebpackHelper
until
route
.
empty?
begin
asset_paths
=
gitlab_webpack_asse
t_paths
(
"pages.
#{
route
.
join
(
'.'
)
}
"
,
extension:
'js'
)
asset_paths
=
entrypoin
t_paths
(
"pages.
#{
route
.
join
(
'.'
)
}
"
,
extension:
'js'
)
bundles
.
unshift
(
*
asset_paths
)
rescue
Webpack
::
Rails
::
Manifest
::
EntryPoin
tMissingError
rescue
Gitlab
::
Webpack
::
Manifest
::
Asse
tMissingError
# no bundle exists for this path
end
route
.
pop
end
javascript_include_tag
(
*
bundles
)
javascript_include_tag
(
*
bundles
.
uniq
)
end
# override webpack-rails gem helper until changes can make it upstream
def
gitlab_webpack_asset_paths
(
source
,
extension:
nil
,
force_same_domain:
false
)
def
entrypoint_paths
(
source
,
extension:
nil
,
force_same_domain:
false
)
return
""
unless
source
.
present?
paths
=
Webpack
::
Rails
::
Manifest
.
asse
t_paths
(
source
)
paths
=
Gitlab
::
Webpack
::
Manifest
.
entrypoin
t_paths
(
source
)
if
extension
paths
.
select!
{
|
p
|
p
.
ends_with?
".
#{
extension
}
"
}
end
...
...
app/views/layouts/_head.html.haml
View file @
d224b59a
...
...
@@ -38,9 +38,6 @@
=
yield
:library_javascripts
=
javascript_include_tag
locale_path
unless
I18n
.
locale
==
:en
=
webpack_bundle_tag
"webpack_runtime"
=
webpack_bundle_tag
"common"
=
webpack_bundle_tag
"main"
=
webpack_bundle_tag
"raven"
if
Gitlab
::
CurrentSettings
.
clientside_sentry_enabled
-
if
content_for?
(
:page_specific_javascripts
)
...
...
lib/gitlab/webpack/manifest.rb
0 → 100644
View file @
d224b59a
require
'webpack/rails/manifest'
module
Gitlab
module
Webpack
class
Manifest
<
::
Webpack
::
Rails
::
Manifest
# Raised if webpack couldn't build one of your assets
class
WebpackError
<
StandardError
def
initialize
(
errors
)
super
"Error in webpack compile, details follow below:
\n
#{
errors
.
join
(
"
\n\n
"
)
}
"
end
end
# Raised if a supplied asset does not exist in the webpack manifest
AssetMissingError
=
Class
.
new
(
StandardError
)
class
<<
self
def
asset_paths
(
source
)
raise
::
Webpack
::
Rails
::
Manifest
::
WebpackError
,
manifest
[
"errors"
]
unless
manifest_bundled?
paths
=
manifest
[
"assetsByChunkName"
][
source
]
if
paths
# Can be either a string or an array of strings.
# Do not include source maps as they are not javascript
[
paths
].
flatten
.
reject
{
|
p
|
p
=~
/.*\.map$/
}.
map
do
|
p
|
"/
#{
::
Rails
.
configuration
.
webpack
.
public_path
}
/
#{
p
}
"
end
else
raise
AssetMissingError
,
"Can't find asset '
#{
source
}
' in webpack manifest"
end
end
def
entrypoint_paths
(
source
)
raise
::
Webpack
::
Rails
::
Manifest
::
WebpackError
,
manifest
[
"errors"
]
unless
manifest_bundled?
entrypoint
=
manifest
[
"entrypoints"
][
source
]
if
entrypoint
&&
entrypoint
[
"assets"
]
# Can be either a string or an array of strings.
# Do not include source maps as they are not javascript
[
entrypoint
[
"assets"
]].
flatten
.
reject
{
|
p
|
p
=~
/.*\.map$/
}.
map
do
|
p
|
"/
#{
::
Rails
.
configuration
.
webpack
.
public_path
}
/
#{
p
}
"
end
else
raise
AssetMissingError
,
"Can't find entry point '
#{
source
}
' in webpack manifest"
end
end
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment