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",