diff --git a/packages/rax-cli/package.json b/packages/rax-cli/package.json
index 01dd7d9229..423e89deb5 100644
--- a/packages/rax-cli/package.json
+++ b/packages/rax-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-cli",
- "version": "2.0.0-1",
+ "version": "2.0.0-7",
"license": "BSD-3-Clause",
"description": "Command line interface for Rax",
"main": "src/index.js",
diff --git a/packages/rax-cli/src/generator/api/_package.json b/packages/rax-cli/src/generator/api/_package.json
index 78f1b0d4bf..5d839e0fd9 100644
--- a/packages/rax-cli/src/generator/api/_package.json
+++ b/packages/rax-cli/src/generator/api/_package.json
@@ -19,7 +19,7 @@
"universal-env": "^1.0.0"
},
"devDependencies": {
- "rax-scripts": "^2.0.0-0",
- "rax-plugin-api": "^0.1.0-1"
+ "rax-scripts": "^2.0.0-2",
+ "rax-plugin-api": "^0.1.0-2"
}
}
diff --git a/packages/rax-cli/src/generator/app/_package.json b/packages/rax-cli/src/generator/app/_package.json
index ad32174d1a..2fc93a26e2 100755
--- a/packages/rax-cli/src/generator/app/_package.json
+++ b/packages/rax-cli/src/generator/app/_package.json
@@ -19,14 +19,13 @@
<%_ } -%>
"rax-view": "^1.0.0",
"rax-text": "^1.0.0",
- "rax-view": "^1.0.0",
- "universal-app-runtime": "^0.1.3"
+ "universal-app-runtime": "^0.1.5-0"
},
"devDependencies": {
<%_ if (projectFeatures.includes('ssr')) { -%>
- "rax-plugin-ssr": "^0.1.0",
+ "rax-plugin-ssr": "^0.1.0-1",
<%_ } -%>
- "rax-scripts": "^2.0.0-0",
- "rax-plugin-app": "^0.1.0-1"
+ "rax-scripts": "^2.0.0-2",
+ "rax-plugin-app": "^0.1.0-4"
}
}
diff --git a/packages/rax-cli/src/generator/app/src/app.json b/packages/rax-cli/src/generator/app/src/app.json
index 1aa7fdd395..62e6081ce1 100755
--- a/packages/rax-cli/src/generator/app/src/app.json
+++ b/packages/rax-cli/src/generator/app/src/app.json
@@ -3,11 +3,7 @@
"routes": [
{
"path": "/",
- "component": "pages/home"
- },
- {
- "path": "/about",
- "component": "pages/about"
+ "component": "pages/Home/index"
}
],
<%_ if (isSSR) { -%>
diff --git a/packages/rax-cli/src/generator/app/src/components/Logo/index.css b/packages/rax-cli/src/generator/app/src/components/Logo/index.css
new file mode 100644
index 0000000000..b84be53a96
--- /dev/null
+++ b/packages/rax-cli/src/generator/app/src/components/Logo/index.css
@@ -0,0 +1,5 @@
+.logo {
+ width: 200rpx;
+ height: 180rpx;
+ margin-bottom: 20rpx;
+}
diff --git a/packages/rax-cli/src/generator/app/src/components/Logo/index.js b/packages/rax-cli/src/generator/app/src/components/Logo/index.js
new file mode 100644
index 0000000000..4f48893f11
--- /dev/null
+++ b/packages/rax-cli/src/generator/app/src/components/Logo/index.js
@@ -0,0 +1,14 @@
+import styles from './index.css';
+import { createElement } from 'rax';
+import Image from 'rax-image';
+
+export default (props) => {
+ return (
+
+ );
+};
diff --git a/packages/rax-cli/src/generator/app/src/components/Main/index.css b/packages/rax-cli/src/generator/app/src/components/Main/index.css
deleted file mode 100644
index 2f93ac14a8..0000000000
--- a/packages/rax-cli/src/generator/app/src/components/Main/index.css
+++ /dev/null
@@ -1,28 +0,0 @@
-.home {
- align-items: center;
- margin-top: 30rpx;
-}
-
-.logo {
- width: 200rpx;
- height: 180rpx;
- margin-bottom: 20rpx;
-}
-
-.title {
- font-size: 45rpx;
- font-weight: bold;
- margin: 20rpx 0;
-}
-
-.box {
- flex-direction: row;
-}
-
-.info {
- font-size: 42rpx;
-}
-
-.btn {
- margin-bottom: 20rpx;
-}
diff --git a/packages/rax-cli/src/generator/app/src/components/Main/index.js b/packages/rax-cli/src/generator/app/src/components/Main/index.js
deleted file mode 100644
index 932dd81c55..0000000000
--- a/packages/rax-cli/src/generator/app/src/components/Main/index.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import './index.css';
-import { createElement } from 'rax';
-import View from 'rax-view';
-import Text from 'rax-text';
-import Link from 'rax-link';
-import Image from 'rax-image';
-
-export default (props) => {
- return (
-
- <%_ if (!projectFeatures.includes('ssr')) { -%>
-
- <%_ } -%>
- Welcome to Your Rax App
-
- More infomation about
- how to cutomize this project
-
- check the
-
- Rax Documation
-
-
-
- More about Rax
-
- check the
-
- Rax Gihub
-
-
-
- );
-};
diff --git a/packages/rax-cli/src/generator/app/src/pages/home/index.css b/packages/rax-cli/src/generator/app/src/pages/home/index.css
new file mode 100644
index 0000000000..cd3b101696
--- /dev/null
+++ b/packages/rax-cli/src/generator/app/src/pages/home/index.css
@@ -0,0 +1,16 @@
+.home {
+ align-items: center;
+ margin-top: 200rpx;
+}
+
+.title {
+ font-size: 45rpx;
+ font-weight: bold;
+ margin: 20rpx 0;
+}
+
+.info {
+ font-size: 36rpx;
+ margin: 8rpx 0;
+ color: #555;
+}
diff --git a/packages/rax-cli/src/generator/app/src/pages/home/index.jsx b/packages/rax-cli/src/generator/app/src/pages/home/index.jsx
old mode 100755
new mode 100644
index a42f1cef32..dab2fb79f4
--- a/packages/rax-cli/src/generator/app/src/pages/home/index.jsx
+++ b/packages/rax-cli/src/generator/app/src/pages/home/index.jsx
@@ -1,9 +1,18 @@
+import styles from './index.css';
import { createElement } from 'rax';
+import View from 'rax-view';
+import Text from 'rax-text';
-import Main from '../../components/Main';
+import Logo from '../../components/Logo';
export default function Home() {
return (
-
+
+
+ Welcome to Your Rax App
+
+ More information about Rax
+ Visit https://rax.js.org
+
);
}
diff --git a/packages/rax-cli/src/generator/component/_package.json b/packages/rax-cli/src/generator/component/_package.json
index ff9ab509bf..f05fb85673 100644
--- a/packages/rax-cli/src/generator/component/_package.json
+++ b/packages/rax-cli/src/generator/component/_package.json
@@ -25,7 +25,7 @@
"devDependencies": {
"driver-universal": "^1.0.0",
"rax": "^1.0.0",
- "rax-scripts": "^2.0.0-0",
- "rax-plugin-component": "^0.1.0-1"
+ "rax-scripts": "^2.0.0-2",
+ "rax-plugin-component": "^0.1.0-2"
}
}
diff --git a/packages/rax-is-valid-element/src/index.js b/packages/rax-is-valid-element/src/index.js
index 135b2f8807..7b0749f791 100644
--- a/packages/rax-is-valid-element/src/index.js
+++ b/packages/rax-is-valid-element/src/index.js
@@ -1,3 +1,3 @@
export default function isValidElement(object) {
- return typeof object === 'object' && object !== null && object.type && object.props;
-}
\ No newline at end of file
+ return typeof object === 'object' && object !== null && object.type && !!object.props;
+}
diff --git a/packages/rax-miniapp-renderer/package.json b/packages/rax-miniapp-renderer/package.json
index b81b4c9c05..63fe04fcb5 100644
--- a/packages/rax-miniapp-renderer/package.json
+++ b/packages/rax-miniapp-renderer/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-miniapp-renderer",
- "version": "0.1.0-2",
+ "version": "0.1.1",
"description": "Rax renderer for miniapp.",
"license": "BSD-3-Clause",
"main": "dist/rax-miniapp-renderer.min.js",
diff --git a/packages/rax-miniapp-renderer/src/EventHandler.js b/packages/rax-miniapp-renderer/src/EventHandler.js
index 6bc63b4bdc..3439f868dd 100644
--- a/packages/rax-miniapp-renderer/src/EventHandler.js
+++ b/packages/rax-miniapp-renderer/src/EventHandler.js
@@ -81,7 +81,12 @@ export default class EventHandler {
addNoBubblesEventListener(node, name) {
const listener = (evt) => {
- const target = {$$id: node.$$id};
+ const target = { $$id: node.$$id };
+
+ if (node === document.body) {
+ target.nodeName = 'BODY';
+ }
+
this.postMessage({
type: 'event',
event: {
diff --git a/packages/rax-miniapp-renderer/src/MutationHandler.js b/packages/rax-miniapp-renderer/src/MutationHandler.js
index 532a51dc9e..f5fed9c3fd 100644
--- a/packages/rax-miniapp-renderer/src/MutationHandler.js
+++ b/packages/rax-miniapp-renderer/src/MutationHandler.js
@@ -37,7 +37,7 @@ export default class MutationHandler {
let sharedNodeMap = this.sharedNodeMap;
let vnode = target;
- if (vnode && vnode.nodeName === 'BODY') {
+ if (vnode && vnode.nodeName === 'BODY' && vnode.$$id) {
this.mountNode.$$id = vnode.$$id;
}
diff --git a/packages/rax-plugin-api/package.json b/packages/rax-plugin-api/package.json
index a15e2d93da..9d84af76fe 100644
--- a/packages/rax-plugin-api/package.json
+++ b/packages/rax-plugin-api/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-plugin-api",
- "version": "0.1.0-1",
+ "version": "0.1.0-2",
"description": "rax api base plugins",
"license": "BSD-3-Clause",
"main": "src/index.js",
diff --git a/packages/rax-plugin-app/package.json b/packages/rax-plugin-app/package.json
index 8438fc4588..a4b5b3541b 100644
--- a/packages/rax-plugin-app/package.json
+++ b/packages/rax-plugin-app/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-plugin-app",
- "version": "0.1.0-3",
+ "version": "0.1.0-4",
"description": "rax app base plugins",
"license": "BSD-3-Clause",
"main": "src/index.js",
@@ -50,7 +50,7 @@
"deepmerge": "^4.0.0",
"fs-extra": "^8.1.0",
"image-source-loader": "^0.6.5",
- "jsx2mp-cli": "^0.1.0-beta.1",
+ "jsx2mp-cli": "^0.1.0",
"less": "^3.9.0",
"less-loader": "^5.0.0",
"loader-utils": "^1.1.0",
@@ -66,7 +66,7 @@
"ts-loader": "^5.3.3",
"typescript": "^3.2.4",
"uglifyjs-webpack-plugin": "^2.1.2",
- "universal-app-shell-loader": "^0.2.0-4",
+ "universal-app-shell-loader": "^0.2.0-5",
"webpack": "^4.27.1",
"webpack-bundle-analyzer": "^3.0.3",
"webpack-chain": "^6.0.0",
diff --git a/packages/rax-plugin-app/src/config/miniapp/build.js b/packages/rax-plugin-app/src/config/miniapp/build.js
index 35ecc14dd4..966cd99c07 100644
--- a/packages/rax-plugin-app/src/config/miniapp/build.js
+++ b/packages/rax-plugin-app/src/config/miniapp/build.js
@@ -3,7 +3,7 @@ const jsx2mp = require('jsx2mp-cli');
const getOutputPath = require('./getOutputPath');
-module.exports = (context) => {
+module.exports = (context, cancelClear) => {
const outputPath = getOutputPath(context);
fs.removeSync(outputPath);
diff --git a/packages/rax-plugin-app/src/dev.js b/packages/rax-plugin-app/src/dev.js
index c1e4818f13..0fc5103044 100644
--- a/packages/rax-plugin-app/src/dev.js
+++ b/packages/rax-plugin-app/src/dev.js
@@ -3,12 +3,27 @@ const chalk = require('chalk');
const consoleClear = require('console-clear');
const getMpOuput = require('./config/miniapp/getOutputPath');
+const mpDev = require('./config/miniapp/dev');
module.exports = ({ chainWebpack, registerConfig, context, onHook }, options = {}) => {
const { targets = [] } = options;
- function devCompileLog({ url, err, stats }) {
+ let devUrl = '';
+ let devCompletedArr = [];
+
+ function devCompileLog() {
consoleClear(true);
+ let err = devCompletedArr[0].err;
+ let stats = devCompletedArr[0].stats;
+
+ devCompletedArr.forEach((devInfo) => {
+ if (devInfo.err || devInfo.stats.hasErrors()) {
+ err = devInfo.err;
+ stats = devInfo.stats;
+ }
+ });
+
+ devCompletedArr = [];
if (err) {
console.error(err.stack || err);
@@ -39,71 +54,62 @@ module.exports = ({ chainWebpack, registerConfig, context, onHook }, options = {
return;
}
- console.log(chalk.green('Rax development server has been started:'));
+ console.log(chalk.green('Rax development server has been started:'));
console.log();
if (~targets.indexOf('web')) {
console.log(chalk.green('[Web] Development server at:'));
- console.log(' ', chalk.underline.white(url));
+ console.log(' ', chalk.underline.white(devUrl));
console.log();
}
if (~targets.indexOf('weex')) {
console.log(chalk.green('[Weex] Development server at:'));
- console.log(' ', chalk.underline.white(`${url}/weex/index.js?wh_weex=true`));
+ console.log(' ', chalk.underline.white(`${devUrl}/weex/index.js?wh_weex=true`));
console.log();
}
if (~targets.indexOf('miniapp')) {
- console.log(chalk.green('[Miniapp] Watching file changes at:'));
+ console.log(chalk.green('[Miniapp] Use miniapp developer tools to open the following folder:'));
console.log(' ', chalk.underline.white(getMpOuput(context)));
console.log();
}
}
- // run miniapp watch when targets has only miniapp
- if (targets.length === 1 && targets[0] === 'miniapp') {
- const mpDev = require('./config/miniapp/dev');
+ if (~targets.indexOf('miniapp')) {
onHook('after.dev', () => {
- mpDev(context, devCompileLog);
+ mpDev(context, (args) => {
+ devCompletedArr.push(args);
+ if (devCompletedArr.length === 2) {
+ devCompileLog();
+ }
+ });
});
- } else {
- targets.forEach(target => {
- if (target === 'weex' || target === 'web') {
- const getBase = require(`./config/${target}/getBase`);
- const setDev = require(`./config/${target}/setDev`);
-
- registerConfig(target, getBase(context));
+ }
- chainWebpack((config) => {
- setDev(config.getConfig(target), context);
- });
- }
- });
+ targets.forEach(target => {
+ if (target === 'weex' || target === 'web') {
+ const getBase = require(`./config/${target}/getBase`);
+ const setDev = require(`./config/${target}/setDev`);
- onHook('after.devCompile', async({ url, err, stats }) => {
- // run miniapp build while targets have web or weex, for log control
- if (~targets.indexOf('miniapp')) {
- const mpBuild = require('./config/miniapp/build');
- let mpBuildErr = null;
- const mpInfo = await mpBuild(context);
+ registerConfig(target, getBase(context));
- if (mpInfo.err || mpInfo.stats.hasErrors()) {
- mpBuildErr = mpInfo;
- }
+ chainWebpack((config) => {
+ setDev(config.getConfig(target), context);
+ });
+ }
+ });
- if (mpBuildErr) {
- err = mpBuildErr.err;
- stats = mpBuildErr.stats;
- }
+ onHook('after.devCompile', async(args) => {
+ devUrl = args.url;
+ devCompletedArr.push(args);
+ // run miniapp build while targets have web or weex, for log control
+ if (~targets.indexOf('miniapp')) {
+ if (devCompletedArr.length === 2) {
+ devCompileLog();
}
-
- devCompileLog({
- url,
- err,
- stats
- });
- });
- }
+ } else {
+ devCompileLog();
+ }
+ });
};
-
diff --git a/packages/rax-plugin-component/package.json b/packages/rax-plugin-component/package.json
index 0461a1ba2b..07b8fe91d7 100644
--- a/packages/rax-plugin-component/package.json
+++ b/packages/rax-plugin-component/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-plugin-component",
- "version": "0.1.0-1",
+ "version": "0.1.0-2",
"description": "rax component base plugins",
"license": "BSD-3-Clause",
"main": "src/index.js",
diff --git a/packages/rax-plugin-component/src/config/getDevConfig.js b/packages/rax-plugin-component/src/config/getDevConfig.js
index 5b7cd9b698..05d1d1a859 100644
--- a/packages/rax-plugin-component/src/config/getDevConfig.js
+++ b/packages/rax-plugin-component/src/config/getDevConfig.js
@@ -81,6 +81,7 @@ module.exports = (context) => {
.contentBase(appPublic)
.watchContentBase(true)
.hot(true)
+ .quiet(true)
.publicPath('/')
.overlay(false)
.host(address.ip())
diff --git a/packages/rax-plugin-ssr/package.json b/packages/rax-plugin-ssr/package.json
index 70fdd94d78..92ab20e409 100644
--- a/packages/rax-plugin-ssr/package.json
+++ b/packages/rax-plugin-ssr/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-plugin-ssr",
- "version": "0.1.0-0",
+ "version": "0.1.0-1",
"description": "rax ssr plugins",
"license": "BSD-3-Clause",
"main": "src/index.js",
@@ -43,6 +43,6 @@
"rax-plugin-app": "^0.1.0-0",
"rax-ssr-dev-server": "^2.0.0-0",
"stylesheet-loader": "^0.6.5",
- "universal-app-shell-loader": "^0.1.1"
+ "universal-app-shell-loader": "^0.2.0-5"
}
}
diff --git a/packages/rax-scripts/package.json b/packages/rax-scripts/package.json
index 9ebb658648..6cef73813c 100644
--- a/packages/rax-scripts/package.json
+++ b/packages/rax-scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "rax-scripts",
- "version": "2.0.0-1",
+ "version": "2.0.0-2",
"license": "BSD-3-Clause",
"description": "Project scripts for Rax.",
"bin": {
@@ -95,7 +95,7 @@
"rax-hydrate": "^1.0.1",
"rax-pwa-webpack-plugin": "^1.0.0-0",
"rax-server": "^1.0.0-3",
- "rax-ssr-dev-server": "^1.0.0",
+ "rax-ssr-dev-server": "^2.0.0-0",
"rax-webpack-plugin": "^0.6.5",
"rimraf": "^2.6.2",
"scripts-core": "^0.1.1-1",
diff --git a/packages/rax-scripts/src/config/component/webpack.config.dev.js b/packages/rax-scripts/src/config/component/webpack.config.dev.js
index 4829ba2524..6eccb36286 100644
--- a/packages/rax-scripts/src/config/component/webpack.config.dev.js
+++ b/packages/rax-scripts/src/config/component/webpack.config.dev.js
@@ -20,6 +20,7 @@ const webpackConfigDev = {
}),
mode: webpackConfig.mode,
context: webpackConfig.context,
+ externals: webpackConfig.externals,
// Compile target should "web" when use hot reload
target: webpackConfig.target,
resolve: webpackConfig.resolve,
diff --git a/packages/rax-scripts/src/config/universalapp/webpack.config.base.js b/packages/rax-scripts/src/config/universalapp/webpack.config.base.js
index 1541911ea4..8aa481d7c6 100644
--- a/packages/rax-scripts/src/config/universalapp/webpack.config.base.js
+++ b/packages/rax-scripts/src/config/universalapp/webpack.config.base.js
@@ -9,6 +9,7 @@ module.exports = {
// Compile target should "web" when use hot reload
target: webpackConfig.target,
entry: webpackConfig.entry,
+ externals: webpackConfig.externals,
output: Object.assign({}, webpackConfig.output, {
filename: '[name].js',
}),
diff --git a/packages/rax-scripts/src/config/webapp/webpack.config.base.js b/packages/rax-scripts/src/config/webapp/webpack.config.base.js
index 258405a579..6d28408db7 100644
--- a/packages/rax-scripts/src/config/webapp/webpack.config.base.js
+++ b/packages/rax-scripts/src/config/webapp/webpack.config.base.js
@@ -15,6 +15,7 @@ module.exports = function getWebpackBaseConfig(options = {}) {
entry: webpackConfig.entry,
output: webpackConfig.output,
resolve: webpackConfig.resolve,
+ externals: webpackConfig.externals,
plugins: [
new MiniCssExtractPlugin({
filename: 'client/[name].css',
diff --git a/packages/rax-scripts/src/config/webpack.config.js b/packages/rax-scripts/src/config/webpack.config.js
index 8ec055a5a5..9d3b8bbee1 100644
--- a/packages/rax-scripts/src/config/webpack.config.js
+++ b/packages/rax-scripts/src/config/webpack.config.js
@@ -31,6 +31,16 @@ module.exports = {
},
extensions: ['.js', '.json', '.jsx', '.html', '.vue', '.sfc', '.ts', '.tsx'],
},
+
+ externals: [
+ function(context, request, callback) {
+ if (request.indexOf('@weex-module') === 0) {
+ return callback(null, 'commonjs ' + request);
+ }
+ callback();
+ }
+ ],
+
output: {
pathinfo: process.env.NODE_ENV === 'development',
// Next line is not used in dev but WebpackDevServer crashes without it:
diff --git a/packages/universal-app-runtime/package.json b/packages/universal-app-runtime/package.json
index 5c6e62aabb..9239022efa 100644
--- a/packages/universal-app-runtime/package.json
+++ b/packages/universal-app-runtime/package.json
@@ -1,6 +1,6 @@
{
"name": "universal-app-runtime",
- "version": "0.1.4",
+ "version": "0.1.5-0",
"description": "Provide framework level runtime support of universal app.",
"main": "src/index.js",
"author": "Rax Team",
diff --git a/packages/universal-app-runtime/src/router.js b/packages/universal-app-runtime/src/router.js
index 3034d30c26..03726c2637 100644
--- a/packages/universal-app-runtime/src/router.js
+++ b/packages/universal-app-runtime/src/router.js
@@ -50,7 +50,7 @@ export function useRouter(routerConfig) {
return null;
} else {
// process Page.getInitialProps
- if (_currentPagePath !== _history.location.pathname) {
+ if (isWeb && _currentPagePath !== _history.location.pathname) {
_initialProps = {};
_currentPagePath = _history.location.pathname;
// SSR project the first time is initialized from global data,
diff --git a/packages/universal-app-shell-loader/package.json b/packages/universal-app-shell-loader/package.json
index 2bf80e52aa..1eadc4ffb6 100644
--- a/packages/universal-app-shell-loader/package.json
+++ b/packages/universal-app-shell-loader/package.json
@@ -1,6 +1,6 @@
{
"name": "universal-app-shell-loader",
- "version": "0.2.0-4",
+ "version": "0.2.0-5",
"description": "Universal App Shell for Rax",
"license": "BSD-3-Clause",
"main": "src/index.js",