Skip to content

Commit

Permalink
Feat/ali miniprogram (#156)
Browse files Browse the repository at this point in the history
* release: v1.0.3-mini.1

* release: v1.0.3-mini.2

* add node resolve for miniprogram format

* bundle resolve-loader to miniprogram format

* release: v1.0.3-mini.3

* fix: export error in miniprogram adapter

* update miniprogram export

* fix: import PIXI from miniprogram-pixi

* release: v1.0.3-mini.4

* fix: export pixi.js obj from miniprogram-pixi

* release: v1.0.3-mini.5

* release: v1.0.3-mini.6

* fix: update miniprograme build

* release: v1.1.2-mini.0

* release: v1.1.2-mini.1

* fix: update

* release: v1.1.2-mini.2

* release: v1.1.2-mini.3

* fix: miniprogram autostart bug

* fix: add property at pixi

* release: v1.2.2-mini.0

* fix:

* release: v1.2.2-mini.1

* fix: add pixi export

* release: v1.2.2-mini.2

* release: v1.2.2-mini.3

* fix: reverse temp

Co-authored-by: lidongjies <lidongjies@gmail.com>
  • Loading branch information
fanmingfei and lidongjies committed Nov 24, 2021
1 parent 53aacd9 commit f43b17c
Show file tree
Hide file tree
Showing 12 changed files with 29,562 additions and 23 deletions.
29,409 changes: 29,409 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -7,7 +7,7 @@
"dev": "vite ./examples -c ./examples/vite.config.ts",
"build": "node ./scripts/build.js",
"buildDev": "npm run build -- -a -d -f iife",
"buildProd": "npm run build -- -a -p -f cjs-esm-iife",
"buildProd": "npm run build -- -a -p -f cjs-esm-iife-miniprogram",
"release": "node ./scripts/release.js",
"bootstrap": "node ./scripts/bootstrap.js",
"test": "jest --runInBand",
Expand Down
32 changes: 32 additions & 0 deletions packages/global.d.ts
Expand Up @@ -15,5 +15,37 @@ declare namespace jest {
}

declare namespace PIXI.miniprogram {
export const globalAlias: any;
export const Element: any;
export const Event: any;
export const EventTarget: any;
export const HTMLCanvasElement: any;
export const HTMLElement: any;
export const HTMLMediaElement: any;
export const HTMLVideoElement: any;
export const HTMLImageElement: any;
export const Image: any;
export const Node: any;
export const XMLHttpRequestAlias: any;
export const atob: any;
export const cancelAnimationFrame: any;
export const devicePixelRatio: any;
export const dispatchMouseDown: any;
export const dispatchMouseMove: any;
export const dispatchMouseUp: any;
export const dispatchPointerDown: any;
export const dispatchPointerMove: any;
export const dispatchPointerUp: any;
export const dispatchTouchEnd: any;
export const dispatchTouchMove: any;
export const dispatchTouchStart: any;
export const documentAlias: any;
export const navigator: any;
export const performance: any;
export const registerCanvas: any;
export const registerCanvas2D: any;
export const requestAnimationFrame: any;
export const screen: any;
export const windowAlias: any;
export const type = 'taobao miniprogram';
}
40 changes: 37 additions & 3 deletions packages/miniprogram-adapter/lib/index.ts
@@ -1,4 +1,38 @@
// @ts-ignore
import PIXI from '@eva/miniprogram-pixi';
import * as PIXI from '@tbminiapp/pixi-miniprogram-engine';

export default PIXI.miniprogram;
export const {
globalAlias,
Element,
Event,
EventTarget,
HTMLCanvasElement,
HTMLElement,
HTMLMediaElement,
HTMLVideoElement,
HTMLImageElement,
Image,
Node,
XMLHttpRequestAlias,
atob,
cancelAnimationFrame,
devicePixelRatio,
dispatchMouseDown,
dispatchMouseMove,
dispatchMouseUp,
dispatchPointerDown,
dispatchPointerMove,
dispatchPointerUp,
dispatchTouchEnd,
dispatchTouchMove,
dispatchTouchStart,
documentAlias,
navigator,
performance,
registerCanvas,
registerCanvas2D,
requestAnimationFrame,
screen,
windowAlias
} = PIXI.miniprogram;

export default PIXI.miniprogram;
6 changes: 6 additions & 0 deletions packages/miniprogram-adapter/package.json
Expand Up @@ -17,6 +17,12 @@
"author": "fanmingfei <az8641683@163.com>",
"license": "MIT",
"homepage": "https://eva.js.org",
"buildOptions": {
"formats": [
"cjs",
"esm"
]
},
"dependencies": {
"@eva/miniprogram-pixi": "1.2.2-type.1"
}
Expand Down
34 changes: 32 additions & 2 deletions packages/miniprogram-pixi/lib/index.ts
@@ -1,4 +1,34 @@
// @ts-ignore
import * as PIXI from '@tbminiapp/pixi-miniprogram-engine';

export default PIXI;
export {
Application,
Container,
Graphics,
mesh,
Texture,
Sprite,
extras,
Text,
ticker,
BLEND_MODES,
Circle,
Ellipse,
Polygon,
Rectangle,
RoundedRectangle,
TextStyle,
loaders,
Matrix,
SCALE_MODES,
utils,
TransformBase,
TransformStatic,
DisplayObject,
Spritesheet,
BaseTexture,
Shader,
WebGLRenderer,
ObjectRenderer,
CanvasRenderer,
glCore
} from '@tbminiapp/pixi-miniprogram-engine';
10 changes: 9 additions & 1 deletion packages/miniprogram-pixi/package.json
Expand Up @@ -18,7 +18,15 @@
"license": "MIT",
"homepage": "https://eva.js.org",
"dependencies": {
"@tbminiapp/pixi-miniprogram-engine": "^1.0.19",
"@tbminiapp/pixi-miniprogram-engine": "^1.0.19"
},
"buildOptions": {
"formats": [
"cjs",
"esm"
]
},
"devDependencies": {
"@types/pixi.js": "^4.8.9"
}
}
4 changes: 2 additions & 2 deletions packages/plugin-renderer/lib/System.ts
Expand Up @@ -110,9 +110,9 @@ export default class Renderer extends System<RendererSystemParams> {
if (params.renderType === RENDERER_TYPE.CANVAS) {
params.forceCanvas = true;
}
ticker.shared.autoStart = false;
ticker.shared.stop();
const app = new Application({ sharedTicker: true, ...params });
ticker.shared.stop();
ticker.shared.autoStart = false;
/**
* Fix https://github.com/eva-engine/eva.js/issues/30
* PreventScroll is legacy, because it has bug.
Expand Down
20 changes: 14 additions & 6 deletions rollup.config.js
Expand Up @@ -4,8 +4,8 @@ import replace from 'rollup-plugin-replace';
import json from '@rollup/plugin-json';
import typescript from 'rollup-plugin-typescript2';
import { terser } from 'rollup-plugin-terser';
import { miniprogramPlugins1, miniprogramPlugins2 } from './rollup.miniprogram.plugin';
import { getBabelOutputPlugin } from '@rollup/plugin-babel';
import miniProgramPlugin from './rollup.miniprogram.plugin';

if (!process.env.TARGET) {
throw new Error('TARGET package must be specified via --environment flag.');
Expand Down Expand Up @@ -69,7 +69,7 @@ const outputConfigs = {
},
miniprogram: {
file: resolve(`dist/miniprogram.js`),
format: 'cjs',
format: 'es',
},
};

Expand All @@ -79,7 +79,7 @@ let hasTypesChecked = false;
// 开发环境 esm,cjs 打包
const defaultFormats = ['esm', 'cjs', 'iife'];
const inlineFormats = process.env.FORMATS && process.env.FORMATS.split('-');
const packageFormats = inlineFormats || packageOptions.formats || defaultFormats;
const packageFormats = packageOptions.formats || inlineFormats || defaultFormats;

const packageConfigs = [];
if (!process.env.PROD_ONLY) {
Expand Down Expand Up @@ -111,7 +111,7 @@ if (process.env.NODE_ENV === 'production') {
});
}

function createConfig(format, output, plugins = []) {
function createConfig(format, output, plugins1 = [], plugins2 = []) {
if (!output) {
console.log(require('chalk').yellow(`invalid format: "${format}"`));
process.exit(1);
Expand Down Expand Up @@ -146,6 +146,13 @@ function createConfig(format, output, plugins = []) {
require('rollup-plugin-polyfill-node')(),
require('@rollup/plugin-commonjs')({ sourceMap: false, ignore: ['lodash-es'] }),
];
} else if (format === 'miniprogram') {
nodePlugins = [
require('@rollup/plugin-node-resolve').nodeResolve({
resolveOnly: ['resource-loader', 'type-signals', 'parse-uri']
}),
require('@rollup/plugin-commonjs')({ sourceMap: false, ignore: ['lodash-es'] }),
]
}

let external = [];
Expand Down Expand Up @@ -178,6 +185,7 @@ function createConfig(format, output, plugins = []) {
},
external,
plugins: [
...plugins1,
json({ preferConst: true }),
replace({
__TEST__: false,
Expand All @@ -186,7 +194,7 @@ function createConfig(format, output, plugins = []) {
}),
...nodePlugins,
tsPlugin,
...plugins,
...plugins2
],
onwarn: (msg, warn) => {
if (!/Circular/.test(msg)) {
Expand Down Expand Up @@ -237,6 +245,6 @@ function createMinifiedConfig(format) {
}

function createMiniProgramConfig(format) {
return createConfig(format, outputConfigs[format], miniProgramPlugin);
return createConfig(format, outputConfigs[format], miniprogramPlugins1, miniprogramPlugins2);
}
export default packageConfigs;
24 changes: 18 additions & 6 deletions rollup.miniprogram.plugin.js
@@ -1,5 +1,11 @@
import inject from 'rollup-plugin-inject';
import modify from 'rollup-plugin-modify';
import fs from 'fs'
import path from 'path'

const packages = fs
.readdirSync(path.resolve(__dirname, 'packages'))
.filter(p => !p.endsWith('.ts') && !p.startsWith('.'));

const moduleName = '@eva/miniprogram-adapter';

Expand Down Expand Up @@ -35,22 +41,28 @@ for (let name in adapterArray) {
adapterVars[name] = register(adapterArray[name]);
}

const plugins = [
inject(adapterVars),
export const miniprogramPlugins1 = [
modify({
find: /@eva\/([\w\.\/-]*)/g,
replace: (match, moduleName) => {
console.log(match, moduleName);
if(moduleName === 'miniprogram-pixi' || moduleName === 'miniprogram-adapter') {
return `@eva/${moduleName}`;
}
if (moduleName.indexOf('/dist/miniprogram') > -1) {
return `@eva/${moduleName}`;
}
return `@eva/${moduleName}/dist/miniprogram`;
if (packages.indexOf(moduleName) > -1) {
return `@eva/${moduleName}/dist/miniprogram`;
}
return `@eva/${moduleName}`;
},
}),
modify({
find: /pixi\.js/g,
replace: `@eva/miniprogram-pixi`,
}),
})
];

export default plugins;
export const miniprogramPlugins2 = [
inject(adapterVars)
]
2 changes: 1 addition & 1 deletion scripts/release.js
Expand Up @@ -90,7 +90,7 @@ async function main() {
// build all packages with types
step('\nBuilding all packages...');
if (!skipBuild && !isDryRun) {
await run('npm', ['run', 'build', '--', '--release', '-f', 'cjs-esm-iife']);
await run('npm', ['run', 'build', '--', '--release', '-f', 'cjs-esm-iife-miniprogram']);
} else {
console.log('(skipped)');
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/utils.js
Expand Up @@ -2,7 +2,7 @@ const fs = require('fs');
const chalk = require('chalk');

// 过滤文件夹,不进行编译
const excludes = ['plugin-renderer-test', 'miniprogram-adapter', 'miniprogram-pixi'];
const excludes = ['plugin-renderer-test'];

const targets = (exports.targets = fs.readdirSync('packages').filter(f => {
if (!fs.statSync(`packages/${f}`).isDirectory()) {
Expand Down

0 comments on commit f43b17c

Please sign in to comment.