|  | @@ -0,0 +1,70 @@
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +var fs = require('fs')
 | 
											
												
													
														|  | 
 |  | +var path = require('path')
 | 
											
												
													
														|  | 
 |  | +var vm = require('vm')
 | 
											
												
													
														|  | 
 |  | +var uglify = require('uglify-js')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// load prism languages
 | 
											
												
													
														|  | 
 |  | +var include = (file) => {
 | 
											
												
													
														|  | 
 |  | +  var fpath = path.resolve(__dirname, `../../node_modules/prismjs/${file}.js`)
 | 
											
												
													
														|  | 
 |  | +  var source = fs.readFileSync(fpath, 'utf8')
 | 
											
												
													
														|  | 
 |  | +  var ctx = vm.createContext()
 | 
											
												
													
														|  | 
 |  | +  vm.runInContext(source, ctx)
 | 
											
												
													
														|  | 
 |  | +  return ctx
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +var {components: {languages}} = include('components')
 | 
											
												
													
														|  | 
 |  | +delete languages.meta
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// update prism languages config
 | 
											
												
													
														|  | 
 |  | +var config = require('./prism.json')
 | 
											
												
													
														|  | 
 |  | +// sort the included ones
 | 
											
												
													
														|  | 
 |  | +config['markdown-viewer'] = config['markdown-viewer'].sort()
 | 
											
												
													
														|  | 
 |  | +// add any new
 | 
											
												
													
														|  | 
 |  | +config.all = Object.keys(languages)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +fs.writeFileSync(path.resolve(__dirname, 'prism.json'),
 | 
											
												
													
														|  | 
 |  | +  JSON.stringify(config, null, 2), 'utf8')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// build prism.min.js
 | 
											
												
													
														|  | 
 |  | +var core = fs.readFileSync(
 | 
											
												
													
														|  | 
 |  | +  path.resolve(__dirname, '../../node_modules/prismjs/prism.js'), 'utf8')
 | 
											
												
													
														|  | 
 |  | +// core
 | 
											
												
													
														|  | 
 |  | +var source = uglify.minify(core, {compress: {}, mangle: true}).code
 | 
											
												
													
														|  | 
 |  | +// components
 | 
											
												
													
														|  | 
 |  | +source += config['markdown-viewer'].reduce((source, component) => (
 | 
											
												
													
														|  | 
 |  | +  source += fs.readFileSync(path.resolve(__dirname,
 | 
											
												
													
														|  | 
 |  | +    `../../node_modules/prismjs/components/prism-${component}.min.js`), 'utf8') + '\n',
 | 
											
												
													
														|  | 
 |  | +  source
 | 
											
												
													
														|  | 
 |  | +), '')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +fs.writeFileSync(path.resolve(__dirname, '../../vendor/prism.min.js'), source, 'utf8')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// print the excluded ones and their corresponding files sizes
 | 
											
												
													
														|  | 
 |  | +console.log('Excluded:')
 | 
											
												
													
														|  | 
 |  | +config.all
 | 
											
												
													
														|  | 
 |  | +  .filter((component) => !config['markdown-viewer'].includes(component))
 | 
											
												
													
														|  | 
 |  | +  .map((component) => console.log(
 | 
											
												
													
														|  | 
 |  | +    component, '\t\t\t',
 | 
											
												
													
														|  | 
 |  | +    fs.lstatSync(path.resolve(__dirname,
 | 
											
												
													
														|  | 
 |  | +      `../../node_modules/prismjs/components/prism-${component}.min.js`)).size
 | 
											
												
													
														|  | 
 |  | +  ))
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// build css
 | 
											
												
													
														|  | 
 |  | +var csso = require('csso')
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +var source = fs.readFileSync(
 | 
											
												
													
														|  | 
 |  | +  path.resolve(__dirname, '../../node_modules/prismjs/themes/prism.css'),
 | 
											
												
													
														|  | 
 |  | +  'utf8'
 | 
											
												
													
														|  | 
 |  | +)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +fs.writeFileSync(
 | 
											
												
													
														|  | 
 |  | +  path.resolve(__dirname, '../../vendor/prism.min.css'),
 | 
											
												
													
														|  | 
 |  | +  csso.minify(source).css,
 | 
											
												
													
														|  | 
 |  | +  'utf8'
 | 
											
												
													
														|  | 
 |  | +)
 |