Skip to content

Commit

Permalink
refactor(cli): 兼容 taro 2 访问 config 的方法 (#6412)
Browse files Browse the repository at this point in the history
  • Loading branch information
yuche committed May 22, 2020
1 parent cec445c commit 92d0cc4
Show file tree
Hide file tree
Showing 36 changed files with 1,120 additions and 578 deletions.
5 changes: 4 additions & 1 deletion packages/taro-loader/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@ export default function (this: webpack.loader.LoaderContext) {

const options = getOptions(this)
const method = options.framework === 'vue' ? 'createVueApp' : 'createReactApp'
const config = JSON.stringify(options.config)
const prerender = `
if (typeof PRERENDER !== 'undefined') {
global._prerender = inst
}`
return `import { ${method} } from '@tarojs/runtime'
return `import { ${method}, window } from '@tarojs/runtime'
import component from ${stringify(this.request.split('!').slice(1).join('!'))}
${importFramework(options.framework)}
var config = ${config};
window.__taroAppConfig = config
var inst = App(${method}(component, ${getFrameworkArgs(options.framework)}))
${options.prerender ? prerender : ''}
`
Expand Down
2 changes: 2 additions & 0 deletions packages/taro-loader/src/h5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,14 @@ import '@tarojs/components/h5/vue'

const code = `import Taro from '@tarojs/taro'
import component from ${stringify(join(dirname(this.resourcePath), options.filename))}
import { window } from '@tarojs/runtime'
import { defineCustomElements, applyPolyfills } from '@tarojs/components/loader'
${importFramework(options.framework)}
import '@tarojs/components/dist/taro-components/taro-components.css'
${options.framework === 'vue' ? vue : ''}
${webComponents}
const config = ${JSON.stringify(config)}
window.__taroAppConfig = config
${config.tabBar ? tabBarCode : ''}
if (config.tabBar) {
const tabbarList = config.tabBar.list
Expand Down
6 changes: 3 additions & 3 deletions packages/taro-loader/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import ReactDOM from 'react-dom'

export function getFrameworkArgs (framework: string) {
if (framework === 'vue') {
return 'Vue'
return 'Vue, config'
} else if (framework === 'nerv') {
return 'Nerv, Nerv'
return 'Nerv, Nerv, config'
}
return 'React, ReactDOM'
return 'React, ReactDOM, config'
}
Original file line number Diff line number Diff line change
Expand Up @@ -4398,7 +4398,17 @@ require(\\"./taro\\");
}(react[\\"Component\\"]);
var lib_src_app = app_App;
var react_esm = __webpack_require__(17);
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"]));
var config = {
pages: [ \\"pages/index/index\\" ],
window: {
backgroundTextStyle: \\"light\\",
navigationBarBackgroundColor: \\"#fff\\",
navigationBarTitleText: \\"WeChat\\",
navigationBarTextStyle: \\"black\\"
}
};
runtime_esm[\\"window\\"].__taroAppConfig = config;
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"], config));
}
}, [ [ 35, 0, 1, 2 ] ] ]);

Expand Down Expand Up @@ -9414,7 +9424,7 @@ object-assign
var R = EMPTY_OBJ;
var PageContext = EMPTY_OBJ;
var ReactDOM;
function createReactApp(App, react, reactdom) {
function createReactApp(App, react, reactdom, config) {
R = react;
ReactDOM = reactdom;
ensure(!!ReactDOM, \\"\\\\u6784\\\\u5efa React/Nerv \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'react'/'nerv' \\");
Expand Down Expand Up @@ -9471,6 +9481,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down Expand Up @@ -9555,7 +9566,7 @@ object-assign
};
}
var Vue;
function createVueApp(App, vue) {
function createVueApp(App, vue, config) {
Vue = vue;
ensure(!!Vue, \\"\\\\u6784\\\\u5efa Vue \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'vue'\\");
Vue.config.getTagNamespace = noop;
Expand Down Expand Up @@ -9603,6 +9614,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4398,7 +4398,17 @@ require(\\"./taro\\");
}(react[\\"Component\\"]);
var lib_src_app = app_App;
var react_esm = __webpack_require__(16);
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"]));
var config = {
pages: [ \\"pages/index/index\\" ],
window: {
backgroundTextStyle: \\"light\\",
navigationBarBackgroundColor: \\"#fff\\",
navigationBarTitleText: \\"WeChat\\",
navigationBarTextStyle: \\"black\\"
}
};
runtime_esm[\\"window\\"].__taroAppConfig = config;
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"], config));
}
}, [ [ 30, 0, 1, 2 ] ] ]);

