mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Initial commit
This commit is contained in:
commit
5e0dfdac54
43 files changed
+12581
No files matched your search
@@ -0,0 +1,150 @@
|
||||
const path = require('path')
|
||||
const webpack = require('webpack')
|
||||
const merge = require('webpack-merge')
|
||||
const { VueLoaderPlugin } = require('vue-loader')
|
||||
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
||||
|
||||
module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
|
||||
const bubleOptions = {
|
||||
target,
|
||||
objectAssign: 'Object.assign',
|
||||
transforms: {
|
||||
forOf: false,
|
||||
modules: false
|
||||
}
|
||||
}
|
||||
|
||||
const baseConfig = {
|
||||
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
|
||||
resolve: {
|
||||
alias: {
|
||||
src: path.resolve(__dirname, '../src'),
|
||||
views: path.resolve(__dirname, '../src/devtools/views'),
|
||||
components: path.resolve(__dirname, '../src/devtools/components'),
|
||||
filters: path.resolve(__dirname, '../src/devtools/filters')
|
||||
}
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
loader: 'buble-loader',
|
||||
exclude: /node_modules|vue\/dist|vuex\/dist/,
|
||||
options: bubleOptions
|
||||
},
|
||||
{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader',
|
||||
options: {
|
||||
compilerOptions: {
|
||||
preserveWhitespace: false
|
||||
},
|
||||
transpileOptions: bubleOptions
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.css$/,
|
||||
use: [
|
||||
'vue-style-loader',
|
||||
'css-loader',
|
||||
'postcss-loader'
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.styl(us)?$/,
|
||||
use: [
|
||||
'vue-style-loader',
|
||||
'css-loader',
|
||||
'postcss-loader',
|
||||
'stylus-loader',
|
||||
{
|
||||
loader: 'style-resources-loader',
|
||||
options: {
|
||||
patterns: [
|
||||
path.resolve(__dirname, '../src/devtools/style/imports.styl')
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
test: /\.(png|woff2)$/,
|
||||
loader: 'url-loader?limit=0'
|
||||
}
|
||||
]
|
||||
},
|
||||
performance: {
|
||||
hints: false
|
||||
},
|
||||
plugins: [
|
||||
new VueLoaderPlugin(),
|
||||
...(process.env.VUE_DEVTOOL_TEST ? [] : [new FriendlyErrorsPlugin()]),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.RELEASE_CHANNEL': JSON.stringify(process.env.RELEASE_CHANNEL || 'stable')
|
||||
})
|
||||
],
|
||||
devServer: {
|
||||
port: process.env.PORT
|
||||
},
|
||||
stats: {
|
||||
colors: true
|
||||
}
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
const UglifyPlugin = require('uglifyjs-webpack-plugin')
|
||||
baseConfig.plugins.push(
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.NODE_ENV': '"production"'
|
||||
})
|
||||
)
|
||||
baseConfig.optimization = {
|
||||
minimizer: [
|
||||
new UglifyPlugin({
|
||||
exclude: /backend/,
|
||||
uglifyOptions: {
|
||||
compress: {
|
||||
// turn off flags with small gains to speed up minification
|
||||
arrows: false,
|
||||
collapse_vars: false, // 0.3kb
|
||||
comparisons: false,
|
||||
computed_props: false,
|
||||
hoist_funs: false,
|
||||
hoist_props: false,
|
||||
hoist_vars: false,
|
||||
inline: false,
|
||||
loops: false,
|
||||
negate_iife: false,
|
||||
properties: false,
|
||||
reduce_funcs: false,
|
||||
reduce_vars: false,
|
||||
switches: false,
|
||||
toplevel: false,
|
||||
typeofs: false,
|
||||
|
||||
// a few flags with noticable gains/speed ratio
|
||||
// numbers based on out of the box vendor bundle
|
||||
booleans: true, // 0.7kb
|
||||
if_return: true, // 0.4kb
|
||||
sequences: true, // 0.7kb
|
||||
unused: true, // 2.3kb
|
||||
|
||||
// required features to drop conditional branches
|
||||
conditionals: true,
|
||||
dead_code: true,
|
||||
evaluate: true
|
||||
},
|
||||
mangle: {
|
||||
safari10: true
|
||||
}
|
||||
},
|
||||
sourceMap: false,
|
||||
cache: true,
|
||||
parallel: true
|
||||
})
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
return merge(baseConfig, config)
|
||||
}
|
||||
Reference in new issue
Block a user