Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Framasoft
PeerTube
PeerTube
Commits
b20b5fed
Commit
b20b5fed
authored
Jun 03, 2016
by
Chocobozzz
Browse files
Add production webpack, big thanks to @AngularClass
parent
fc76359b
Changes
6
Hide whitespace changes
Inline
Side-by-side
client/config/webpack.common.js
View file @
b20b5fed
...
...
@@ -72,6 +72,10 @@ module.exports = {
},
output
:
{
publicPath
:
'
/client/
'
},
/*
* Options affecting the normal modules.
*
...
...
client/config/webpack.dev.js
View file @
b20b5fed
...
...
@@ -81,9 +81,7 @@ module.exports = webpackMerge(commonConfig, {
*
* See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
*/
chunkFilename
:
'
[id].chunk.js
'
,
publicPath
:
'
/client/
'
chunkFilename
:
'
[id].chunk.js
'
},
...
...
client/config/webpack.prod.js
View file @
b20b5fed
/**
* @author: @AngularClass
*/
const
helpers
=
require
(
'
./helpers
'
)
const
webpackMerge
=
require
(
'
webpack-merge
'
)
// used to merge webpack configs
const
commonConfig
=
require
(
'
./webpack.common.js
'
)
// the settings that are common to prod and dev
/**
* Webpack Plugins
*/
const
ProvidePlugin
=
require
(
'
webpack/lib/ProvidePlugin
'
)
const
DefinePlugin
=
require
(
'
webpack/lib/DefinePlugin
'
)
const
DedupePlugin
=
require
(
'
webpack/lib/optimize/DedupePlugin
'
)
const
UglifyJsPlugin
=
require
(
'
webpack/lib/optimize/UglifyJsPlugin
'
)
const
CompressionPlugin
=
require
(
'
compression-webpack-plugin
'
)
const
WebpackMd5Hash
=
require
(
'
webpack-md5-hash
'
)
/**
* Webpack Constants
*/
const
ENV
=
process
.
env
.
NODE_ENV
=
process
.
env
.
ENV
=
'
production
'
const
HOST
=
process
.
env
.
HOST
||
'
localhost
'
const
PORT
=
process
.
env
.
PORT
||
8080
const
METADATA
=
webpackMerge
(
commonConfig
.
metadata
,
{
host
:
HOST
,
port
:
PORT
,
ENV
:
ENV
,
HMR
:
false
})
module
.
exports
=
webpackMerge
(
commonConfig
,
{
/**
* Switch loaders to debug mode.
*
* See: http://webpack.github.io/docs/configuration.html#debug
*/
debug
:
false
,
/**
* Developer tool to enhance debugging
*
* See: http://webpack.github.io/docs/configuration.html#devtool
* See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps
*/
devtool
:
'
source-map
'
,
/**
* Options affecting the output of the compilation.
*
* See: http://webpack.github.io/docs/configuration.html#output
*/
output
:
{
/**
* The output directory as absolute path (required).
*
* See: http://webpack.github.io/docs/configuration.html#output-path
*/
path
:
helpers
.
root
(
'
dist
'
),
/**
* Specifies the name of each output file on disk.
* IMPORTANT: You must not specify an absolute path here!
*
* See: http://webpack.github.io/docs/configuration.html#output-filename
*/
filename
:
'
[name].[chunkhash].bundle.js
'
,
/**
* The filename of the SourceMaps for the JavaScript files.
* They are inside the output.path directory.
*
* See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename
*/
sourceMapFilename
:
'
[name].[chunkhash].bundle.map
'
,
/**
* The filename of non-entry chunks as relative path
* inside the output.path directory.
*
* See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
*/
chunkFilename
:
'
[id].[chunkhash].chunk.js
'
},
/**
* Add additional plugins to the compiler.
*
* See: http://webpack.github.io/docs/configuration.html#plugins
*/
plugins
:
[
/**
* Plugin: WebpackMd5Hash
* Description: Plugin to replace a standard webpack chunkhash with md5.
*
* See: https://www.npmjs.com/package/webpack-md5-hash
*/
new
WebpackMd5Hash
(),
/**
* Plugin: DedupePlugin
* Description: Prevents the inclusion of duplicate code into your bundle
* and instead applies a copy of the function at runtime.
*
* See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
* See: https://github.com/webpack/docs/wiki/optimization#deduplication
*/
new
DedupePlugin
(),
/**
* Plugin: DefinePlugin
* Description: Define free variables.
* Useful for having development builds with debug logging or adding global constants.
*
* Environment helpers
*
* See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
*/
// NOTE: when adding more properties make sure you include them in custom-typings.d.ts
new
DefinePlugin
({
'
ENV
'
:
JSON
.
stringify
(
METADATA
.
ENV
),
'
HMR
'
:
METADATA
.
HMR
,
'
process.env
'
:
{
'
ENV
'
:
JSON
.
stringify
(
METADATA
.
ENV
),
'
NODE_ENV
'
:
JSON
.
stringify
(
METADATA
.
ENV
),
'
HMR
'
:
METADATA
.
HMR
}
}),
/**
* Plugin: UglifyJsPlugin
* Description: Minimize all JavaScript output of chunks.
* Loaders are switched into minimizing mode.
*
* See: https://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin
*/
// NOTE: To debug prod builds uncomment //debug lines and comment //prod lines
new
UglifyJsPlugin
({
// beautify: true, //debug
// mangle: false, //debug
// dead_code: false, //debug
// unused: false, //debug
// deadCode: false, //debug
// compress: {
// screw_ie8: true,
// keep_fnames: true,
// drop_debugger: false,
// dead_code: false,
// unused: false
// }, // debug
// comments: true, //debug
beautify
:
false
,
// prod
mangle
:
{
screw_ie8
:
true
,
keep_fnames
:
true
},
// prod
compress
:
{
screw_ie8
:
true
},
// prod
comments
:
false
// prod
}),
/**
* Plugin: CompressionPlugin
* Description: Prepares compressed versions of assets to serve
* them with Content-Encoding
*
* See: https://github.com/webpack/compression-webpack-plugin
*/
new
CompressionPlugin
({
regExp
:
/
\.
css$|
\.
html$|
\.
js$|
\.
map$/
,
threshold
:
2
*
1024
})
],
/**
* Static analysis linter for TypeScript advanced options configuration
* Description: An extensible linter for the TypeScript language.
*
* See: https://github.com/wbuchwalter/tslint-loader
*/
tslint
:
{
emitErrors
:
true
,
failOnHint
:
true
,
resourcePath
:
'
src
'
},
/**
* Html loader advanced options
*
* See: https://github.com/webpack/html-loader#advanced-options
*/
// TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor
htmlLoader
:
{
minimize
:
true
,
removeAttributeQuotes
:
false
,
caseSensitive
:
true
,
customAttrSurround
:
[
[
/#/
,
/
(?:)
/
],
[
/
\*
/
,
/
(?:)
/
],
[
/
\[?\(?
/
,
/
(?:)
/
]
],
customAttrAssign
:
[
/
\)?\]?
=/
]
},
/*
* Include polyfills or mocks for various node stuff
* Description: Node configuration
*
* See: https://webpack.github.io/docs/configuration.html#node
*/
node
:
{
global
:
'
window
'
,
crypto
:
'
empty
'
,
process
:
false
,
module
:
false
,
clearImmediate
:
false
,
setImmediate
:
false
}
})
client/src/polyfills.ts
View file @
b20b5fed
...
...
@@ -14,15 +14,8 @@ require('zone.js/dist/zone');
// Typescript emit helpers polyfill
import
'
ts-helpers
'
;
if
(
'
production
'
===
ENV
)
{
// Production
}
else
{
// Development
if
(
'
production
'
!==
ENV
)
{
Error
.
stackTraceLimit
=
Infinity
;
require
(
'
zone.js/dist/long-stack-trace-zone
'
);
}
client/src/vendor.ts
View file @
b20b5fed
...
...
@@ -17,12 +17,3 @@ import 'rxjs/add/operator/mergeMap';
import
'
jquery
'
;
import
'
bootstrap-loader
'
;
if
(
'
production
'
===
ENV
)
{
// Production
}
else
{
// Development
}
scripts/build/client/prod.sh
0 → 100755
View file @
b20b5fed
#!/usr/bin/env sh
cd
client
||
exit
-1
npm run webpack
--
--config
config/webpack.prod.js
--progress
--profile
--colors
--display-error-details
--display-cached
--bail
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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