https://github.com/shexSpec/shex.js
Raw File
Tip revision: 17756428852d9abb1d5242f539675265ea38395a authored by Eric Prud'hommeaux on 03 April 2019, 15:54:21 UTC
v1.0.0-alpha.2
Tip revision: 1775642
browser-all.js
#!/usr/bin/env node

const fs = require('fs')
const path = require('path')
const glob = require('glob')
const browserify = require("browserify")
const uglify = require("terser")

const packageGlobs = JSON.parse(
  fs.readFileSync(__dirname + '/lerna.json', 'utf-8')
).packages.filter(
  glob => glob !== "."
)
const directories = packageGlobs.reduce(
  (list, path) => list.concat(glob.glob.sync(path)), []
).filter(dir => dir.indexOf('cli') === -1)

// https://github.com/browserify/browserify-handbook#using-the-api-directly
const res = directories.map(dir => {
  const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json')))
  const baseName = pkg.main.replace(/\.js$/, '')
  const mainPath = path.join(dir, baseName)
  const browser = path.join(dir, 'browser')
  if (!fs.existsSync(browser)){
    fs.mkdirSync(browser);
  }
  const outPath = path.join(browser, baseName + '-browserify.js')
  const outMinPath = path.join(browser, baseName + '-browserify.min.js')
  console.log(mainPath, "->", outPath)

  let outStream = fs.createWriteStream(outPath)
  let b = browserify(mainPath, {standalone: path.basename(baseName)}).bundle()
  b.on('error', console.error)
  // b.pipe(outStream)
  const chunks = [];
  b.on("data", function (chunk) {
    chunks.push(chunk.toString());
    outStream.write(chunk);
  });
  b.on("end", function () {
    outStream.end();
    let min = uglify.minify(chunks.join(''), {
      "keep_classnames": true
    });
    let outMinStream = fs.createWriteStream(outMinPath);
    outMinStream.write(min.code);
    outMinStream.end();
  });
})
back to top