You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				| require! {
 | |
|   '../library/fn/promise': Promise
 | |
|   './config': {list, experimental, libraryBlacklist, es5SpecialCase, banner}
 | |
|   fs: {readFile, writeFile, unlink}
 | |
|   path: {basename, dirname, join}
 | |
|   webpack, temp
 | |
| }
 | |
| 
 | |
| module.exports = ({modules = [], blacklist = [], library = no, umd = on})->
 | |
|   resolve, reject <~! new Promise _
 | |
|   let @ = modules.reduce ((memo, it)-> memo[it] = on; memo), {}
 | |
|     if @exp => for experimental => @[..] = on
 | |
|     if @es5 => for es5SpecialCase => @[..] = on
 | |
|     for ns of @
 | |
|       if @[ns]
 | |
|         for name in list
 | |
|           if name.indexOf("#ns.") is 0 and name not in experimental
 | |
|             @[name] = on
 | |
| 
 | |
|     if library => blacklist ++= libraryBlacklist
 | |
|     for ns in blacklist
 | |
|       for name in list
 | |
|         if name is ns or name.indexOf("#ns.") is 0
 | |
|           @[name] = no
 | |
| 
 | |
|     TARGET = temp.path {suffix: '.js'}
 | |
| 
 | |
|     err, info <~! webpack do
 | |
|       entry: list.filter(~> @[it]).map ~>
 | |
|         if library => join __dirname, '..', 'library', 'modules', it
 | |
|         else join __dirname, '..', 'modules', it
 | |
|       output:
 | |
|         path: dirname TARGET
 | |
|         filename: basename "./#TARGET"
 | |
|     if err => return reject err
 | |
| 
 | |
|     err, script <~! readFile TARGET
 | |
|     if err => return reject err
 | |
| 
 | |
|     err <~! unlink TARGET
 | |
|     if err => return reject err
 | |
| 
 | |
|     if umd
 | |
|       exportScript = """
 | |
|         // CommonJS export
 | |
|         if (typeof module != 'undefined' && module.exports) module.exports = __e;
 | |
|         // RequireJS export
 | |
|         else if (typeof define == 'function' && define.amd) define(function () { return __e; });
 | |
|         // Export to global object
 | |
|         else __g.core = __e;
 | |
|         """
 | |
|     else
 | |
|       exportScript = ""
 | |
| 
 | |
|     resolve """
 | |
|       #banner
 | |
|       !function(__e, __g, undefined){
 | |
|       'use strict';
 | |
|       #script
 | |
|       #exportScript
 | |
|       }(1, 1);
 | |
|       """ |