Skip to content

Commit e84d2d6

Browse files
committed
Get webpack working with the JS build
1 parent c5f6b1a commit e84d2d6

File tree

5 files changed

+673
-45
lines changed

5 files changed

+673
-45
lines changed

.babelrc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"presets": ["es2015"],
3-
"compact": true,
4-
"minified": true,
5-
"only": "public/themes/pterodactyl/js/frontend/files/src/*.js",
6-
"sourceMaps": "inline",
7-
"comments": false
2+
"presets": [
3+
"@babel/preset-env"
4+
],
5+
"plugins": [
6+
"@babel/plugin-proposal-object-rest-spread"
7+
]
88
}

gulpfile.js

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,31 +48,13 @@ function styles() {
4848
.pipe(gulp.dest(paths.manifest));
4949
}
5050

51-
/**
52-
* Build all of the waiting scripts.
53-
*/
54-
function scripts() {
55-
return webpackStream(webpackConfig)
56-
.pipe(babel())
57-
.pipe(gulpif(argv.production, uglify()))
58-
.pipe(concat('bundle.js'))
59-
.pipe(rev())
60-
.pipe(gulp.dest(paths.scripts.dest))
61-
.pipe(rev.manifest(paths.manifest + '/manifest.json', {merge: true, base: paths.manifest}))
62-
.pipe(gulp.dest(paths.manifest));
63-
}
64-
6551
/**
6652
* Provides watchers.
6753
*/
6854
function watch() {
6955
gulp.watch(['./resources/assets/styles/**/*.css'], gulp.series(function cleanStyles() {
7056
return del(['./public/assets/css/**/*.css']);
7157
}, styles));
72-
73-
gulp.watch(paths.scripts.watch, gulp.series(function cleanScripts() {
74-
return del(['./public/assets/scripts/**/*.js']);
75-
}, scripts));
7658
}
7759

7860
/**
@@ -90,7 +72,7 @@ function i18n() {
9072

9173
/**
9274
* Generate the routes file to be used in Vue files.
93-
*
75+
*
9476
* @returns {Promise<any>}
9577
*/
9678
function routes() {
@@ -112,9 +94,7 @@ exports.clean = clean;
11294
exports.i18n = i18n;
11395
exports.routes = routes;
11496
exports.styles = styles;
115-
exports.scripts = scripts;
11697
exports.watch = watch;
11798

11899
gulp.task('components', gulp.parallel(i18n, routes));
119-
gulp.task('scripts', gulp.series(clean, scripts));
120-
gulp.task('default', gulp.series(clean, i18n, routes, styles, scripts));
100+
gulp.task('default', gulp.series(clean, i18n, routes, styles));

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
"vuex-i18n": "^1.10.5"
99
},
1010
"devDependencies": {
11+
"@babel/core": "^7.0.0-beta.49",
12+
"@babel/preset-env": "^7.0.0-beta.49",
1113
"autoprefixer": "^8.2.0",
1214
"axios": "^0.18.0",
1315
"babel-cli": "6.18.0",
1416
"babel-core": "^6.26.0",
15-
"babel-loader": "^7.1.4",
17+
"babel-loader": "^8.0.0-beta",
1618
"babel-plugin-transform-object-assign": "^6.22.0",
1719
"babel-plugin-transform-runtime": "^6.23.0",
1820
"babel-plugin-transform-strict-mode": "^6.18.0",
@@ -39,6 +41,7 @@
3941
"postcss-preset-env": "^3.4.0",
4042
"postcss-scss": "^1.0.4",
4143
"tailwindcss": "^0.5.1",
44+
"uglifyjs-webpack-plugin": "^1.2.5",
4245
"vee-validate": "^2.0.9",
4346
"vue-devtools": "^3.1.9",
4447
"vue-feather-icons": "^4.7.1",
@@ -47,6 +50,8 @@
4750
"vue-template-compiler": "^2.5.16",
4851
"vueify-insert-css": "^1.0.0",
4952
"webpack": "^4.4.1",
53+
"webpack-cli": "^3.0.1",
54+
"webpack-manifest-plugin": "^2.0.3",
5055
"webpack-serve": "^1.0.2",
5156
"webpack-stream": "^4.0.3",
5257
"yargs": "^11.0.0"

webpack.config.js

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1+
const path = require('path');
2+
const ManifestPlugin = require('webpack-manifest-plugin');
3+
const UglifyJsPLugin = require('uglifyjs-webpack-plugin');
4+
15
module.exports = {
26
mode: 'development',
7+
devtool: 'source-map',
38
performance: {
49
hints: false,
510
},
611
entry: {
7-
main: './resources/assets/scripts/app.js',
12+
bundle: './resources/assets/scripts/app.js',
813
},
914
output: {
10-
path: '/dist',
11-
filename: 'webpack.build.js',
15+
path: path.resolve(__dirname, 'public/assets/scripts'),
16+
filename: 'bundle-[chunkhash].js',
1217
},
1318
module: {
1419
rules: [
@@ -26,10 +31,12 @@ module.exports = {
2631
},
2732
{
2833
test: /\.js$/,
29-
exclude: /(node_modules|vendor)/,
34+
include: [
35+
path.resolve(__dirname, 'resources/assets/scripts'),
36+
],
3037
use: [{
31-
loader: "babel-loader",
32-
options: { presets: ['es2015'] }
38+
loader: 'babel-loader',
39+
options: {babelrc: true}
3340
}]
3441
},
3542
]
@@ -40,4 +47,19 @@ module.exports = {
4047
},
4148
extensions: ['*', '.js', '.vue', '.json']
4249
},
50+
plugins: [
51+
new UglifyJsPLugin({
52+
include: [
53+
path.resolve(__dirname, 'resources/assets/scripts'),
54+
],
55+
parallel: 2,
56+
sourceMap: false,
57+
uglifyOptions: {
58+
ecma: 5,
59+
toplevel: true,
60+
safari10: true,
61+
}
62+
}),
63+
new ManifestPlugin(),
64+
]
4365
};

0 commit comments

Comments
 (0)