Merge branch 'webpack'
This commit is contained in:
93
gulpfile.js
93
gulpfile.js
@@ -3,8 +3,6 @@
|
||||
var gulp = require('gulp');
|
||||
var prettify = require('gulp-jsbeautifier');
|
||||
var diff = require('gulp-diff');
|
||||
var webpack = require('webpack-stream');
|
||||
var named = require('vinyl-named');
|
||||
var esformatter = require('gulp-esformatter');
|
||||
var esformatter_origin = require('esformatter');
|
||||
var through = require('through2');
|
||||
@@ -13,6 +11,8 @@ var electron = require('electron-connect').server.create({
|
||||
});
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const spawn = require('child_process').spawn;
|
||||
|
||||
const distPackageAuthor = 'Mattermost, Inc.';
|
||||
|
||||
@@ -87,7 +87,7 @@ gulp.task('prettify:jsx:verify', function() {
|
||||
});
|
||||
|
||||
|
||||
gulp.task('build', ['sync-meta', 'webpack', 'copy'], function(cb) {
|
||||
gulp.task('build', ['sync-meta', 'copy'], function(cb) {
|
||||
const appPackageJson = require('./src/package.json');
|
||||
const distPackageJson = Object.assign({}, appPackageJson, {
|
||||
author: {
|
||||
@@ -98,72 +98,6 @@ gulp.task('build', ['sync-meta', 'webpack', 'copy'], function(cb) {
|
||||
fs.writeFile('./dist/package.json', JSON.stringify(distPackageJson, null, ' '), cb);
|
||||
});
|
||||
|
||||
gulp.task('webpack', ['webpack:main', 'webpack:browser', 'webpack:webview']);
|
||||
|
||||
gulp.task('webpack:browser', function() {
|
||||
return gulp.src('src/browser/*.jsx')
|
||||
.pipe(named())
|
||||
.pipe(webpack({
|
||||
module: {
|
||||
loaders: [{
|
||||
test: /\.json$/,
|
||||
loader: 'json'
|
||||
}, {
|
||||
test: /\.jsx$/,
|
||||
loader: 'babel',
|
||||
query: {
|
||||
presets: ['react']
|
||||
}
|
||||
}]
|
||||
},
|
||||
output: {
|
||||
filename: '[name].js'
|
||||
},
|
||||
node: {
|
||||
__filename: false,
|
||||
__dirname: false
|
||||
},
|
||||
target: 'electron-renderer'
|
||||
}))
|
||||
.pipe(gulp.dest('dist/browser/'));
|
||||
});
|
||||
|
||||
gulp.task('webpack:main', function() {
|
||||
return gulp.src('src/main.js')
|
||||
.pipe(webpack({
|
||||
module: {
|
||||
loaders: [{
|
||||
test: /\.json$/,
|
||||
loader: 'json'
|
||||
}]
|
||||
},
|
||||
output: {
|
||||
filename: '[name].js'
|
||||
},
|
||||
node: {
|
||||
__filename: false,
|
||||
__dirname: false
|
||||
},
|
||||
target: 'electron-main',
|
||||
externals: {
|
||||
remote: true // for electron-connect
|
||||
}
|
||||
}))
|
||||
.pipe(gulp.dest('dist/'));
|
||||
});
|
||||
|
||||
gulp.task('webpack:webview', function() {
|
||||
return gulp.src('src/browser/webview/mattermost.js')
|
||||
.pipe(named())
|
||||
.pipe(webpack({
|
||||
output: {
|
||||
filename: '[name].js'
|
||||
},
|
||||
target: 'electron'
|
||||
}))
|
||||
.pipe(gulp.dest('dist/browser/webview'));
|
||||
});
|
||||
|
||||
gulp.task('copy', ['copy:resources', 'copy:html/css', 'copy:modules']);
|
||||
|
||||
gulp.task('copy:resources', function() {
|
||||
@@ -181,12 +115,29 @@ gulp.task('copy:modules', function() {
|
||||
.pipe(gulp.dest('dist/browser/modules/bootstrap'));
|
||||
});
|
||||
|
||||
gulp.task('watch', ['build'], function() {
|
||||
function spawnWebpack(config, cb) {
|
||||
const ext = process.platform === 'win32' ? '.cmd' : ''
|
||||
spawn(path.resolve(`./node_modules/.bin/webpack${ext}`), ['--config', config], {
|
||||
stdio: 'inherit'
|
||||
}).on('exit', (code) => {
|
||||
cb(code);
|
||||
});
|
||||
}
|
||||
|
||||
gulp.task('webpack:main', (cb) => {
|
||||
spawnWebpack('webpack.config.main.js', cb);
|
||||
});
|
||||
|
||||
gulp.task('webpack:renderer', (cb) => {
|
||||
spawnWebpack('webpack.config.renderer.js', cb);
|
||||
});
|
||||
|
||||
gulp.task('watch', ['build', 'webpack:main', 'webpack:renderer'], function() {
|
||||
var options = ['--livereload'];
|
||||
electron.start(options);
|
||||
|
||||
gulp.watch(['src/main.js', 'src/main/**/*.js', 'src/common/**/*.js'], ['webpack:main']);
|
||||
gulp.watch(['src/browser/**/*.js', 'src/browser/**/*.jsx'], ['webpack:browser', 'webpack:webview']);
|
||||
gulp.watch(['src/browser/**/*.js', 'src/browser/**/*.jsx'], ['webpack:renderer']);
|
||||
gulp.watch(['src/browser/**/*.css', 'src/browser/**/*.html', 'src/resources/**/*.png'], ['copy']);
|
||||
|
||||
gulp.watch(['dist/main.js', 'dist/resources/**'], function() {
|
||||
|
11
package.json
11
package.json
@@ -19,11 +19,13 @@
|
||||
"scripts": {
|
||||
"install": "cd src && npm install",
|
||||
"postinstall": "npm run build",
|
||||
"build": "gulp build",
|
||||
"build": "npm run build:main && npm run build:renderer && gulp build",
|
||||
"build:main": "cross-env NODE_ENV=production webpack --config webpack.config.main.js",
|
||||
"build:renderer": "cross-env NODE_ENV=production webpack --config webpack.config.renderer.js",
|
||||
"start": "electron dist",
|
||||
"watch": "gulp watch",
|
||||
"serve": "gulp watch",
|
||||
"test": "gulp build && mocha --reporter mocha-circleci-reporter --recursive test/specs && gulp prettify:verify",
|
||||
"test": "npm run build && mocha --reporter mocha-circleci-reporter --recursive test/specs && gulp prettify:verify",
|
||||
"package:all": "npm run package:windows && npm run package:mac && npm run package:linux",
|
||||
"package:windows": "build --win --x64 --ia32 --em.name=mattermost && npm run manipulate-windows-zip",
|
||||
"package:mac": "build --mac --x64 --ia32",
|
||||
@@ -38,6 +40,7 @@
|
||||
"babel-preset-react": "^6.5.0",
|
||||
"chai": "^3.5.0",
|
||||
"chai-as-promised": "^5.3.0",
|
||||
"cross-env": "^3.1.2",
|
||||
"devtron": "^1.3.0",
|
||||
"electron-builder": "^7.11.2",
|
||||
"electron-connect": "~0.6.0",
|
||||
@@ -52,11 +55,9 @@
|
||||
"mocha": "^3.0.2",
|
||||
"mocha-circleci-reporter": "0.0.2",
|
||||
"spectron": "~3.4.0",
|
||||
"style-loader": "^0.13.1",
|
||||
"through2": "^2.0.1",
|
||||
"vinyl-named": "^1.1.0",
|
||||
"webpack": "^1.13.1",
|
||||
"webpack-stream": "^3.2.0"
|
||||
"webpack-merge": "^0.14.1"
|
||||
},
|
||||
"build": {
|
||||
"appId": "com.mattermost.desktop",
|
||||
|
7
webpack.config.base.js
Normal file
7
webpack.config.base.js
Normal file
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const isProduction = process.env.NODE_ENV === 'production';
|
||||
|
||||
module.exports = {
|
||||
devtool: isProduction ? false : '#inline-source-map'
|
||||
};
|
25
webpack.config.main.js
Normal file
25
webpack.config.main.js
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
const merge = require('webpack-merge');
|
||||
const base = require('./webpack.config.base');
|
||||
|
||||
module.exports = merge(base, {
|
||||
entry: './src/main.js',
|
||||
output: {
|
||||
filename: './dist/main.js'
|
||||
},
|
||||
module: {
|
||||
loaders: [{
|
||||
test: /\.json$/,
|
||||
loader: 'json'
|
||||
}]
|
||||
},
|
||||
node: {
|
||||
__filename: false,
|
||||
__dirname: false
|
||||
},
|
||||
target: 'electron-main',
|
||||
externals: {
|
||||
remote: true // for electron-connect
|
||||
}
|
||||
});
|
33
webpack.config.renderer.js
Normal file
33
webpack.config.renderer.js
Normal file
@@ -0,0 +1,33 @@
|
||||
'use strict';
|
||||
|
||||
const merge = require('webpack-merge');
|
||||
const base = require('./webpack.config.base');
|
||||
|
||||
module.exports = merge(base, {
|
||||
entry: {
|
||||
index: './src/browser/index.jsx',
|
||||
settings: './src/browser/settings.jsx',
|
||||
'webview/mattermost': './src/browser/webview/mattermost.js'
|
||||
},
|
||||
output: {
|
||||
path: './dist/browser',
|
||||
filename: '[name].js'
|
||||
},
|
||||
module: {
|
||||
loaders: [{
|
||||
test: /\.json$/,
|
||||
loader: 'json'
|
||||
}, {
|
||||
test: /\.jsx$/,
|
||||
loader: 'babel',
|
||||
query: {
|
||||
presets: ['react']
|
||||
}
|
||||
}]
|
||||
},
|
||||
node: {
|
||||
__filename: false,
|
||||
__dirname: false
|
||||
},
|
||||
target: 'electron-renderer'
|
||||
});
|
Reference in New Issue
Block a user