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
7bfd1b1e
Verified
Commit
7bfd1b1e
authored
Dec 12, 2017
by
Chocobozzz
Browse files
Upgrade scripts and embed webpack config
parent
63c4db6d
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
client/config/empty.js
deleted
100644 → 0
View file @
63c4db6d
module
.
exports
=
{
hmrModule
:
function
(
ngmodule
)
{
return
ngmodule
},
NgProbeToken
:
{},
HmrState
:
function
()
{},
_createConditionalRootRenderer
:
function
(
rootRenderer
,
extraTokens
,
coreTokens
)
{
return
rootRenderer
},
__platform_browser_private__
:
{}
}
client/config/resource-override.js
deleted
100644 → 0
View file @
63c4db6d
client/config/webpack.common.js
deleted
100644 → 0
View file @
63c4db6d
const
helpers
=
require
(
'
./helpers
'
)
/*
* Webpack Plugins
*/
const
AssetsPlugin
=
require
(
'
assets-webpack-plugin
'
)
const
ContextReplacementPlugin
=
require
(
'
webpack/lib/ContextReplacementPlugin
'
)
const
CommonsChunkPlugin
=
require
(
'
webpack/lib/optimize/CommonsChunkPlugin
'
)
const
CheckerPlugin
=
require
(
'
awesome-typescript-loader
'
).
CheckerPlugin
const
HtmlWebpackPlugin
=
require
(
'
html-webpack-plugin
'
)
const
LoaderOptionsPlugin
=
require
(
'
webpack/lib/LoaderOptionsPlugin
'
)
const
ScriptExtHtmlWebpackPlugin
=
require
(
'
script-ext-html-webpack-plugin
'
)
const
InlineManifestWebpackPlugin
=
require
(
'
inline-manifest-webpack-plugin
'
)
const
ngcWebpack
=
require
(
'
ngc-webpack
'
)
const
CopyWebpackPlugin
=
require
(
'
copy-webpack-plugin
'
)
const
WebpackNotifierPlugin
=
require
(
'
webpack-notifier
'
)
const
HMR
=
helpers
.
hasProcessFlag
(
'
hot
'
)
const
AOT
=
process
.
env
.
BUILD_AOT
||
helpers
.
hasNpmFlag
(
'
aot
'
)
const
METADATA
=
{
title
:
'
PeerTube
'
,
baseUrl
:
'
/
'
,
isDevServer
:
helpers
.
isWebpackDevServer
(),
HMR
:
HMR
,
AOT
:
AOT
}
/*
* Webpack configuration
*
* See: http://webpack.github.io/docs/configuration.html#cli
*/
module
.
exports
=
function
(
options
)
{
const
isProd
=
options
.
env
===
'
production
'
const
AOT
=
isProd
return
{
/*
* Cache generated modules and chunks to improve performance for multiple incremental builds.
* This is enabled by default in watch mode.
* You can pass false to disable it.
*
* See: http://webpack.github.io/docs/configuration.html#cache
*/
// cache: false,
/*
* The entry point for the bundle
* Our Angular.js app
*
* See: http://webpack.github.io/docs/configuration.html#entry
*/
entry
:
{
'
polyfills
'
:
'
./src/polyfills.browser.ts
'
,
'
main
'
:
AOT
?
'
./src/main.browser.aot.ts
'
:
'
./src/main.browser.ts
'
},
/*
* Options affecting the resolving of modules.
*
* See: http://webpack.github.io/docs/configuration.html#resolve
*/
resolve
:
{
/*
* An array of extensions that should be used to resolve modules.
*
* See: http://webpack.github.io/docs/configuration.html#resolve-extensions
*/
extensions
:
[
'
.ts
'
,
'
.js
'
,
'
.json
'
,
'
.scss
'
],
modules
:
[
helpers
.
root
(
'
src
'
),
helpers
.
root
(
'
node_modules
'
)
]
},
/*
* Options affecting the normal modules.
*
* See: http://webpack.github.io/docs/configuration.html#module
*/
module
:
{
rules
:
[
/*
* Typescript loader support for .ts and Angular async routes via .async.ts
*
* See: https://github.com/s-panferov/awesome-typescript-loader
*/
{
test
:
/
\.
ts$/
,
use
:
[
{
loader
:
'
ng-router-loader
'
,
options
:
{
loader
:
'
async-import
'
,
genDir
:
'
compiled
'
,
aot
:
AOT
}
},
{
loader
:
'
awesome-typescript-loader
'
,
options
:
{
configFileName
:
'
tsconfig.webpack.json
'
,
useCache
:
!
isProd
}
},
{
loader
:
'
angular2-template-loader
'
}
],
exclude
:
[
/
\.(
spec|e2e
)\.
ts$/
]
},
/*
* Json loader support for *.json files.
*
* See: https://github.com/webpack/json-loader
*/
{
test
:
/
\.
json$/
,
use
:
'
json-loader
'
},
{
test
:
/
\.(
sass|scss
)
$/
,
use
:
[
'
css-to-string-loader
'
,
{
loader
:
'
css-loader
'
,
options
:
{
sourceMap
:
true
,
importLoaders
:
1
}
},
'
resolve-url-loader
'
,
{
loader
:
'
sass-loader
'
,
options
:
{
sourceMap
:
true
}
},
{
loader
:
'
sass-resources-loader
'
,
options
:
{
resources
:
[
helpers
.
root
(
'
src/sass/_variables.scss
'
),
helpers
.
root
(
'
src/sass/_mixins.scss
'
)
]
}
}
]
},
{
test
:
/
\.
woff
(
2
)?(\?
v=
[
0-9
]\.[
0-9
]\.[
0-9
])?
$/
,
use
:
'
url-loader?limit=10000&minetype=application/font-woff
'
},
{
test
:
/
\.(
otf|ttf|eot|svg
)(\?
v=
[
0-9
]\.[
0-9
]\.[
0-9
])?
$/
,
use
:
'
url-loader?limit=10000
'
},
/* Raw loader support for *.html
* Returns file content as string
*
* See: https://github.com/webpack/raw-loader
*/
{
test
:
/
\.
html$/
,
use
:
'
raw-loader
'
,
exclude
:
[
helpers
.
root
(
'
src/index.html
'
),
helpers
.
root
(
'
src/standalone/videos/embed.html
'
)
]
},
/* File loader for supporting images, for example, in CSS files.
*/
{
test
:
/
\.(
jpg|png|gif
)
$/
,
use
:
'
url-loader
'
}
]
},
/*
* Add additional plugins to the compiler.
*
* See: http://webpack.github.io/docs/configuration.html#plugins
*/
plugins
:
[
new
AssetsPlugin
({
path
:
helpers
.
root
(
'
dist
'
),
filename
:
'
webpack-assets.json
'
,
prettyPrint
:
true
}),
/*
* Plugin: ForkCheckerPlugin
* Description: Do type checking in a separate process, so webpack don't need to wait.
*
* See: https://github.com/s-panferov/awesome-typescript-loader#forkchecker-boolean-defaultfalse
*/
new
CheckerPlugin
(),
/*
* Plugin: CommonsChunkPlugin
* Description: Shares common code between the pages.
* It identifies common modules and put them into a commons chunk.
*
* See: https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin
* See: https://github.com/webpack/docs/wiki/optimization#multi-page-app
*/
new
CommonsChunkPlugin
({
name
:
'
polyfills
'
,
chunks
:
[
'
polyfills
'
]
}),
// This enables tree shaking of the vendor modules
new
CommonsChunkPlugin
({
name
:
'
vendor
'
,
chunks
:
[
'
main
'
],
minChunks
:
module
=>
{
return
/node_modules
\/
/
.
test
(
module
.
resource
)
}
}),
// Specify the correct order the scripts will be injected in
new
CommonsChunkPlugin
({
name
:
[
'
polyfills
'
,
'
vendor
'
].
reverse
()
}),
/**
* Plugin: ContextReplacementPlugin
* Description: Provides context to Angular's use of System.import
*
* See: https://webpack.github.io/docs/list-of-plugins.html#contextreplacementplugin
* See: https://github.com/angular/angular/issues/11580
*/
new
ContextReplacementPlugin
(
/**
* The (\\|\/) piece accounts for path separators in *nix and Windows
*/
/
(
.+
)?
angular
(\\
|
\/)
core
(
.+
)?
/
,
helpers
.
root
(
'
src
'
),
// location of your src
{
/**
* Your Angular Async Route paths relative to this root directory
*/
}
),
/*
* Plugin: HtmlWebpackPlugin
* Description: Simplifies creation of HTML files to serve your webpack bundles.
* This is especially useful for webpack bundles that include a hash in the filename
* which changes every compilation.
*
* See: https://github.com/ampedandwired/html-webpack-plugin
*/
new
HtmlWebpackPlugin
({
template
:
'
src/index.html
'
,
title
:
METADATA
.
title
,
chunksSortMode
:
function
(
a
,
b
)
{
const
entryPoints
=
[
'
inline
'
,
'
polyfills
'
,
'
sw-register
'
,
'
styles
'
,
'
vendor
'
,
'
main
'
]
return
entryPoints
.
indexOf
(
a
.
names
[
0
])
-
entryPoints
.
indexOf
(
b
.
names
[
0
])
},
metadata
:
METADATA
,
inject
:
'
body
'
}),
new
CopyWebpackPlugin
([
{
from
:
helpers
.
root
(
'
src/assets/images/favicon.png
'
),
to
:
'
assets/images/favicon.png
'
},
{
from
:
helpers
.
root
(
'
src/assets/images/default-avatar.png
'
),
to
:
'
assets/images/default-avatar.png
'
}
]),
/*
* Plugin: ScriptExtHtmlWebpackPlugin
* Description: Enhances html-webpack-plugin functionality
* with different deployment options for your scripts including:
*
* See: https://github.com/numical/script-ext-html-webpack-plugin
*/
new
ScriptExtHtmlWebpackPlugin
({
sync
:
[
/polyfill|vendor/
],
defaultAttribute
:
'
async
'
,
preload
:
[
/polyfill|vendor|main/
],
prefetch
:
[
/chunk/
]
}),
new
WebpackNotifierPlugin
({
alwaysNotify
:
true
}),
/**
* Plugin LoaderOptionsPlugin (experimental)
*
* See: https://gist.github.com/sokra/27b24881210b56bbaff7
*/
new
LoaderOptionsPlugin
({
options
:
{
context
:
''
,
sassLoader
:
{
precision
:
10
,
includePaths
:
[
helpers
.
root
(
'
src/sass
'
)
]
}
}
}),
new
ngcWebpack
.
NgcWebpackPlugin
({
disabled
:
!
AOT
,
tsConfig
:
helpers
.
root
(
'
tsconfig.webpack.json
'
)
}),
new
InlineManifestWebpackPlugin
()
],
/*
* Include polyfills or mocks for various node stuff
* Description: Node configuration
*
* See: https://webpack.github.io/docs/configuration.html#node
*/
node
:
{
global
:
true
,
crypto
:
'
empty
'
,
process
:
true
,
module
:
false
,
clearImmediate
:
false
,
setImmediate
:
false
,
setInterval
:
false
,
setTimeout
:
false
}
}
}
client/config/webpack.dev.js
deleted
100644 → 0
View file @
63c4db6d
const
helpers
=
require
(
'
./helpers
'
)
const
webpackMerge
=
require
(
'
webpack-merge
'
)
// used to merge webpack configs
const
webpackMergeDll
=
webpackMerge
.
strategy
({
plugins
:
'
replace
'
})
const
commonConfig
=
require
(
'
./webpack.common.js
'
)
// the settings that are common to prod and dev
const
videoEmbedConfig
=
require
(
'
./webpack.video-embed.js
'
)
/**
* Webpack Plugins
*/
const
AddAssetHtmlPlugin
=
require
(
'
add-asset-html-webpack-plugin
'
)
const
DefinePlugin
=
require
(
'
webpack/lib/DefinePlugin
'
)
const
NamedModulesPlugin
=
require
(
'
webpack/lib/NamedModulesPlugin
'
)
const
LoaderOptionsPlugin
=
require
(
'
webpack/lib/LoaderOptionsPlugin
'
)
const
HotModuleReplacementPlugin
=
require
(
'
webpack/lib/HotModuleReplacementPlugin
'
)
/**
* Webpack Constants
*/
const
ENV
=
process
.
env
.
ENV
=
process
.
env
.
NODE_ENV
=
'
development
'
const
HOST
=
process
.
env
.
HOST
||
'
localhost
'
const
PORT
=
process
.
env
.
PORT
||
3000
const
PUBLIC
=
process
.
env
.
PUBLIC_DEV
||
HOST
+
'
:
'
+
PORT
const
AOT
=
process
.
env
.
BUILD_AOT
||
helpers
.
hasNpmFlag
(
'
aot
'
)
const
HMR
=
helpers
.
hasProcessFlag
(
'
hot
'
)
const
METADATA
=
{
host
:
HOST
,
port
:
PORT
,
public
:
PUBLIC
,
ENV
:
ENV
,
HMR
:
HMR
,
AOT
:
AOT
,
API_URL
:
'
http://localhost:9000
'
}
const
DllBundlesPlugin
=
require
(
'
webpack-dll-bundles-plugin
'
).
DllBundlesPlugin
/**
* Webpack configuration
*
* See: http://webpack.github.io/docs/configuration.html#cli
*/
module
.
exports
=
function
(
env
)
{
return
[
webpackMerge
(
commonConfig
({
env
:
ENV
}),
{
/**
* 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
:
'
cheap-module-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].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].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].chunk.js
'
,
library
:
'
ac_[name]
'
,
libraryTarget
:
'
var
'
},
plugins
:
[
/**
* 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
,
'
API_URL
'
:
JSON
.
stringify
(
METADATA
.
API_URL
),
'
process.version
'
:
JSON
.
stringify
(
process
.
version
),
'
process.env.ENV
'
:
JSON
.
stringify
(
METADATA
.
ENV
),
'
process.env.NODE_ENV
'
:
JSON
.
stringify
(
METADATA
.
ENV
),
'
process.env.HMR
'
:
METADATA
.
HMR
}),
new
DllBundlesPlugin
({
bundles
:
{
polyfills
:
[
'
core-js
'
,
{
name
:
'
zone.js
'
,
path
:
'
zone.js/dist/zone.js
'
},
{
name
:
'
zone.js
'
,
path
:
'
zone.js/dist/long-stack-trace-zone.js
'
}
],
vendor
:
[
'
@angular/platform-browser
'
,
'
@angular/platform-browser-dynamic
'
,
'
@angular/core
'
,
'
@angular/common
'
,
'
@angular/forms
'
,
'
@angular/http
'
,
'
@angular/router
'
,
'
@angularclass/hmr
'
,
'
rxjs
'
]
},
dllDir
:
helpers
.
root
(
'
dll
'
),
webpackConfig
:
webpackMergeDll
(
commonConfig
({
env
:
ENV
}),
{
devtool
:
'
cheap-module-source-map
'
,
plugins
:
[]
})
}),
/**
* Plugin: AddAssetHtmlPlugin
* Description: Adds the given JS or CSS file to the files
* Webpack knows about, and put it into the list of assets
* html-webpack-plugin injects into the generated html.
*
* See: https://github.com/SimenB/add-asset-html-webpack-plugin
*/
new
AddAssetHtmlPlugin
([
{
filepath
:
helpers
.
root
(
`dll/
${
DllBundlesPlugin
.
resolveFile
(
'
polyfills
'
)}
`
)
},
{
filepath
:
helpers
.
root
(
`dll/
${
DllBundlesPlugin
.
resolveFile
(
'
vendor
'
)}
`
)
}
]),
/**
* Plugin: NamedModulesPlugin (experimental)
* Description: Uses file names as module name.
*
* See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb
*/
new
NamedModulesPlugin
(),
/**
* Plugin LoaderOptionsPlugin (experimental)
*
* See: https://gist.github.com/sokra/27b24881210b56bbaff7
*/
new
LoaderOptionsPlugin
({
debug
:
true
,
options
:
{
/**
* 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
:
false
,
failOnHint
:
false
,
typeCheck
:
true
,
resourcePath
:
'
src
'
},
// FIXME: Remove
// https://github.com/bholloway/resolve-url-loader/issues/36
// https://github.com/jtangelder/sass-loader/issues/289
context
:
__dirname
,
output
:
{
path
:
helpers
.
root
(
'
dist
'
)
}
}
}),
new
HotModuleReplacementPlugin
()
],
/**
* Webpack Development Server configuration
* Description: The webpack-dev-server is a little node.js Express server.
* The server emits information about the compilation state to the client,
* which reacts to those events.
*
* See: https://webpack.github.io/docs/webpack-dev-server.html
*/
devServer
:
{
port
:
METADATA
.
port
,
host
:
METADATA
.
host
,
historyApiFallback
:
true
,
hot
:
METADATA
.
HMR
,
watchOptions
:
{
ignored
:
/node_modules/
}
},
/*
* Include polyfills or mocks for various node stuff
* Description: Node configuration
*
* See: https://webpack.github.io/docs/configuration.html#node
*/
node
:
{
global
:
true
,
crypto
:
'
empty
'
,
fs
:
'
empty
'
,
process
:
true
,
module
:
false
,
clearImmediate
:
false
,
setImmediate
:
false
}
}),
videoEmbedConfig
({
env
:
ENV
})
]
}
client/config/webpack.prod.js
deleted
100644 → 0
View file @
63c4db6d
/**
* @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
const
videoEmbedConfig
=
require
(
'
./webpack.video-embed.js
'
)
/**
* Webpack Plugins
*/
const
DefinePlugin
=
require
(
'
webpack/lib/DefinePlugin
'
)
const
BundleAnalyzerPlugin
=
require
(
'
webpack-bundle-analyzer
'
).
BundleAnalyzerPlugin
const
LoaderOptionsPlugin
=
require
(
'
webpack/lib/LoaderOptionsPlugin
'
)
const
NormalModuleReplacementPlugin
=
require
(
'
webpack/lib/NormalModuleReplacementPlugin
'
)
const
OptimizeJsPlugin
=
require
(
'
optimize-js-plugin
'
)
const
HashedModuleIdsPlugin
=
require
(
'
webpack/lib/HashedModuleIdsPlugin
'
)
const
UglifyJsPlugin
=
require
(
'
uglifyjs-webpack-plugin
'
)
const
ExtractTextPlugin
=
require
(
'
extract-text-webpack-plugin
'
)