Expand Down Expand Up @@ -8441,7 +8451,7 @@ object-assign
var R = EMPTY_OBJ;
var PageContext = EMPTY_OBJ;
var ReactDOM;
function createReactApp(App, react, reactdom) {
function createReactApp(App, react, reactdom, config) {
R = react;
ReactDOM = reactdom;
ensure(!!ReactDOM, \\"\\\\u6784\\\\u5efa React/Nerv \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'react'/'nerv' \\");
Expand Down Expand Up @@ -8498,6 +8508,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down Expand Up @@ -8582,7 +8593,7 @@ object-assign
};
}
var Vue;
function createVueApp(App, vue) {
function createVueApp(App, vue, config) {
Vue = vue;
ensure(!!Vue, \\"\\\\u6784\\\\u5efa Vue \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'vue'\\");
Vue.config.getTagNamespace = noop;
Expand Down Expand Up @@ -8630,6 +8641,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4398,7 +4398,17 @@ require(\\"./taro\\");
}(react[\\"Component\\"]);
var lib_src_app = app_App;
var react_esm = __webpack_require__(17);
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"]));
var config = {
pages: [ \\"pages/index/index\\" ],
window: {
backgroundTextStyle: \\"light\\",
navigationBarBackgroundColor: \\"#fff\\",
navigationBarTitleText: \\"WeChat\\",
navigationBarTextStyle: \\"black\\"
}
};
runtime_esm[\\"window\\"].__taroAppConfig = config;
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"], config));
}
}, [ [ 35, 0, 1, 2 ] ] ]);

Expand Down Expand Up @@ -9416,7 +9426,7 @@ object-assign
var R = EMPTY_OBJ;
var PageContext = EMPTY_OBJ;
var ReactDOM;
function createReactApp(App, react, reactdom) {
function createReactApp(App, react, reactdom, config) {
R = react;
ReactDOM = reactdom;
ensure(!!ReactDOM, \\"\\\\u6784\\\\u5efa React/Nerv \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'react'/'nerv' \\");
Expand Down Expand Up @@ -9473,6 +9483,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down Expand Up @@ -9557,7 +9568,7 @@ object-assign
};
}
var Vue;
function createVueApp(App, vue) {
function createVueApp(App, vue, config) {
Vue = vue;
ensure(!!Vue, \\"\\\\u6784\\\\u5efa Vue \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'vue'\\");
Vue.config.getTagNamespace = noop;
Expand Down Expand Up @@ -9605,6 +9616,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ require(\\"./taro\\");
var _typeof = __webpack_require__(15);
module.exports = function $$$reconciler($$$hostConfig) {
\\"use strict\\";
var aa = __webpack_require__(28), ba = __webpack_require__(3), m = __webpack_require__(12);
var aa = __webpack_require__(28), ba = __webpack_require__(4), m = __webpack_require__(12);
function n(a) {
for (var b = \\"https://reactjs.org/docs/error-decoder.html?invariant=\\" + a, c = 1; c < arguments.length; c++) {
b += \\"&args[]=\\" + encodeURIComponent(arguments[c]);
Expand Down Expand Up @@ -4359,18 +4359,18 @@ require(\\"./taro\\");
return M(O);
};
exports.unstable_Profiling = null;
}).call(this, __webpack_require__(4)[\\"window\\"]);
}).call(this, __webpack_require__(3)[\\"window\\"]);
},
32: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.r(__webpack_exports__);
var runtime_esm = __webpack_require__(4);
var runtime_esm = __webpack_require__(3);
var classCallCheck = __webpack_require__(0);
var createClass = __webpack_require__(1);
var possibleConstructorReturn = __webpack_require__(5);
var getPrototypeOf = __webpack_require__(2);
var inherits = __webpack_require__(6);
var react = __webpack_require__(3);
var react = __webpack_require__(4);
var app = __webpack_require__(26);
var app_App = function(_Component) {
Object(inherits[\\"a\\"])(App, _Component);
Expand Down Expand Up @@ -4400,7 +4400,17 @@ require(\\"./taro\\");
}(react[\\"Component\\"]);
var lib_src_app = app_App;
var react_esm = __webpack_require__(17);
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"]));
var config = {
pages: [ \\"pages/index/index\\", \\"pages/about/index\\" ],
window: {
backgroundTextStyle: \\"light\\",
navigationBarBackgroundColor: \\"#fff\\",
navigationBarTitleText: \\"WeChat\\",
navigationBarTextStyle: \\"black\\"
}
};
runtime_esm[\\"window\\"].__taroAppConfig = config;
var inst = App(Object(runtime_esm[\\"createReactApp\\"])(lib_src_app, react, react_esm[\\"a\\"], config));
}
}, [ [ 32, 0, 1, 2 ] ] ]);

