mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #985 from MetaMask/gulp1
Gulp - clean and add "disc" analysis task
This commit is contained in:
commit
d52c046288
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,6 +9,7 @@ test/bower_components
|
|||||||
package
|
package
|
||||||
.DS_Store
|
.DS_Store
|
||||||
builds/
|
builds/
|
||||||
|
disc/
|
||||||
notes.txt
|
notes.txt
|
||||||
app/.DS_Store
|
app/.DS_Store
|
||||||
development/bundle.js
|
development/bundle.js
|
||||||
|
117
gulpfile.js
117
gulpfile.js
@ -1,5 +1,6 @@
|
|||||||
var watchify = require('watchify')
|
var watchify = require('watchify')
|
||||||
var browserify = require('browserify')
|
var browserify = require('browserify')
|
||||||
|
var disc = require('disc')
|
||||||
var gulp = require('gulp')
|
var gulp = require('gulp')
|
||||||
var source = require('vinyl-source-stream')
|
var source = require('vinyl-source-stream')
|
||||||
var buffer = require('vinyl-buffer')
|
var buffer = require('vinyl-buffer')
|
||||||
@ -10,7 +11,6 @@ var jsoneditor = require('gulp-json-editor')
|
|||||||
var zip = require('gulp-zip')
|
var zip = require('gulp-zip')
|
||||||
var assign = require('lodash.assign')
|
var assign = require('lodash.assign')
|
||||||
var livereload = require('gulp-livereload')
|
var livereload = require('gulp-livereload')
|
||||||
var brfs = require('gulp-brfs')
|
|
||||||
var del = require('del')
|
var del = require('del')
|
||||||
var eslint = require('gulp-eslint')
|
var eslint = require('gulp-eslint')
|
||||||
var fs = require('fs')
|
var fs = require('fs')
|
||||||
@ -21,6 +21,7 @@ var replace = require('gulp-replace')
|
|||||||
var disclaimer = fs.readFileSync(path.join(__dirname, 'USER_AGREEMENT.md')).toString()
|
var disclaimer = fs.readFileSync(path.join(__dirname, 'USER_AGREEMENT.md')).toString()
|
||||||
var crypto = require('crypto')
|
var crypto = require('crypto')
|
||||||
var hash = crypto.createHash('sha256')
|
var hash = crypto.createHash('sha256')
|
||||||
|
var mkdirp = require('mkdirp')
|
||||||
|
|
||||||
hash.update(disclaimer)
|
hash.update(disclaimer)
|
||||||
var tosHash = hash.digest('hex')
|
var tosHash = hash.digest('hex')
|
||||||
@ -33,7 +34,6 @@ var debug = gutil.env.debug
|
|||||||
gulp.task('dev:reload', function() {
|
gulp.task('dev:reload', function() {
|
||||||
livereload.listen({
|
livereload.listen({
|
||||||
port: 35729,
|
port: 35729,
|
||||||
// basePath: './dist/firefox/'
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -172,18 +172,27 @@ const jsFiles = [
|
|||||||
'popup',
|
'popup',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// bundle tasks
|
||||||
|
|
||||||
var jsDevStrings = jsFiles.map(jsFile => `dev:js:${jsFile}`)
|
var jsDevStrings = jsFiles.map(jsFile => `dev:js:${jsFile}`)
|
||||||
var jsBuildStrings = jsFiles.map(jsFile => `build:js:${jsFile}`)
|
var jsBuildStrings = jsFiles.map(jsFile => `build:js:${jsFile}`)
|
||||||
|
|
||||||
jsFiles.forEach((jsFile) => {
|
jsFiles.forEach((jsFile) => {
|
||||||
gulp.task(`dev:js:${jsFile}`, bundleTask({ watch: true, filename: `${jsFile}.js` }))
|
gulp.task(`dev:js:${jsFile}`, bundleTask({ watch: true, label: jsFile, filename: `${jsFile}.js` }))
|
||||||
gulp.task(`build:js:${jsFile}`, bundleTask({ watch: false, filename: `${jsFile}.js` }))
|
gulp.task(`build:js:${jsFile}`, bundleTask({ watch: false, label: jsFile, filename: `${jsFile}.js` }))
|
||||||
})
|
})
|
||||||
|
|
||||||
gulp.task('dev:js', gulp.parallel(...jsDevStrings))
|
gulp.task('dev:js', gulp.parallel(...jsDevStrings))
|
||||||
|
|
||||||
gulp.task('build:js', gulp.parallel(...jsBuildStrings))
|
gulp.task('build:js', gulp.parallel(...jsBuildStrings))
|
||||||
|
|
||||||
|
// disc bundle analyzer tasks
|
||||||
|
|
||||||
|
jsFiles.forEach((jsFile) => {
|
||||||
|
gulp.task(`disc:${jsFile}`, bundleTask({ label: jsFile, filename: `${jsFile}.js` }))
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('disc', gulp.parallel(jsFiles.map(jsFile => `disc:${jsFile}`)))
|
||||||
|
|
||||||
|
|
||||||
// clean dist
|
// clean dist
|
||||||
|
|
||||||
@ -193,26 +202,10 @@ gulp.task('clean', function clean() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// zip tasks for distribution
|
// zip tasks for distribution
|
||||||
gulp.task('zip:chrome', () => {
|
gulp.task('zip:chrome', zipTask('chrome'))
|
||||||
return gulp.src('dist/chrome/**')
|
gulp.task('zip:firefox', zipTask('firefox'))
|
||||||
.pipe(zip(`metamask-chrome-${manifest.version}.zip`))
|
gulp.task('zip:edge', zipTask('edge'))
|
||||||
.pipe(gulp.dest('builds'));
|
gulp.task('zip:opera', zipTask('opera'))
|
||||||
})
|
|
||||||
gulp.task('zip:firefox', () => {
|
|
||||||
return gulp.src('dist/firefox/**')
|
|
||||||
.pipe(zip(`metamask-firefox-${manifest.version}.zip`))
|
|
||||||
.pipe(gulp.dest('builds'));
|
|
||||||
})
|
|
||||||
gulp.task('zip:edge', () => {
|
|
||||||
return gulp.src('dist/edge/**')
|
|
||||||
.pipe(zip(`metamask-edge-${manifest.version}.zip`))
|
|
||||||
.pipe(gulp.dest('builds'));
|
|
||||||
})
|
|
||||||
gulp.task('zip:opera', () => {
|
|
||||||
return gulp.src('dist/opera/**')
|
|
||||||
.pipe(zip(`metamask-opera-${manifest.version}.zip`))
|
|
||||||
.pipe(gulp.dest('builds'));
|
|
||||||
})
|
|
||||||
gulp.task('zip', gulp.parallel('zip:chrome', 'zip:firefox', 'zip:edge', 'zip:opera'))
|
gulp.task('zip', gulp.parallel('zip:chrome', 'zip:firefox', 'zip:edge', 'zip:opera'))
|
||||||
|
|
||||||
// high level tasks
|
// high level tasks
|
||||||
@ -243,21 +236,65 @@ function copyTask(opts){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function bundleTask(opts) {
|
function zipTask(target) {
|
||||||
|
return () => {
|
||||||
|
return gulp.src(`dist/${target}/**`)
|
||||||
|
.pipe(zip(`metamask-${target}-${manifest.version}.zip`))
|
||||||
|
.pipe(gulp.dest('builds'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateBundler(opts) {
|
||||||
var browserifyOpts = assign({}, watchify.args, {
|
var browserifyOpts = assign({}, watchify.args, {
|
||||||
entries: ['./app/scripts/'+opts.filename],
|
entries: ['./app/scripts/'+opts.filename],
|
||||||
debug: true,
|
|
||||||
plugin: 'browserify-derequire',
|
plugin: 'browserify-derequire',
|
||||||
|
debug: debug,
|
||||||
|
fullPaths: debug,
|
||||||
})
|
})
|
||||||
|
|
||||||
var bundler = browserify(browserifyOpts)
|
return browserify(browserifyOpts)
|
||||||
bundler.transform('brfs')
|
}
|
||||||
|
|
||||||
|
function discTask(opts) {
|
||||||
|
let bundler = generateBundler(opts)
|
||||||
|
|
||||||
if (opts.watch) {
|
if (opts.watch) {
|
||||||
bundler = watchify(bundler)
|
bundler = watchify(bundler)
|
||||||
bundler.on('update', performBundle) // on any dep update, runs the bundler
|
// on any dep update, runs the bundler
|
||||||
|
bundler.on('update', performBundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
bundler.on('log', gutil.log) // output build logs to terminal
|
// output build logs to terminal
|
||||||
|
bundler.on('log', gutil.log)
|
||||||
|
|
||||||
|
return performBundle
|
||||||
|
|
||||||
|
function performBundle(){
|
||||||
|
// start "disc" build
|
||||||
|
let discDir = path.join(__dirname, 'disc')
|
||||||
|
mkdirp.sync(discDir)
|
||||||
|
let discPath = path.join(discDir, `${opts.label}.html`)
|
||||||
|
|
||||||
|
return (
|
||||||
|
bundler.bundle()
|
||||||
|
.pipe(disc())
|
||||||
|
.pipe(fs.createWriteStream(discPath))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function bundleTask(opts) {
|
||||||
|
let bundler = generateBundler(opts)
|
||||||
|
|
||||||
|
if (opts.watch) {
|
||||||
|
bundler = watchify(bundler)
|
||||||
|
// on any file update, re-runs the bundler
|
||||||
|
bundler.on('update', performBundle)
|
||||||
|
}
|
||||||
|
|
||||||
|
// output build logs to terminal
|
||||||
|
bundler.on('log', gutil.log)
|
||||||
|
|
||||||
return performBundle
|
return performBundle
|
||||||
|
|
||||||
@ -267,21 +304,25 @@ function bundleTask(opts) {
|
|||||||
bundler.bundle()
|
bundler.bundle()
|
||||||
// log errors if they happen
|
// log errors if they happen
|
||||||
.on('error', gutil.log.bind(gutil, 'Browserify Error'))
|
.on('error', gutil.log.bind(gutil, 'Browserify Error'))
|
||||||
|
// convert bundle stream to gulp vinyl stream
|
||||||
.pipe(source(opts.filename))
|
.pipe(source(opts.filename))
|
||||||
.pipe(brfs())
|
// inject variables into bundle
|
||||||
.pipe(replace('GULP_TOS_HASH', tosHash))
|
.pipe(replace('GULP_TOS_HASH', tosHash))
|
||||||
.pipe(replace('\'GULP_METAMASK_DEBUG\'', debug))
|
.pipe(replace('\'GULP_METAMASK_DEBUG\'', debug))
|
||||||
// optional, remove if you don't need to buffer file contents
|
// buffer file contents (?)
|
||||||
.pipe(buffer())
|
.pipe(buffer())
|
||||||
// optional, remove if you dont want sourcemaps
|
// sourcemaps
|
||||||
.pipe(sourcemaps.init({loadMaps: true})) // loads map from browserify file
|
// loads map from browserify file
|
||||||
// Add transformation tasks to the pipeline here.
|
.pipe(sourcemaps.init({loadMaps: true}))
|
||||||
.pipe(sourcemaps.write('./')) // writes .map file
|
// writes .map file
|
||||||
|
.pipe(sourcemaps.write('./'))
|
||||||
|
// write completed bundles
|
||||||
.pipe(gulp.dest('./dist/firefox/scripts'))
|
.pipe(gulp.dest('./dist/firefox/scripts'))
|
||||||
.pipe(gulp.dest('./dist/chrome/scripts'))
|
.pipe(gulp.dest('./dist/chrome/scripts'))
|
||||||
.pipe(gulp.dest('./dist/edge/scripts'))
|
.pipe(gulp.dest('./dist/edge/scripts'))
|
||||||
.pipe(gulp.dest('./dist/opera/scripts'))
|
.pipe(gulp.dest('./dist/opera/scripts'))
|
||||||
.pipe(gulpif(!disableLiveReload,livereload()))
|
// finally, trigger live reload
|
||||||
|
.pipe(gulpif(!disableLiveReload, livereload()))
|
||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
"lint": "gulp lint",
|
"lint": "gulp lint",
|
||||||
"buildCiUnits": "node test/integration/index.js",
|
"buildCiUnits": "node test/integration/index.js",
|
||||||
"dev": "gulp dev --debug",
|
"dev": "gulp dev --debug",
|
||||||
|
"disc": "gulp disc --debug",
|
||||||
"dist": "gulp dist --disableLiveReload",
|
"dist": "gulp dist --disableLiveReload",
|
||||||
"test": "npm run fastTest && npm run ci && npm run lint",
|
"test": "npm run fastTest && npm run ci && npm run lint",
|
||||||
"fastTest": "METAMASK_ENV=test mocha --require test/helper.js --compilers js:babel-register --recursive \"test/unit/**/*.js\"",
|
"fastTest": "METAMASK_ENV=test mocha --require test/helper.js --compilers js:babel-register --recursive \"test/unit/**/*.js\"",
|
||||||
@ -43,6 +44,7 @@
|
|||||||
"copy-to-clipboard": "^2.0.0",
|
"copy-to-clipboard": "^2.0.0",
|
||||||
"debounce": "^1.0.0",
|
"debounce": "^1.0.0",
|
||||||
"denodeify": "^1.2.1",
|
"denodeify": "^1.2.1",
|
||||||
|
"disc": "^1.3.2",
|
||||||
"dnode": "^1.2.2",
|
"dnode": "^1.2.2",
|
||||||
"end-of-stream": "^1.1.0",
|
"end-of-stream": "^1.1.0",
|
||||||
"ensnare": "^1.0.0",
|
"ensnare": "^1.0.0",
|
||||||
@ -65,6 +67,7 @@
|
|||||||
"menu-droppo": "^1.1.0",
|
"menu-droppo": "^1.1.0",
|
||||||
"metamask-logo": "^2.1.2",
|
"metamask-logo": "^2.1.2",
|
||||||
"mississippi": "^1.2.0",
|
"mississippi": "^1.2.0",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
"multiplex": "^6.7.0",
|
"multiplex": "^6.7.0",
|
||||||
"once": "^1.3.3",
|
"once": "^1.3.3",
|
||||||
"ping-pong-stream": "^1.0.0",
|
"ping-pong-stream": "^1.0.0",
|
||||||
@ -108,7 +111,6 @@
|
|||||||
"del": "^2.2.0",
|
"del": "^2.2.0",
|
||||||
"fs-promise": "^1.0.0",
|
"fs-promise": "^1.0.0",
|
||||||
"gulp": "github:gulpjs/gulp#4.0",
|
"gulp": "github:gulpjs/gulp#4.0",
|
||||||
"gulp-brfs": "^0.1.0",
|
|
||||||
"gulp-if": "^2.0.1",
|
"gulp-if": "^2.0.1",
|
||||||
"gulp-json-editor": "^2.2.1",
|
"gulp-json-editor": "^2.2.1",
|
||||||
"gulp-livereload": "^3.8.1",
|
"gulp-livereload": "^3.8.1",
|
||||||
|
Loading…
Reference in New Issue
Block a user