improve webpack config
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules
|
||||||
/dist
|
/dist
|
||||||
|
/docs
|
||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
.env.local
|
.env.local
|
||||||
|
|||||||
18
package.json
18
package.json
@@ -3,10 +3,19 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "A rich-text editor for Vue.js",
|
"description": "A rich-text editor for Vue.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "dist/index.js",
|
"main": "dist/tiptap.min.js",
|
||||||
|
"files": [
|
||||||
|
"src",
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/heyscrumpy/tiptap.git"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "babel-node webpack/server.js --env=development",
|
"start": "babel-node webpack/server.js --env=development",
|
||||||
"build": "babel-node webpack/build.js --env=production"
|
"build:package": "babel-node webpack/build.package.js --env=production",
|
||||||
|
"build:examples": "babel-node webpack/build.examples.js --env=production"
|
||||||
},
|
},
|
||||||
"babel": {
|
"babel": {
|
||||||
"presets": [
|
"presets": [
|
||||||
@@ -53,7 +62,6 @@
|
|||||||
"imagemin-webpack-plugin": "^2.1.5",
|
"imagemin-webpack-plugin": "^2.1.5",
|
||||||
"mini-css-extract-plugin": "^0.4.1",
|
"mini-css-extract-plugin": "^0.4.1",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"modernizr-loader": "1.0.1",
|
|
||||||
"node-sass": "^4.9.1",
|
"node-sass": "^4.9.1",
|
||||||
"optimize-css-assets-webpack-plugin": "^5.0.0",
|
"optimize-css-assets-webpack-plugin": "^5.0.0",
|
||||||
"ora": "^3.0.0",
|
"ora": "^3.0.0",
|
||||||
@@ -62,6 +70,7 @@
|
|||||||
"postcss-scss": "^2.0.0",
|
"postcss-scss": "^2.0.0",
|
||||||
"sass-loader": "^7.0.3",
|
"sass-loader": "^7.0.3",
|
||||||
"style-loader": "^0.22.1",
|
"style-loader": "^0.22.1",
|
||||||
|
"vue": "^2.5.17",
|
||||||
"vue-loader": "^15.2.4",
|
"vue-loader": "^15.2.4",
|
||||||
"vue-style-loader": "^4.1.0",
|
"vue-style-loader": "^4.1.0",
|
||||||
"vue-template-compiler": "^2.5.13",
|
"vue-template-compiler": "^2.5.13",
|
||||||
@@ -85,7 +94,6 @@
|
|||||||
"prosemirror-state": "^1.2.1",
|
"prosemirror-state": "^1.2.1",
|
||||||
"prosemirror-tables": "^0.7.6",
|
"prosemirror-tables": "^0.7.6",
|
||||||
"prosemirror-utils": "^0.6.5",
|
"prosemirror-utils": "^0.6.5",
|
||||||
"prosemirror-view": "^1.4.3",
|
"prosemirror-view": "^1.4.3"
|
||||||
"vue": "^2.5.17"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
webpack/build.examples.js
Normal file
24
webpack/build.examples.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import ora from 'ora'
|
||||||
|
import webpack from 'webpack'
|
||||||
|
import config from './webpack.examples.config'
|
||||||
|
|
||||||
|
const spinner = ora('Building …')
|
||||||
|
|
||||||
|
export default new Promise((resolve, reject) => {
|
||||||
|
spinner.start()
|
||||||
|
|
||||||
|
webpack(config, (error, stats) => {
|
||||||
|
if (error) {
|
||||||
|
return reject(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stats.hasErrors()) {
|
||||||
|
process.stdout.write(stats.toString() + "\n");
|
||||||
|
return reject(new Error('Build failed with errors.'))
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolve('Build complete.')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(success => spinner.succeed(success))
|
||||||
|
.catch(error => spinner.fail(error))
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import ora from 'ora'
|
import ora from 'ora'
|
||||||
import webpack from 'webpack'
|
import webpack from 'webpack'
|
||||||
import config from './webpack.config'
|
import config from './webpack.package.config'
|
||||||
|
|
||||||
const spinner = ora('Building …')
|
const spinner = ora('Building …')
|
||||||
|
|
||||||
@@ -4,21 +4,13 @@ import webpack from 'webpack'
|
|||||||
import httpProxyMiddleware from 'http-proxy-middleware'
|
import httpProxyMiddleware from 'http-proxy-middleware'
|
||||||
import webpackDevMiddleware from 'webpack-dev-middleware'
|
import webpackDevMiddleware from 'webpack-dev-middleware'
|
||||||
import webpackHotMiddleware from 'webpack-hot-middleware'
|
import webpackHotMiddleware from 'webpack-hot-middleware'
|
||||||
import config from './webpack.config'
|
import config from './webpack.examples.config'
|
||||||
import { sassImport } from './utilities'
|
import { sassImport } from './utilities'
|
||||||
import { srcPath, sassImportPath } from './paths'
|
import { srcPath, sassImportPath } from './paths'
|
||||||
|
|
||||||
const bundler = webpack(config)
|
const bundler = webpack(config)
|
||||||
const middlewares = []
|
const middlewares = []
|
||||||
|
|
||||||
middlewares.push(httpProxyMiddleware('/api', {
|
|
||||||
target: 'http://local.app.scrumpy.io/api',
|
|
||||||
changeOrigin: true,
|
|
||||||
pathRewrite: {
|
|
||||||
'^/api': '',
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
|
|
||||||
// add webpack stuff
|
// add webpack stuff
|
||||||
middlewares.push(webpackDevMiddleware(bundler, {
|
middlewares.push(webpackDevMiddleware(bundler, {
|
||||||
publicPath: config.output.publicPath,
|
publicPath: config.output.publicPath,
|
||||||
@@ -32,7 +24,7 @@ middlewares.push(webpackDevMiddleware(bundler, {
|
|||||||
middlewares.push(webpackHotMiddleware(bundler))
|
middlewares.push(webpackHotMiddleware(bundler))
|
||||||
|
|
||||||
// start browsersync
|
// start browsersync
|
||||||
const url = 'http://local.app.scrumpy.io'
|
const url = 'http://localhost'
|
||||||
const bs = browserSync.create()
|
const bs = browserSync.create()
|
||||||
const server = bs.init({
|
const server = bs.init({
|
||||||
server: {
|
server: {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import ImageminWebpackPlugin from 'imagemin-webpack-plugin'
|
|||||||
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
|
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
|
||||||
import OptimizeCssAssetsPlugin from 'optimize-css-assets-webpack-plugin'
|
import OptimizeCssAssetsPlugin from 'optimize-css-assets-webpack-plugin'
|
||||||
import { ifDev, ifProd, removeEmpty } from './utilities'
|
import { ifDev, ifProd, removeEmpty } from './utilities'
|
||||||
import { rootPath, srcPath, examplesSrcPath, examplesBuildPath, buildPath } from './paths'
|
import { rootPath, examplesSrcPath, examplesBuildPath } from './paths'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ export default {
|
|||||||
path: `${examplesBuildPath}/`,
|
path: `${examplesBuildPath}/`,
|
||||||
filename: `assets/js/[name]${ifProd('.[hash]', '')}.js`,
|
filename: `assets/js/[name]${ifProd('.[hash]', '')}.js`,
|
||||||
chunkFilename: `assets/js/[name]${ifProd('.[chunkhash]', '')}.js`,
|
chunkFilename: `assets/js/[name]${ifProd('.[chunkhash]', '')}.js`,
|
||||||
publicPath: '',
|
publicPath: '/',
|
||||||
},
|
},
|
||||||
|
|
||||||
resolve: {
|
resolve: {
|
||||||
@@ -53,10 +53,6 @@ export default {
|
|||||||
|
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
|
||||||
test: /\.modernizr$/,
|
|
||||||
loader: 'modernizr-loader',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
test: /\.vue$/,
|
test: /\.vue$/,
|
||||||
loader: 'vue-loader',
|
loader: 'vue-loader',
|
||||||
@@ -145,14 +141,6 @@ export default {
|
|||||||
// enable hot reloading
|
// enable hot reloading
|
||||||
ifDev(new webpack.HotModuleReplacementPlugin()),
|
ifDev(new webpack.HotModuleReplacementPlugin()),
|
||||||
|
|
||||||
// make some packages available everywhere
|
|
||||||
new webpack.ProvidePlugin({
|
|
||||||
// $: 'jquery',
|
|
||||||
// jQuery: 'jquery',
|
|
||||||
// 'window.jQuery': 'jquery',
|
|
||||||
collect: 'collect.js',
|
|
||||||
}),
|
|
||||||
|
|
||||||
// html
|
// html
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
filename: 'index.html',
|
filename: 'index.html',
|
||||||
63
webpack/webpack.package.config.js
Normal file
63
webpack/webpack.package.config.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import path from 'path'
|
||||||
|
import { VueLoaderPlugin } from 'vue-loader'
|
||||||
|
import { ifDev, removeEmpty } from './utilities'
|
||||||
|
import { rootPath, srcPath, buildPath } from './paths'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
mode: ifDev('development', 'production'),
|
||||||
|
|
||||||
|
entry: {
|
||||||
|
tiptap: removeEmpty([
|
||||||
|
ifDev('webpack-hot-middleware/client?reload=true'),
|
||||||
|
`${srcPath}/index.js`,
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
|
||||||
|
output: {
|
||||||
|
path: `${buildPath}/`,
|
||||||
|
filename: '[name].min.js',
|
||||||
|
publicPath: '/',
|
||||||
|
},
|
||||||
|
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.scss', '.vue'],
|
||||||
|
alias: {
|
||||||
|
vue$: 'vue/dist/vue.esm.js',
|
||||||
|
tiptap: path.resolve(rootPath, '../src'),
|
||||||
|
},
|
||||||
|
modules: [
|
||||||
|
srcPath,
|
||||||
|
path.resolve(rootPath, '../node_modules'),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
devtool: ifDev('eval-source-map', 'source-map'),
|
||||||
|
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.vue$/,
|
||||||
|
loader: 'vue-loader',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.js$/,
|
||||||
|
loader: ifDev('babel-loader?cacheDirectory=true', 'babel-loader'),
|
||||||
|
exclude: /node_modules/,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
externals: {
|
||||||
|
vue: 'vue',
|
||||||
|
},
|
||||||
|
|
||||||
|
plugins: removeEmpty([
|
||||||
|
new VueLoaderPlugin(),
|
||||||
|
]),
|
||||||
|
|
||||||
|
node: {
|
||||||
|
fs: 'empty',
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5411,10 +5411,6 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "0.0.8"
|
minimist "0.0.8"
|
||||||
|
|
||||||
modernizr-loader@1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/modernizr-loader/-/modernizr-loader-1.0.1.tgz#e52a6f9a12578b944abbd6cbd65c863ea4a83f49"
|
|
||||||
|
|
||||||
move-concurrently@^1.0.1:
|
move-concurrently@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
||||||
|
|||||||
Reference in New Issue
Block a user