Expand Down Expand Up @@ -5100,7 +5110,7 @@ object-assign
var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);
var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6);
var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
var react__WEBPACK_IMPORTED_MODULE_5___default = __webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);
var _tarojs_components__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
var _index_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(31);
Expand Down Expand Up @@ -5133,7 +5143,7 @@ object-assign
30: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.r(__webpack_exports__);
var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
Component(Object(_tarojs_runtime__WEBPACK_IMPORTED_MODULE_0__[\\"createRecursiveComponentConfig\\"])());
}
}, [ [ 30, 0, 1, 2 ] ] ]);
Expand All @@ -5150,13 +5160,13 @@ object-assign
34: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.r(__webpack_exports__);
var runtime_esm = __webpack_require__(4);
var runtime_esm = __webpack_require__(3);
var classCallCheck = __webpack_require__(0);
var createClass = __webpack_require__(1);
var possibleConstructorReturn = __webpack_require__(5);
var getPrototypeOf = __webpack_require__(2);
var inherits = __webpack_require__(6);
var react = __webpack_require__(3);
var react = __webpack_require__(4);
var react_default = __webpack_require__.n(react);
var mini = __webpack_require__(7);
var title = __webpack_require__(14);
Expand Down Expand Up @@ -5194,13 +5204,13 @@ object-assign
33: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.r(__webpack_exports__);
var runtime_esm = __webpack_require__(4);
var runtime_esm = __webpack_require__(3);
var classCallCheck = __webpack_require__(0);
var createClass = __webpack_require__(1);
var possibleConstructorReturn = __webpack_require__(5);
var getPrototypeOf = __webpack_require__(2);
var inherits = __webpack_require__(6);
var react = __webpack_require__(3);
var react = __webpack_require__(4);
var react_default = __webpack_require__.n(react);
var mini = __webpack_require__(7);
var title = __webpack_require__(14);
Expand Down Expand Up @@ -5361,7 +5371,7 @@ object-assign
var react_reconciler__WEBPACK_IMPORTED_MODULE_3___default = __webpack_require__.n(react_reconciler__WEBPACK_IMPORTED_MODULE_3__);
var scheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
var scheduler__WEBPACK_IMPORTED_MODULE_4___default = __webpack_require__.n(scheduler__WEBPACK_IMPORTED_MODULE_4__);
var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
var _tarojs_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3);
function isString(o) {
return typeof o === \\"string\\";
}
Expand Down Expand Up @@ -5711,7 +5721,7 @@ object-assign
};
__webpack_exports__[\\"a\\"] = index;
},
4: function(module, __webpack_exports__, __webpack_require__) {
3: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.r(__webpack_exports__);
(function(document, window, requestAnimationFrame, cancelAnimationFrame) {
Expand Down Expand Up @@ -8467,7 +8477,7 @@ object-assign
var R = EMPTY_OBJ;
var PageContext = EMPTY_OBJ;
var ReactDOM;
function createReactApp(App, react, reactdom) {
function createReactApp(App, react, reactdom, config) {
R = react;
ReactDOM = reactdom;
ensure(!!ReactDOM, \\"\\\\u6784\\\\u5efa React/Nerv \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'react'/'nerv' \\");
Expand Down Expand Up @@ -8524,6 +8534,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down Expand Up @@ -8608,7 +8619,7 @@ object-assign
};
}
var Vue;
function createVueApp(App, vue) {
function createVueApp(App, vue, config) {
Vue = vue;
ensure(!!Vue, \\"\\\\u6784\\\\u5efa Vue \\\\u9879\\\\u76ee\\\\u8bf7\\\\u628a process.env.FRAMEWORK \\\\u8bbe\\\\u7f6e\\\\u4e3a 'vue'\\");
Vue.config.getTagNamespace = noop;
Expand Down Expand Up @@ -8656,6 +8667,7 @@ object-assign
var AppConfig = function() {
function AppConfig() {
Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_8__[\\"a\\"])(this, AppConfig);
this.config = config;
}
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_9__[\\"a\\"])(AppConfig, [ {
key: \\"onLaunch\\",
Expand Down Expand Up @@ -8772,7 +8784,7 @@ object-assign
timerFunc();
}
};
}).call(this, __webpack_require__(4)[\\"document\\"], __webpack_require__(4)[\\"window\\"], __webpack_require__(4)[\\"requestAnimationFrame\\"], __webpack_require__(4)[\\"cancelAnimationFrame\\"]);
}).call(this, __webpack_require__(3)[\\"document\\"], __webpack_require__(3)[\\"window\\"], __webpack_require__(3)[\\"requestAnimationFrame\\"], __webpack_require__(3)[\\"cancelAnimationFrame\\"]);
},
7: function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
Expand Down Expand Up @@ -8872,12 +8884,12 @@ object-assign
};
return _getPrototypeOf(o);
}
}, function(module, exports, __webpack_require__) {
}, , function(module, exports, __webpack_require__) {
\\"use strict\\";
if (true) {
module.exports = __webpack_require__(24);
} else {}
}, , function(module, __webpack_exports__, __webpack_require__) {
}, function(module, __webpack_exports__, __webpack_require__) {
\\"use strict\\";
__webpack_require__.d(__webpack_exports__, \\"a\\", (function() {
return _possibleConstructorReturn;
Expand Down

0 comments on commit 92d0cc4

Please sign in to comment.