Skip to content

Commit

Permalink
Merge pull request #1286 from balloonzzq/feat-support-iife
Browse files Browse the repository at this point in the history
feat: raxjs supports iife and cjs, pulling away from amd.
  • Loading branch information
yuanyan authored Aug 28, 2019
2 parents aee6464 + 190d594 commit bdc633c
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 14 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"rollup": "^1.1.2",
"rollup-plugin-babel": "^4.3.2",
"rollup-plugin-commonjs": "^10.0.2",
"rollup-plugin-memory": "^3.0.0",
"rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-replace": "^2.1.0",
"rollup-plugin-uglify": "^6.0.2",
Expand Down
62 changes: 48 additions & 14 deletions scripts/dist-core.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,52 @@
const rollup = require('rollup');
const memory = require('rollup-plugin-memory');
const resolve = require('rollup-plugin-node-resolve');
const commonjs = require('rollup-plugin-commonjs');
const babel = require('rollup-plugin-babel');
const uglify = require('rollup-plugin-uglify').uglify;
const replace = require('rollup-plugin-replace');
const gzipSize = require('gzip-size');
const path = require('path');

async function build({ package: packageName, entry = 'src/index.js', name, shouldMinify = false, format = 'umd' }) {
const IIFE = 'iife';
const UMD = 'umd';
const ESM = 'esm';
const CJS = 'cjs';

function transformBundleFormat({input, name, format, entry, shouldExportDefault}) {
return format === IIFE ? memory({
path: input,
contents: `
import ${shouldExportDefault ? name : `* as ${name}`} from './${path.basename(entry)}';
if (typeof module !== 'undefined') module.exports = ${name};
else self.${name} = ${name};
`
}) : null;
}

function getExtension(format) {
let ext = '.js';
switch (format) {
case 'umd': ext = '.umd.js';
break;
case 'esm': ext = '.mjs';
break;
}
return ext;
}

async function build({ package: packageName, entry = 'src/index.js', name, shouldMinify = false, format = UMD, shouldExportDefault = false }) {
const output = {
name,
exports: 'named',
sourcemap: true
};

const input = `./packages/${packageName}/${entry}`;
// For development
const bundle = await rollup.rollup({
input: `./packages/${packageName}/${entry}`,
input,
plugins: [
transformBundleFormat({ input, name, format, entry, shouldExportDefault }),
resolve(),
commonjs({
// style-unit for build while packages linked
Expand Down Expand Up @@ -63,7 +93,7 @@ async function build({ package: packageName, entry = 'src/index.js', name, shoul

console.log(file, `${(size / 1024).toPrecision(3)}kb (gzip)`);
} else {
const ext = format === 'esm' ? '.mjs' : '.js';
const ext = getExtension(format);
await bundle.write({
...output,
format,
Expand All @@ -73,20 +103,24 @@ async function build({ package: packageName, entry = 'src/index.js', name, shoul
}

build({ package: 'rax', name: 'Rax' });
build({ package: 'rax', name: 'Rax', format: 'esm' });
build({ package: 'rax', name: 'Rax', shouldMinify: true });
build({ package: 'rax', name: 'Rax', format: IIFE });
build({ package: 'rax', name: 'Rax', format: IIFE, shouldMinify: true });
build({ package: 'rax', name: 'Rax', format: ESM });

build({ package: 'driver-dom', name: 'DriverDOM' });
build({ package: 'driver-dom', name: 'DriverDOM', format: 'esm' });
build({ package: 'driver-dom', name: 'DriverDOM', shouldMinify: true });
build({ package: 'driver-dom', name: 'DriverDOM', format: IIFE });
build({ package: 'driver-dom', name: 'DriverDOM', format: IIFE, shouldMinify: true });
build({ package: 'driver-dom', name: 'DriverDOM', format: ESM });

build({ package: 'driver-weex', name: 'DriverWeex' });
build({ package: 'driver-weex', name: 'DriverWeex', format: 'esm' });
build({ package: 'driver-weex', name: 'DriverWeex', shouldMinify: true });
build({ package: 'driver-weex', name: 'DriverWeex', format: IIFE });
build({ package: 'driver-weex', name: 'DriverWeex', format: IIFE, shouldMinify: true });
build({ package: 'driver-weex', name: 'DriverWeex', format: ESM });

build({ package: 'driver-worker', name: 'DriverWorker' });
build({ package: 'driver-worker', name: 'DriverWorker', format: 'esm' });
build({ package: 'driver-worker', name: 'DriverWorker', shouldMinify: true });
build({ package: 'driver-worker', name: 'DriverWorker', format: IIFE, shouldExportDefault: true });
build({ package: 'driver-worker', name: 'DriverWorker', format: IIFE, shouldExportDefault: true, shouldMinify: true });
build({ package: 'driver-worker', name: 'DriverWorker', format: ESM });

build({ package: 'rax-miniapp-renderer', format: 'cjs' });
build({ package: 'rax-miniapp-renderer', format: 'cjs', shouldMinify: true });
build({ package: 'rax-miniapp-renderer', format: CJS });
build({ package: 'rax-miniapp-renderer', format: CJS, shouldMinify: true });

0 comments on commit bdc633c

Please sign in to comment.