From 656b96039952636e9118a86872ab307421c96ffc Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 26 Dec 2019 14:44:02 +0800 Subject: [PATCH] feat(v3): renderjs --- .../vue-cli-plugin-hbuilderx/module-alias.js | 4 +- .../packages/weex-template-compiler/build.js | 10 +- .../vue-cli-plugin-uni/lib/app-plus/index.js | 19 +- packages/vue-cli-plugin-uni/lib/vue-loader.js | 10 +- .../component-compiler-utils/CHANGELOG.md | 259 ++++++++++++++++++ .../@vue/component-compiler-utils/MODIFY.md | 3 + .../@vue/component-compiler-utils/README.md | 153 +++++++++++ .../dist/compileTemplate.js | 117 ++++++++ .../component-compiler-utils/dist/parse.js | 62 +++++ .../lib/compileStyle.ts | 143 ++++++++++ .../lib/compileTemplate.ts | 194 +++++++++++++ .../component-compiler-utils/lib/index.ts | 28 ++ .../component-compiler-utils/lib/parse.ts | 123 +++++++++ .../lib/stylePlugins/scoped.ts | 101 +++++++ .../lib/stylePlugins/trim.ts | 11 + .../lib/styleProcessors/index.ts | 133 +++++++++ .../lib/templateCompilerModules/assetUrl.ts | 53 ++++ .../lib/templateCompilerModules/srcset.ts | 66 +++++ .../lib/templateCompilerModules/utils.ts | 54 ++++ .../component-compiler-utils/lib/types.ts | 56 ++++ .../component-compiler-utils/package.json | 69 +++++ .../packages/vue-loader/lib/index.js | 5 +- .../packages/vue-template-compiler/browser.js | 2 +- .../packages/vue-template-compiler/build.js | 2 +- .../{index.js => index.bak.js} | 11 +- .../webpack-uni-app-loader/view/renderjs.js | 18 ++ 26 files changed, 1688 insertions(+), 18 deletions(-) create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/CHANGELOG.md create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/MODIFY.md create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/README.md create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/compileTemplate.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/parse.js create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/compileStyle.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/compileTemplate.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/index.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/parse.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/stylePlugins/scoped.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/stylePlugins/trim.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/styleProcessors/index.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/templateCompilerModules/assetUrl.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/templateCompilerModules/srcset.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/templateCompilerModules/utils.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/lib/types.ts create mode 100644 packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/package.json rename packages/vue-cli-plugin-uni/packages/webpack-custom-block-loader/{index.js => index.bak.js} (86%) create mode 100644 packages/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/renderjs.js diff --git a/packages/vue-cli-plugin-hbuilderx/module-alias.js b/packages/vue-cli-plugin-hbuilderx/module-alias.js index a9147005d..d6d54afe7 100644 --- a/packages/vue-cli-plugin-hbuilderx/module-alias.js +++ b/packages/vue-cli-plugin-hbuilderx/module-alias.js @@ -9,8 +9,8 @@ const { // nvue override moduleAlias.addAlias('weex-styler', path.resolve(__dirname, 'packages/weex-styler')) moduleAlias.addAlias('weex-template-compiler', path.resolve(__dirname, 'packages/weex-template-compiler')) -moduleAlias.addAlias('./compileTemplate', require.resolve( - '@dcloudio/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/dist/compileTemplate')) +moduleAlias.addAlias('@vue/component-compiler-utils', require.resolve('@dcloudio/vue-cli-plugin-uni/packages/@vue/component-compiler-utils')) +moduleAlias.addAlias('@vue/component-compiler-utils/package.json', require.resolve('@dcloudio/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/package.json')) if (isInHBuilderX) { moduleAlias.addAlias('typescript', path.resolve(process.env.UNI_HBUILDERX_PLUGINS, diff --git a/packages/vue-cli-plugin-hbuilderx/packages/weex-template-compiler/build.js b/packages/vue-cli-plugin-hbuilderx/packages/weex-template-compiler/build.js index bab314c1f..23292e6b7 100644 --- a/packages/vue-cli-plugin-hbuilderx/packages/weex-template-compiler/build.js +++ b/packages/vue-cli-plugin-hbuilderx/packages/weex-template-compiler/build.js @@ -555,7 +555,7 @@ function parseHTML (html, options) { var splitRE = /\r?\n/g; var replaceRE = /./g; var isSpecialTag = makeMap('script,style,template', true); -var isCustomBlock = makeMap('wxs,filter,sjs', true);// fixed by xxxxxx +var isCustomBlock = makeMap('wxs,filter,sjs,renderjs', true);// fixed by xxxxxx /** * Parse a single-file component (*.vue) file into an SFC Descriptor Object. @@ -2779,7 +2779,13 @@ var uid = 0; * directives subscribing to it. */ var Dep = function Dep () { - this.id = uid++; + // fixed by xxxxxx (nvue vuex) + /* eslint-disable no-undef */ + if(typeof SharedObject !== 'undefined'){ + this.id = SharedObject.uid++; + } else { + this.id = uid++; + } this.subs = []; }; diff --git a/packages/vue-cli-plugin-uni/lib/app-plus/index.js b/packages/vue-cli-plugin-uni/lib/app-plus/index.js index 2528bc771..0267e47dc 100644 --- a/packages/vue-cli-plugin-uni/lib/app-plus/index.js +++ b/packages/vue-cli-plugin-uni/lib/app-plus/index.js @@ -88,6 +88,13 @@ const v3 = { loader: path.resolve(__dirname, '../../packages/webpack-uni-app-loader/view/script') }) + // view 层 renderjs + rules.push({ + resourceQuery: [/lang=renderjs/, /blockType=renderjs/], + use: [{ + loader: path.resolve(__dirname, '../../packages/webpack-uni-app-loader/view/renderjs') + }] + }) } scriptLoaders.push({ loader: path.resolve(__dirname, @@ -245,11 +252,13 @@ const v3 = { compilerOptions }, cacheConfig)) .end() - .use('uniapp-custom-block-loader') - .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) - .options({ - compiler: getPlatformCompiler() - }) + // .use('uniapp-custom-block-loader') + // .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) + // .options({ + // isAppService, + // isAppView, + // compiler: getPlatformCompiler() + // }) // 是否启用 cache if (process.env.UNI_USING_CACHE) { diff --git a/packages/vue-cli-plugin-uni/lib/vue-loader.js b/packages/vue-cli-plugin-uni/lib/vue-loader.js index fc030cf15..fdb07275e 100644 --- a/packages/vue-cli-plugin-uni/lib/vue-loader.js +++ b/packages/vue-cli-plugin-uni/lib/vue-loader.js @@ -35,11 +35,11 @@ module.exports = function modifyVueLoader (webpackConfig, compilerOptions, api) }, compilerOptions) }, cacheConfig)) .end() - .use('uniapp-custom-block-loader') - .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) - .options({ - compiler: getPlatformCompiler() - }) + // .use('uniapp-custom-block-loader') + // .loader(require.resolve('@dcloudio/vue-cli-plugin-uni/packages/webpack-custom-block-loader')) + // .options({ + // compiler: getPlatformCompiler() + // }) // h5 框架需要使用 scoped 样式,其他平台编译时识别是否 nvue 文件且注入 flex 相关样式 if (process.env.UNI_PLATFORM === 'h5') { diff --git a/packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/CHANGELOG.md b/packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/CHANGELOG.md new file mode 100644 index 000000000..24b0b5bc5 --- /dev/null +++ b/packages/vue-cli-plugin-uni/packages/@vue/component-compiler-utils/CHANGELOG.md @@ -0,0 +1,259 @@ +# [3.1.0](https://github.com/vuejs/component-compiler-utils/compare/v3.0.2...v3.1.0) (2019-12-08) + + +### Features + +* include filename in `finalCompilerOptions` ([#74](https://github.com/vuejs/component-compiler-utils/issues/74)) ([3dda72d](https://github.com/vuejs/component-compiler-utils/commit/3dda72d)) +* support AST for template compile ([#68](https://github.com/vuejs/component-compiler-utils/issues/68)) ([ed44d6f](https://github.com/vuejs/component-compiler-utils/commit/ed44d6f)) +* support audio src in `transformAssetUrls` option by default ([#72](https://github.com/vuejs/component-compiler-utils/issues/72)) ([47f1341](https://github.com/vuejs/component-compiler-utils/commit/47f1341)) + + + +## [3.0.2](https://github.com/vuejs/component-compiler-utils/compare/v3.0.1...v3.0.2) (2019-11-06) + + +### Bug Fixes + +* also include "lib" folder for type definitions ([dd42df1](https://github.com/vuejs/component-compiler-utils/commit/dd42df1)), closes [#73](https://github.com/vuejs/component-compiler-utils/issues/73) + + + +## [3.0.1](https://github.com/vuejs/component-compiler-utils/compare/v3.0.0...v3.0.1) (2019-11-04) + + +### Bug Fixes + +* should not crash when prettier failed ([89e7900](https://github.com/vuejs/component-compiler-utils/commit/89e7900)) +* unpin prettier version ([59a01bb](https://github.com/vuejs/component-compiler-utils/commit/59a01bb)) + + +# [3.0.0](https://github.com/vuejs/component-compiler-utils/compare/v2.6.0...v3.0.0) (2019-04-11) + + +### Features + +* Replace node-sass to sass ([#56](https://github.com/vuejs/component-compiler-utils/issues/56)) ([3e4e3fc](https://github.com/vuejs/component-compiler-utils/commit/3e4e3fc)), closes [#50](https://github.com/vuejs/component-compiler-utils/issues/50) + + +### BREAKING CHANGES + +* Using `sass` instead of `node-sass` package. + + + +# [2.6.0](https://github.com/vuejs/component-compiler-utils/compare/v2.5.2...v2.6.0) (2019-02-21) + + +### Features + +* implement ::v-deep as a shadow piercing combinator ([#54](https://github.com/vuejs/component-compiler-utils/issues/54)) ([8b2c646](https://github.com/vuejs/component-compiler-utils/commit/8b2c646)) + + + +# [2.6.0](https://github.com/vuejs/component-compiler-utils/compare/v2.5.2...v2.6.0) (2019-02-21) + + +### Features + +* implement ::v-deep as a shadow piercing combinator ([#54](https://github.com/vuejs/component-compiler-utils/issues/54)) ([8b2c646](https://github.com/vuejs/component-compiler-utils/commit/8b2c646)) + + + +## [2.5.2](https://github.com/vuejs/component-compiler-utils/compare/v2.5.0...v2.5.2) (2019-01-31) + + +### Bug Fixes + +* fix sourceMap path separator on Windows, default sourceRoot to "" ([#51](https://github.com/vuejs/component-compiler-utils/issues/51)) ([df32cd9](https://github.com/vuejs/component-compiler-utils/commit/df32cd9)), closes [#47](https://github.com/vuejs/component-compiler-utils/issues/47) +* generate correct source-map when content is not padded ([#52](https://github.com/vuejs/component-compiler-utils/issues/52)) ([81be0ca](https://github.com/vuejs/component-compiler-utils/commit/81be0ca)) + + + +## [2.5.1](https://github.com/vuejs/component-compiler-utils/compare/v2.5.0...v2.5.1) (2019-01-25) + + +### Bug Fixes + +* fix sourceMap path separator on Windows, default sourceRoot to "" ([#51](https://github.com/vuejs/component-compiler-utils/issues/51)) ([df32cd9](https://github.com/vuejs/component-compiler-utils/commit/df32cd9)), closes [#47](https://github.com/vuejs/component-compiler-utils/issues/47) + + + +# [2.5.0](https://github.com/vuejs/component-compiler-utils/compare/v2.4.0...v2.5.0) (2019-01-08) + + +### Features + +* add 'use' tag of SVG to 'transformAssetUrls' option as default ([#45](https://github.com/vuejs/component-compiler-utils/issues/45)) ([f4e3336](https://github.com/vuejs/component-compiler-utils/commit/f4e3336)) + + + +# [2.4.0](https://github.com/vuejs/component-compiler-utils/compare/v2.0.0...v2.4.0) (2019-01-02) + + +### Bug Fixes + +* do not insert newline if style is already minified ([2603ee2](https://github.com/vuejs/component-compiler-utils/commit/2603ee2)) +* Forward preprocessor options to less ([#25](https://github.com/vuejs/component-compiler-utils/issues/25)) ([3b19c1e](https://github.com/vuejs/component-compiler-utils/commit/3b19c1e)), closes [#24](https://github.com/vuejs/component-compiler-utils/issues/24) +* Move trim and scoped postcss plugins at the start of plugin list ([#36](https://github.com/vuejs/component-compiler-utils/issues/36)) ([0d52d86](https://github.com/vuejs/component-compiler-utils/commit/0d52d86)) +* pin prettier version ([5f138a6](https://github.com/vuejs/component-compiler-utils/commit/5f138a6)) +* remove space after selector when inserting scoped attribute ([5b299ed](https://github.com/vuejs/component-compiler-utils/commit/5b299ed)), closes [vue-loader/#1370](https://github.com/vuejs/component-compiler-utils/issues/1370) +* should work with variable named render (close [#23](https://github.com/vuejs/component-compiler-utils/issues/23)) ([273827b](https://github.com/vuejs/component-compiler-utils/commit/273827b)) +* support standalone pseudo element selectors ([#33](https://github.com/vuejs/component-compiler-utils/issues/33)) ([d6cfbbf](https://github.com/vuejs/component-compiler-utils/commit/d6cfbbf)) +* Typings for SFCDescriptor and SFCCustomBlock ([#29](https://github.com/vuejs/component-compiler-utils/issues/29)) ([bb09115](https://github.com/vuejs/component-compiler-utils/commit/bb09115)) + + +### Features + +* **scoped-css:** support leading >>> or /deep/ in selectors ([1a3b5bb](https://github.com/vuejs/component-compiler-utils/commit/1a3b5bb)) +* add `prettify ` option ([#42](https://github.com/vuejs/component-compiler-utils/issues/42)) ([db3655b](https://github.com/vuejs/component-compiler-utils/commit/db3655b)) +* Support `stylus` as `