refactor: webpack vendor, postcss + fixes
This commit is contained in:
15
.babelrc
15
.babelrc
@@ -1,20 +1,7 @@
|
|||||||
{
|
{
|
||||||
"comments": true,
|
"comments": true,
|
||||||
"presets": [
|
"presets": [
|
||||||
["env", {
|
["env"],
|
||||||
"targets": {
|
|
||||||
"browsers": [
|
|
||||||
"last 6 Chrome major versions",
|
|
||||||
"last 6 Firefox major versions",
|
|
||||||
"last 4 Safari major versions",
|
|
||||||
"last 4 Edge major versions",
|
|
||||||
"last 3 iOS major versions",
|
|
||||||
"last 3 Android major versions",
|
|
||||||
"last 2 ChromeAndroid major versions",
|
|
||||||
"Explorer 11"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
"stage-2"
|
"stage-2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,12 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
'autoprefixer': {},
|
||||||
|
'cssnano': {
|
||||||
|
preset: ['default', {
|
||||||
|
discardComments: {
|
||||||
|
removeAll: true
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,16 @@ const ProgressBarPlugin = require('progress-bar-webpack-plugin')
|
|||||||
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
|
|
||||||
const babelConfig = fs.readJsonSync(path.join(process.cwd(), '.babelrc'))
|
const babelConfig = fs.readJsonSync(path.join(process.cwd(), '.babelrc'))
|
||||||
|
const postCSSConfig = {
|
||||||
|
config: {
|
||||||
|
path: path.join(process.cwd(), 'dev/webpack/postcss.config.js')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
entry: './client/index.js',
|
entry: {
|
||||||
|
client: './client/index.js'
|
||||||
|
},
|
||||||
output: {
|
output: {
|
||||||
path: path.join(process.cwd(), 'assets'),
|
path: path.join(process.cwd(), 'assets'),
|
||||||
pathinfo: true,
|
pathinfo: true,
|
||||||
@@ -45,12 +52,11 @@ module.exports = {
|
|||||||
loader: 'style-loader'
|
loader: 'style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader'
|
||||||
options: {
|
},
|
||||||
autoprefixer: false,
|
{
|
||||||
sourceMap: false,
|
loader: 'postcss-loader',
|
||||||
minimize: true
|
options: postCSSConfig
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -60,12 +66,11 @@ module.exports = {
|
|||||||
fallback: 'style-loader',
|
fallback: 'style-loader',
|
||||||
use: [
|
use: [
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader'
|
||||||
options: {
|
},
|
||||||
autoprefixer: false,
|
{
|
||||||
sourceMap: false,
|
loader: 'postcss-loader',
|
||||||
minimize: true
|
options: postCSSConfig
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader',
|
loader: 'sass-loader',
|
||||||
@@ -80,18 +85,18 @@ module.exports = {
|
|||||||
test: /\.vue$/,
|
test: /\.vue$/,
|
||||||
loader: 'vue-loader',
|
loader: 'vue-loader',
|
||||||
options: {
|
options: {
|
||||||
|
extractCSS: true,
|
||||||
loaders: {
|
loaders: {
|
||||||
css: [
|
css: [
|
||||||
{
|
{
|
||||||
loader: 'vue-style-loader'
|
loader: 'vue-style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader'
|
||||||
options: {
|
},
|
||||||
autoprefixer: false,
|
{
|
||||||
sourceMap: false,
|
loader: 'postcss-loader',
|
||||||
minimize: true
|
options: postCSSConfig
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
scss: [
|
scss: [
|
||||||
@@ -99,12 +104,11 @@ module.exports = {
|
|||||||
loader: 'vue-style-loader'
|
loader: 'vue-style-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader',
|
loader: 'css-loader'
|
||||||
options: {
|
},
|
||||||
autoprefixer: false,
|
{
|
||||||
sourceMap: false,
|
loader: 'postcss-loader',
|
||||||
minimize: true
|
options: postCSSConfig
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'sass-loader',
|
loader: 'sass-loader',
|
||||||
@@ -119,13 +123,21 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
js: {
|
js: [
|
||||||
loader: 'babel-loader',
|
{
|
||||||
options: {
|
loader: 'cache-loader',
|
||||||
babelrc: path.join(process.cwd(), '.babelrc'),
|
options: {
|
||||||
cacheDirectory: true
|
cacheDirectory: '.webpack-cache'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
babelrc: path.join(process.cwd(), '.babelrc'),
|
||||||
|
cacheDirectory: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -180,7 +192,16 @@ module.exports = {
|
|||||||
], {
|
], {
|
||||||
|
|
||||||
}),
|
}),
|
||||||
new ExtractTextPlugin('css/bundle.css')
|
new webpack.optimize.CommonsChunkPlugin({
|
||||||
|
name: 'vendor',
|
||||||
|
minChunks(module) {
|
||||||
|
return module.context && module.context.includes('node_modules')
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
new webpack.optimize.CommonsChunkPlugin({
|
||||||
|
name: 'manifest',
|
||||||
|
minChunks: Infinity
|
||||||
|
})
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
symlinks: true,
|
symlinks: true,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
const webpack = require('webpack')
|
const webpack = require('webpack')
|
||||||
const merge = require('webpack-merge')
|
const merge = require('webpack-merge')
|
||||||
|
|
||||||
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
|
|
||||||
const common = require('./webpack.common.js')
|
const common = require('./webpack.common.js')
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
@@ -10,7 +12,8 @@ module.exports = merge(common, {
|
|||||||
plugins: [
|
plugins: [
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify('development')
|
'process.env.NODE_ENV': JSON.stringify('development')
|
||||||
})
|
}),
|
||||||
|
new ExtractTextPlugin({ disable: true })
|
||||||
],
|
],
|
||||||
resolve: {}
|
resolve: {}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ const merge = require('webpack-merge')
|
|||||||
|
|
||||||
const CleanWebpackPlugin = require('clean-webpack-plugin')
|
const CleanWebpackPlugin = require('clean-webpack-plugin')
|
||||||
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
|
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
|
||||||
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
|
|
||||||
const common = require('./webpack.common.js')
|
const common = require('./webpack.common.js')
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ module.exports = merge(common, {
|
|||||||
new UglifyJSPlugin(),
|
new UglifyJSPlugin(),
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'process.env.NODE_ENV': JSON.stringify('production')
|
'process.env.NODE_ENV': JSON.stringify('production')
|
||||||
})
|
}),
|
||||||
|
new ExtractTextPlugin('css/bundle.css')
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
11
package.json
11
package.json
@@ -9,9 +9,8 @@
|
|||||||
"restart": "node wiki restart",
|
"restart": "node wiki restart",
|
||||||
"build": "webpack --config dev/webpack/webpack.prod.js",
|
"build": "webpack --config dev/webpack/webpack.prod.js",
|
||||||
"build:analyze": "poi build --analyze",
|
"build:analyze": "poi build --analyze",
|
||||||
"dev:client": "poi watch",
|
"dev:client": "webpack --config dev/webpack/webpack.dev.js",
|
||||||
"dev:server": "nodemon",
|
"dev:server": "nodemon",
|
||||||
"dev:server:alt": "node-dev server --no-deps --respawn --no-notify",
|
|
||||||
"test": "eslint --ext .js,.vue . && jest"
|
"test": "eslint --ext .js,.vue . && jest"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -157,6 +156,7 @@
|
|||||||
"consolidate": "0.15.0",
|
"consolidate": "0.15.0",
|
||||||
"copy-webpack-plugin": "4.3.1",
|
"copy-webpack-plugin": "4.3.1",
|
||||||
"css-loader": "0.28.9",
|
"css-loader": "0.28.9",
|
||||||
|
"cssnano": "4.0.0-rc.2",
|
||||||
"eslint": "4.13.1",
|
"eslint": "4.13.1",
|
||||||
"eslint-config-requarks": "1.0.7",
|
"eslint-config-requarks": "1.0.7",
|
||||||
"eslint-config-standard": "11.0.0-beta.0",
|
"eslint-config-standard": "11.0.0-beta.0",
|
||||||
@@ -176,6 +176,7 @@
|
|||||||
"node-dev": "3.1.3",
|
"node-dev": "3.1.3",
|
||||||
"node-sass": "4.7.2",
|
"node-sass": "4.7.2",
|
||||||
"nodemon": "1.14.3",
|
"nodemon": "1.14.3",
|
||||||
|
"postcss-loader": "2.0.10",
|
||||||
"postcss-selector-parser": "3.1.1",
|
"postcss-selector-parser": "3.1.1",
|
||||||
"progress-bar-webpack-plugin": "1.10.0",
|
"progress-bar-webpack-plugin": "1.10.0",
|
||||||
"pug-lint": "2.5.0",
|
"pug-lint": "2.5.0",
|
||||||
@@ -206,6 +207,12 @@
|
|||||||
"webpack-merge": "4.1.1",
|
"webpack-merge": "4.1.1",
|
||||||
"whatwg-fetch": "2.0.3"
|
"whatwg-fetch": "2.0.3"
|
||||||
},
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"Firefox ESR",
|
||||||
|
"not ie < 11"
|
||||||
|
],
|
||||||
"jest": {
|
"jest": {
|
||||||
"testResultsProcessor": "./node_modules/jest-junit",
|
"testResultsProcessor": "./node_modules/jest-junit",
|
||||||
"collectCoverage": false,
|
"collectCoverage": false,
|
||||||
|
|||||||
@@ -21,7 +21,10 @@ html
|
|||||||
script.
|
script.
|
||||||
var siteConfig = !{JSON.stringify(config.site)}
|
var siteConfig = !{JSON.stringify(config.site)}
|
||||||
|
|
||||||
//- JS / CSS
|
//- CSS
|
||||||
|
link(type='text/css', rel='stylesheet', href=config.site.path + 'css/bundle.css')
|
||||||
|
|
||||||
|
//- JS
|
||||||
script(type='text/javascript', src=config.site.path + 'js/manifest.js')
|
script(type='text/javascript', src=config.site.path + 'js/manifest.js')
|
||||||
script(type='text/javascript', src=config.site.path + 'js/vendor.js')
|
script(type='text/javascript', src=config.site.path + 'js/vendor.js')
|
||||||
script(type='text/javascript', src=config.site.path + 'js/client.js')
|
script(type='text/javascript', src=config.site.path + 'js/client.js')
|
||||||
|
|||||||
Reference in New Issue
Block a user