1 | const path = require('path');
|
2 | const utils = require('./lib/utils.js');
|
3 | const browserify = require('browserify');
|
4 | const transform = require('./lib/transforms');
|
5 | const getOpts = require('./lib/getopts.js');
|
6 |
|
7 | module.exports = (filepath)=>{
|
8 | const fullTargetPath = path.resolve(path.dirname(utils.getCaller().file), filepath);
|
9 | const opts = getOpts({app:'', entry:{}}, fullTargetPath);
|
10 | return new Promise((resolve, reject)=>{
|
11 | browserify({
|
12 | standalone : '___',
|
13 | paths : opts.shared,
|
14 | ignoreMissing : true,
|
15 | node : true,
|
16 | postFilter : (id, filepath, pkg)=>utils.shouldBundle(filepath, id, opts),
|
17 | })
|
18 | .require(fullTargetPath)
|
19 | .transform((file)=>transform(file, opts), {global :true})
|
20 | .bundle((err, buf)=>{
|
21 | if(err) return reject(err);
|
22 | const code = `'use strict'; let module = {}; (function() { ${buf.toString()}\nreturn module.exports;}())`;
|
23 | return resolve(eval(code));
|
24 | });
|
25 | })
|
26 | }; |
\ | No newline at end of file |