aboutsummaryrefslogtreecommitdiffstats
path: root/gulpfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'gulpfile.js')
-rw-r--r--gulpfile.js46
1 files changed, 45 insertions, 1 deletions
diff --git a/gulpfile.js b/gulpfile.js
index c3d9019ff..1487f717e 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -26,6 +26,16 @@ const pify = require('pify')
const gulpMultiProcess = require('gulp-multi-process')
const endOfStream = pify(require('end-of-stream'))
+const packageJSON = require('./package.json')
+const dependencies = Object.keys(packageJSON && packageJSON.dependencies || {})
+const materialUIDependencies = ['@material-ui/core']
+const reactDepenendencies = dependencies.filter(dep => dep.match(/react/))
+
+const uiDependenciesToBundle = [
+ ...materialUIDependencies,
+ ...reactDepenendencies,
+]
+
function gulpParallel (...args) {
return function spawnGulpChildProcess (cb) {
return gulpMultiProcess(args, cb, true)
@@ -283,11 +293,32 @@ const buildJsFiles = [
]
// bundle tasks
+createTasksForBuildJsUIDeps({ dependenciesToBundle: uiDependenciesToBundle, filename: 'libs' })
createTasksForBuildJsExtension({ buildJsFiles, taskPrefix: 'dev:extension:js', devMode: true })
createTasksForBuildJsExtension({ buildJsFiles, taskPrefix: 'build:extension:js' })
createTasksForBuildJsMascara({ taskPrefix: 'build:mascara:js' })
createTasksForBuildJsMascara({ taskPrefix: 'dev:mascara:js', devMode: true })
+function createTasksForBuildJsUIDeps ({ dependenciesToBundle, filename }) {
+ const destinations = browserPlatforms.map(platform => `./dist/${platform}`)
+
+ const bundleTaskOpts = Object.assign({
+ buildSourceMaps: true,
+ sourceMapDir: '../sourcemaps',
+ minifyBuild: true,
+ devMode: false,
+ })
+
+ gulp.task('build:extension:js:uideps', bundleTask(Object.assign({
+ label: filename,
+ filename: `${filename}.js`,
+ destinations,
+ buildLib: true,
+ dependenciesToBundle: uiDependenciesToBundle,
+ }, bundleTaskOpts)))
+}
+
+
function createTasksForBuildJsExtension ({ buildJsFiles, taskPrefix, devMode, bundleTaskOpts = {} }) {
// inpage must be built before all other scripts:
const rootDir = './app/scripts'
@@ -330,6 +361,7 @@ function createTasksForBuildJs ({ rootDir, taskPrefix, bundleTaskOpts, destinati
label: jsFile,
filename: `${jsFile}.js`,
filepath: `${rootDir}/${jsFile}.js`,
+ externalDependencies: jsFile === 'ui' && !bundleTaskOpts.devMode && uiDependenciesToBundle,
destinations,
}, bundleTaskOpts)))
})
@@ -406,6 +438,7 @@ gulp.task('build',
'clean',
'build:scss',
gulpParallel(
+ 'build:extension:js:uideps',
'build:extension:js',
'build:mascara:js',
'copy'
@@ -454,14 +487,25 @@ function zipTask (target) {
function generateBundler (opts, performBundle) {
const browserifyOpts = assign({}, watchify.args, {
- entries: [opts.filepath],
plugin: 'browserify-derequire',
debug: opts.buildSourceMaps,
fullPaths: opts.buildWithFullPaths,
})
+ if (!opts.buildLib) {
+ browserifyOpts['entries'] = [opts.filepath]
+ }
+
let bundler = browserify(browserifyOpts)
+ if (opts.buildLib) {
+ bundler = bundler.require(opts.dependenciesToBundle)
+ }
+
+ if (opts.externalDependencies) {
+ bundler = bundler.external(opts.externalDependencies)
+ }
+
// inject variables into bundle
bundler.transform(envify({
METAMASK_DEBUG: opts.devMode,