From e847af404a9a087e005b794d1d97ddbe0db11de4 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 31 Jul 2021 12:31:32 +0800 Subject: [PATCH] wip(app): nvue --- packages/shims-node.d.ts | 1 - .../dist/plugin/configResolved.js | 8 - .../uni-app-vite/src/plugin/configResolved.ts | 12 -- packages/uni-cli-nvue/dist/types.js | 1 + packages/uni-cli-nvue/dist/utils/env.js | 9 + .../uni-cli-nvue/dist/webpack/config/index.js | 6 +- .../dist/webpack/config/module/index.js | 4 +- .../config/module/rules/babelLoader.js | 8 + .../config/module/rules/cssLoader/index.js | 32 +-- .../config/module/rules/cssLoader/oneOf.js | 23 +- .../dist/webpack/config/module/rules/index.js | 4 +- .../rules/vueLoader/compilerOptions/index.js | 4 +- .../compilerOptions/modules/index.js | 4 +- .../config/module/rules/vueLoader/index.js | 12 +- .../dist/webpack/config/optimization.js | 1 + .../dist/webpack/config/plugins/banner.js | 9 +- .../dist/webpack/config/resolve.js | 50 +++-- packages/uni-cli-nvue/dist/webpack/index.js | 14 +- .../dist/webpack/loader/preprocess.js | 8 +- .../dist/webpack/plugin/BannerPlugin.js | 41 ++++ .../dist/stylePlugins/remove-scoped.js | 102 +++++---- .../dist/stylePlugins/scoped.js | 200 +++++++++--------- .../dist/stylePlugins/trim.js | 31 ++- .../uni-cli-nvue/lib/weex-styler/index.js | 6 +- packages/uni-cli-nvue/package.json | 4 +- packages/uni-cli-nvue/src/types.ts | 4 + packages/uni-cli-nvue/src/utils/env.ts | 5 + .../uni-cli-nvue/src/webpack/config/index.ts | 7 +- .../src/webpack/config/module/index.ts | 6 +- .../config/module/rules/babelLoader.ts | 9 +- .../config/module/rules/cssLoader/index.ts | 32 +-- .../config/module/rules/cssLoader/oneOf.ts | 23 +- .../src/webpack/config/module/rules/index.ts | 4 +- .../rules/vueLoader/compilerOptions/index.ts | 6 +- .../compilerOptions/modules/index.ts | 4 +- .../config/module/rules/vueLoader/index.ts | 12 +- .../src/webpack/config/optimization.ts | 1 + .../src/webpack/config/plugins/banner.ts | 4 +- .../src/webpack/config/resolve.ts | 47 ++-- packages/uni-cli-nvue/src/webpack/index.ts | 17 +- .../src/webpack/loader/preprocess.ts | 15 +- .../src/webpack/plugin/BannerPlugin.ts | 49 +++++ packages/vite-plugin-uni/src/cli/action.ts | 27 +-- packages/vite-plugin-uni/src/cli/nvue.ts | 47 ++++ yarn.lock | 34 ++- 45 files changed, 560 insertions(+), 387 deletions(-) create mode 100644 packages/uni-cli-nvue/dist/types.js create mode 100644 packages/uni-cli-nvue/dist/utils/env.js create mode 100644 packages/uni-cli-nvue/dist/webpack/plugin/BannerPlugin.js create mode 100644 packages/uni-cli-nvue/src/types.ts create mode 100644 packages/uni-cli-nvue/src/utils/env.ts create mode 100644 packages/uni-cli-nvue/src/webpack/plugin/BannerPlugin.ts create mode 100644 packages/vite-plugin-uni/src/cli/nvue.ts diff --git a/packages/shims-node.d.ts b/packages/shims-node.d.ts index 6cd5e1bd5..0bb241a8f 100644 --- a/packages/shims-node.d.ts +++ b/packages/shims-node.d.ts @@ -9,6 +9,5 @@ declare namespace NodeJS { UNI_CLI_CONTEXT: string UNI_COMPILER_VERSION: string UNI_HBUILDERX_PLUGINS: string - UNI_NVUE_COMPILER: 'uni-app' | 'weex' } } diff --git a/packages/uni-app-vite/dist/plugin/configResolved.js b/packages/uni-app-vite/dist/plugin/configResolved.js index ffee16f40..096fdb713 100644 --- a/packages/uni-app-vite/dist/plugin/configResolved.js +++ b/packages/uni-app-vite/dist/plugin/configResolved.js @@ -1,17 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configResolved = void 0; -const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); const asset_1 = require("../plugins/vitejs/plugins/asset"); const css_1 = require("../plugins/vitejs/plugins/css"); const configResolved = (config) => { - const manifestJson = uni_cli_shared_1.parseManifestJsonOnce(process.env.UNI_INPUT_DIR); - if (uni_cli_shared_1.getNVueCompiler(manifestJson) === 'uni-app') { - process.env.UNI_USING_NVUE_COMPILER = 'uni-app'; - } - if (uni_cli_shared_1.getNVueStyleCompiler(manifestJson) === 'uni-app') { - process.env.UNI_USING_NVUE_STYLE_COMPILER = 'uni-app'; - } if (process.env.UNI_APP_CODE_SPLITING) { initCodeSpliting(config); } diff --git a/packages/uni-app-vite/src/plugin/configResolved.ts b/packages/uni-app-vite/src/plugin/configResolved.ts index 53e202e58..663ae565d 100644 --- a/packages/uni-app-vite/src/plugin/configResolved.ts +++ b/packages/uni-app-vite/src/plugin/configResolved.ts @@ -1,21 +1,9 @@ import { Plugin, ResolvedConfig } from 'vite' -import { - parseManifestJsonOnce, - getNVueCompiler, - getNVueStyleCompiler, -} from '@dcloudio/uni-cli-shared' import { assetPlugin } from '../plugins/vitejs/plugins/asset' import { cssPlugin, cssPostPlugin } from '../plugins/vitejs/plugins/css' export const configResolved: Plugin['configResolved'] = (config) => { - const manifestJson = parseManifestJsonOnce(process.env.UNI_INPUT_DIR) - if (getNVueCompiler(manifestJson) === 'uni-app') { - process.env.UNI_USING_NVUE_COMPILER = 'uni-app' - } - if (getNVueStyleCompiler(manifestJson) === 'uni-app') { - process.env.UNI_USING_NVUE_STYLE_COMPILER = 'uni-app' - } if (process.env.UNI_APP_CODE_SPLITING) { initCodeSpliting(config as ResolvedConfig) } else { diff --git a/packages/uni-cli-nvue/dist/types.js b/packages/uni-cli-nvue/dist/types.js new file mode 100644 index 000000000..3918c74e4 --- /dev/null +++ b/packages/uni-cli-nvue/dist/types.js @@ -0,0 +1 @@ +"use strict"; diff --git a/packages/uni-cli-nvue/dist/utils/env.js b/packages/uni-cli-nvue/dist/utils/env.js new file mode 100644 index 000000000..c72cac70a --- /dev/null +++ b/packages/uni-cli-nvue/dist/utils/env.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initEnv = void 0; +function initEnv(options) { + if (options.styleCompiler === 'uni-app') { + process.env.UNI_NVUE_STYLE_COMPILER = 'uni-app'; + } +} +exports.initEnv = initEnv; diff --git a/packages/uni-cli-nvue/dist/webpack/config/index.js b/packages/uni-cli-nvue/dist/webpack/config/index.js index f094257eb..d0583be08 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/index.js @@ -5,7 +5,8 @@ const optimization_1 = require("./optimization"); const output_1 = require("./output"); const module_1 = require("./module"); const plugins_1 = require("./plugins"); -function createConfig(mode) { +const resolve_1 = require("./resolve"); +function createConfig(mode, options) { return { mode: mode, devtool: false, @@ -16,9 +17,10 @@ function createConfig(mode) { externals: { vue: 'Vue', }, + module: module_1.createModule(options), optimization: optimization_1.createOptimization(), output: output_1.createOutput(), - module: module_1.createModule(), + resolve: resolve_1.createResolve(), plugins: plugins_1.createPlugins(), }; } diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/index.js index fb5103dee..9e4db19a7 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/index.js @@ -2,9 +2,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.createModule = void 0; const rules_1 = require("./rules"); -function createModule() { +function createModule(options) { return { - rules: rules_1.createRules(), + rules: rules_1.createRules(options), }; } exports.createModule = createModule; diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/babelLoader.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/babelLoader.js index b6f85e5d0..c4b0ab51a 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/babelLoader.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/babelLoader.js @@ -1,6 +1,13 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBabelLoader = void 0; +const loader_1 = require("../../../loader"); +const preprocessLoader = { + loader: loader_1.resolveLoader('preprocess'), + options: { + type: ['js'], + }, +}; function createBabelLoader() { return { test: /\.js$/, @@ -11,6 +18,7 @@ function createBabelLoader() { babelrc: false, }, }, + preprocessLoader, ], }; } diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/index.js index f46e6bb07..d7511281b 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/index.js @@ -6,24 +6,24 @@ function createCssLoaders() { return [ { test: /\.css$/, - oneOf: oneOf_1.createOneOf() + oneOf: oneOf_1.createOneOf(), }, { test: /\.scss$/, - oneOf: oneOf_1.createOneOf(scssLoader) + oneOf: oneOf_1.createOneOf(scssLoader), }, { test: /\.sass$/, - oneOf: oneOf_1.createOneOf(sassLoader) + oneOf: oneOf_1.createOneOf(sassLoader), }, { test: /\.less$/, - oneOf: oneOf_1.createOneOf(lessLoader) + oneOf: oneOf_1.createOneOf(lessLoader), }, { test: /\.styl(us)?$/, - oneOf: oneOf_1.createOneOf(stylusLoader) - } + oneOf: oneOf_1.createOneOf(stylusLoader), + }, ]; } exports.createCssLoaders = createCssLoaders; @@ -33,9 +33,9 @@ const scssLoader = { sourceMap: false, additionalData: '@import "@/uni.scss";', sassOptions: { - outputStyle: 'expanded' - } - } + outputStyle: 'expanded', + }, + }, }; const sassLoader = { loader: require.resolve('sass-loader'), @@ -44,20 +44,20 @@ const sassLoader = { additionalData: '@import "@/uni.sass"', sassOptions: { outputStyle: 'expanded', - indentedSyntax: true - } - } + indentedSyntax: true, + }, + }, }; const lessLoader = { loader: require.resolve('less-loader'), options: { - sourceMap: false - } + sourceMap: false, + }, }; const stylusLoader = { loader: require.resolve('stylus-loader'), options: { sourceMap: false, - preferPathResolver: 'webpack' - } + preferPathResolver: 'webpack', + }, }; diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/oneOf.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/oneOf.js index 06f71eaad..a888b6c46 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/oneOf.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/cssLoader/oneOf.js @@ -7,7 +7,12 @@ exports.createOneOf = void 0; const path_1 = __importDefault(require("path")); const loader_1 = require("../../../../loader"); const styleLoader = { loader: loader_1.resolveLoader('style') }; -const preprocessLoader = { loader: loader_1.resolveLoader('preprocess') }; +const preprocessLoader = { + loader: loader_1.resolveLoader('preprocess'), + options: { + type: ['js'], + }, +}; const postcssLoader = { loader: require.resolve('postcss-loader'), options: { @@ -27,11 +32,11 @@ const postcssLoader = { return path_1.default.resolve(process.env.UNI_INPUT_DIR, id.substr(1)); } return id; - } - }) - ] - } - } + }, + }), + ], + }, + }, }; function createOneOf(preLoader) { const use = [styleLoader, preprocessLoader]; @@ -42,11 +47,11 @@ function createOneOf(preLoader) { return [ { resourceQuery: /\?vue/, - use + use, }, { - use - } + use, + }, ]; } exports.createOneOf = createOneOf; diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/index.js index 74a4c6003..f60bbfff6 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/index.js @@ -4,7 +4,7 @@ exports.createRules = void 0; const babelLoader_1 = require("./babelLoader"); const cssLoader_1 = require("./cssLoader"); const vueLoader_1 = require("./vueLoader"); -function createRules() { - return [vueLoader_1.createVueLoader(), babelLoader_1.createBabelLoader(), ...cssLoader_1.createCssLoaders()]; +function createRules(options) { + return [vueLoader_1.createVueLoader(options), babelLoader_1.createBabelLoader(), ...cssLoader_1.createCssLoaders()]; } exports.createRules = createRules; diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/index.js index c05f03a69..16cecd814 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/index.js @@ -2,9 +2,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.createCompilerOptions = void 0; const modules_1 = require("./modules"); -function createCompilerOptions() { +function createCompilerOptions(options) { return { - modules: modules_1.createModules(), + modules: modules_1.createModules(options), }; } exports.createCompilerOptions = createCompilerOptions; diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/modules/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/modules/index.js index 7496c742a..e8e083993 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/modules/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/compilerOptions/modules/index.js @@ -6,10 +6,10 @@ const boolAttr_1 = require("./boolAttr"); const easycom_1 = require("./easycom"); const renderWhole_1 = require("./renderWhole"); const tags_1 = require("./tags"); -function createModules() { +function createModules(options) { // 先处理 easycom const modules = [easycom_1.createEasycomModule(), renderWhole_1.createRenderWholeModule()]; - if (process.env.UNI_NVUE_COMPILER === 'uni-app') { + if (options.compiler === 'uni-app') { modules.push(tags_1.createTagsModule()); } modules.push(assetUrl_1.createAssetUrlModule()); diff --git a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/index.js b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/index.js index 1c8a37fb9..b3a5ea783 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/index.js +++ b/packages/uni-cli-nvue/dist/webpack/config/module/rules/vueLoader/index.js @@ -6,7 +6,14 @@ const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); const compilerOptions_1 = require("./compilerOptions"); const utils_1 = require("../../../../../utils"); const easycom_1 = require("./easycom"); -function createVueLoader() { +const loader_1 = require("../../../../loader"); +const preprocessLoader = { + loader: loader_1.resolveLoader('preprocess'), + options: { + type: ['js', 'html'], + }, +}; +function createVueLoader(options) { uni_cli_shared_1.initEasycomsOnce(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM); return { test: [/\.nvue(\?[^?]+)?$/, /\.vue(\?[^?]+)?$/], @@ -16,9 +23,10 @@ function createVueLoader() { options: { hotReload: false, compiler: createCompiler(), - compilerOptions: compilerOptions_1.createCompilerOptions(), + compilerOptions: compilerOptions_1.createCompilerOptions(options), }, }, + preprocessLoader, ], }; } diff --git a/packages/uni-cli-nvue/dist/webpack/config/optimization.js b/packages/uni-cli-nvue/dist/webpack/config/optimization.js index 6d977d2bc..3f0566c51 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/optimization.js +++ b/packages/uni-cli-nvue/dist/webpack/config/optimization.js @@ -8,6 +8,7 @@ const terser_webpack_plugin_1 = __importDefault(require("terser-webpack-plugin") function createOptimization() { return { nodeEnv: false, + moduleIds: 'deterministic', minimizer: [ new terser_webpack_plugin_1.default({ terserOptions: { diff --git a/packages/uni-cli-nvue/dist/webpack/config/plugins/banner.js b/packages/uni-cli-nvue/dist/webpack/config/plugins/banner.js index 6409bf8b3..0b147ef5f 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/plugins/banner.js +++ b/packages/uni-cli-nvue/dist/webpack/config/plugins/banner.js @@ -1,12 +1,13 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBannerPlugin = void 0; -const webpack_1 = require("webpack"); +const BannerPlugin_1 = __importDefault(require("../../plugin/BannerPlugin")); function createBannerPlugin() { - return new webpack_1.BannerPlugin({ + return new BannerPlugin_1.default({ banner: '"use weex:vue";', - raw: true, - exclude: 'Vue', }); } exports.createBannerPlugin = createBannerPlugin; diff --git a/packages/uni-cli-nvue/dist/webpack/config/resolve.js b/packages/uni-cli-nvue/dist/webpack/config/resolve.js index d6db08bbc..e18043493 100644 --- a/packages/uni-cli-nvue/dist/webpack/config/resolve.js +++ b/packages/uni-cli-nvue/dist/webpack/config/resolve.js @@ -3,30 +3,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.resolve = void 0; +exports.createResolve = void 0; const path_1 = __importDefault(require("path")); -const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); -const inputDir = process.env.UNI_INPUT_DIR; -exports.resolve = { - extensions: ['.js', '.nvue', '.vue', '.json'], - alias: { - '@': inputDir, - 'uni-pages': path_1.default.resolve(inputDir, 'pages.json'), - '@dcloudio/uni-stat': require.resolve('@dcloudio/uni-stat'), - 'uni-app-style': uni_cli_shared_1.resolveMainPathOnce(inputDir) + - '?' + - JSON.stringify({ - type: 'appStyle', - }), - 'uni-stat-config': path_1.default.resolve(inputDir, 'pages.json') + - '?' + - JSON.stringify({ - type: 'stat', - }), - }, - modules: [ - 'node_modules', - path_1.default.resolve(process.env.UNI_CLI_CONTEXT, 'node_modules'), - path_1.default.resolve(inputDir, 'node_modules'), - ], -}; +// import { resolveMainPathOnce } from '@dcloudio/uni-cli-shared' +function createResolve() { + const inputDir = process.env.UNI_INPUT_DIR; + return { + extensions: ['.js', '.nvue', '.vue', '.json'], + alias: { + '@': inputDir, + // '@dcloudio/uni-stat': require.resolve('@dcloudio/uni-stat') + // 'uni-app-style': + // resolveMainPathOnce(inputDir) + + // '?' + + // JSON.stringify({ + // type: 'appStyle' + // }) + }, + modules: [ + 'node_modules', + path_1.default.resolve(process.env.UNI_CLI_CONTEXT, 'node_modules'), + path_1.default.resolve(inputDir, 'node_modules'), + ], + }; +} +exports.createResolve = createResolve; diff --git a/packages/uni-cli-nvue/dist/webpack/index.js b/packages/uni-cli-nvue/dist/webpack/index.js index 7f888207b..4a2a8781d 100644 --- a/packages/uni-cli-nvue/dist/webpack/index.js +++ b/packages/uni-cli-nvue/dist/webpack/index.js @@ -8,11 +8,13 @@ const webpack_1 = __importDefault(require("webpack")); const uni_shared_1 = require("@dcloudio/uni-shared"); const config_1 = require("./config"); const alias_1 = require("./alias"); +const env_1 = require("../utils/env"); const initModuleAliasOnce = uni_shared_1.once(alias_1.initModuleAlias); -function runWebpack(mode) { +function runWebpack(mode, options) { + env_1.initEnv(options); initModuleAliasOnce(); return new Promise((resolve, reject) => { - webpack_1.default(config_1.createConfig(mode), (err, stats) => { + webpack_1.default(config_1.createConfig(mode, options), (err, stats) => { if (err) { return reject(err.stack || err); } @@ -31,11 +33,11 @@ function runWebpack(mode) { }); }); } -function runWebpackBuild() { - return runWebpack('production'); +function runWebpackBuild(options) { + return runWebpack('production', options); } exports.runWebpackBuild = runWebpackBuild; -function runWebpackDev() { - return runWebpack('development'); +function runWebpackDev(options) { + return runWebpack('development', options); } exports.runWebpackDev = runWebpackDev; diff --git a/packages/uni-cli-nvue/dist/webpack/loader/preprocess.js b/packages/uni-cli-nvue/dist/webpack/loader/preprocess.js index 815c7f13d..4f09243f4 100644 --- a/packages/uni-cli-nvue/dist/webpack/loader/preprocess.js +++ b/packages/uni-cli-nvue/dist/webpack/loader/preprocess.js @@ -23,13 +23,13 @@ function preprocessLoader(content, map) { function preContent(type, content) { switch (type) { case 'js': - return uni_cli_shared_1.preJs(content); + return uni_cli_shared_1.preNVueJs(content); case 'html': - return uni_cli_shared_1.preHtml(content); + return uni_cli_shared_1.preNVueHtml(content); case 'css': - return uni_cli_shared_1.preCss(content); + return uni_cli_shared_1.preNVueCss(content); case 'json': - return uni_cli_shared_1.preJson(content); + return uni_cli_shared_1.preNVueJson(content); } return content; } diff --git a/packages/uni-cli-nvue/dist/webpack/plugin/BannerPlugin.js b/packages/uni-cli-nvue/dist/webpack/plugin/BannerPlugin.js new file mode 100644 index 000000000..2a2de3e3b --- /dev/null +++ b/packages/uni-cli-nvue/dist/webpack/plugin/BannerPlugin.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const webpack_1 = require("webpack"); +const webpack_sources_1 = require("webpack-sources"); +class BannerPlugin { + /** + * @param {BannerPluginArgument} options options object + */ + constructor(options) { + this.banner = () => options.banner; + } + /** + * Apply the plugin + * @param {Compiler} compiler the compiler instance + * @returns {void} + */ + apply(compiler) { + const banner = this.banner; + compiler.hooks.compilation.tap('BannerPlugin', (compilation) => { + compilation.hooks.processAssets.tap({ + name: 'BannerPlugin', + stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER, + }, () => { + for (const chunk of compilation.chunks) { + if (!chunk.canBeInitial()) { + continue; + } + for (const file of chunk.files) { + const data = { + chunk, + filename: file, + }; + const comment = compilation.getPath(banner, data); + compilation.updateAsset(file, (old) => new webpack_sources_1.ConcatSource(comment, '\n', old)); + } + } + }); + }); + } +} +exports.default = BannerPlugin; diff --git a/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/remove-scoped.js b/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/remove-scoped.js index 3fa555621..aaf5617cd 100644 --- a/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/remove-scoped.js +++ b/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/remove-scoped.js @@ -1,61 +1,57 @@ "use strict"; -var __importStar = (this && this.__importStar) || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; Object.defineProperty(exports, "__esModule", { value: true }); -const postcss = __importStar(require("postcss")); // postcss-selector-parser does have typings but it's problematic to work with. const selectorParser = require('postcss-selector-parser'); -exports.default = postcss.plugin('remove-scoped', (options) => (root) => { - root.each(function rewriteSelector(node) { - if (!node.selector) { - // handle media queries - if (node.type === 'atrule') { - if (node.name === 'media' || node.name === 'supports') { - node.each(rewriteSelector); - } - } - return; - } - node.selector = selectorParser((selectors) => { - selectors.each((selector) => { - let node = null; - // find the last child node to insert attribute selector - selector.each((n) => { - // ">>>" combinator - // and /deep/ alias for >>>, since >>> doesn't work in SASS - if (n.type === 'combinator' && - (n.value === '>>>' || n.value === '/deep/')) { - n.value = ' '; - n.spaces.before = n.spaces.after = ''; - return false; - } - // in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias - if (n.type === 'pseudo' && n.value === '::v-deep') { - n.value = n.spaces.before = n.spaces.after = ''; - return false; - } - if (n.type !== 'pseudo' && n.type !== 'combinator') { - node = n; +exports.default = () => { + return { + postcssPlugin: 'remove-scoped', + Once (root) { + root.each(function rewriteSelector(node) { + if (!node.selector) { + // handle media queries + if (node.type === 'atrule') { + if (node.name === 'media' || node.name === 'supports') { + node.each(rewriteSelector); + } + } + return; } + node.selector = selectorParser((selectors) => { + selectors.each((selector) => { + let node = null; + // find the last child node to insert attribute selector + selector.each((n) => { + // ">>>" combinator + // and /deep/ alias for >>>, since >>> doesn't work in SASS + if (n.type === 'combinator' && + (n.value === '>>>' || n.value === '/deep/')) { + n.value = ' '; + n.spaces.before = n.spaces.after = ''; + return false; + } + // in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias + if (n.type === 'pseudo' && n.value === '::v-deep') { + n.value = n.spaces.before = n.spaces.after = ''; + return false; + } + if (n.type !== 'pseudo' && n.type !== 'combinator') { + node = n; + } + }); + if (node) { + node.spaces.after = ''; + } else { + // For deep selectors & standalone pseudo selectors, + // the attribute selectors are prepended rather than appended. + // So all leading spaces must be eliminated to avoid problems. + selector.first.spaces.before = ''; + } + }); + }).processSync(node.selector); }); - if (node) { - node.spaces.after = ''; - } else { - // For deep selectors & standalone pseudo selectors, - // the attribute selectors are prepended rather than appended. - // So all leading spaces must be eliminated to avoid problems. - selector.first.spaces.before = ''; - } - }); - }).processSync(node.selector); - }); -}); + } + } +} + diff --git a/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/scoped.js b/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/scoped.js index 0d2fc1ac8..f3a01afbd 100644 --- a/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/scoped.js +++ b/packages/uni-cli-nvue/lib/@vue/component-compiler-utils/dist/stylePlugins/scoped.js @@ -1,112 +1,110 @@ "use strict"; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result["default"] = mod; - return result; -}; Object.defineProperty(exports, "__esModule", { value: true }); -const postcss = __importStar(require("postcss")); + // postcss-selector-parser does have typings but it's problematic to work with. const selectorParser = require('postcss-selector-parser'); -exports.default = postcss.plugin('add-id', (options) => (root) => { - const id = options; - const keyframes = Object.create(null); - root.each(function rewriteSelector(node) { - if (!node.selector) { - // handle media queries - if (node.type === 'atrule') { - if (node.name === 'media' || node.name === 'supports') { - node.each(rewriteSelector); - } - else if (/-?keyframes$/.test(node.name)) { - // register keyframes - keyframes[node.params] = node.params = node.params + '-' + id; - } - } - return; - } - node.selector = selectorParser((selectors) => { - selectors.each((selector) => { - let node = null; - // find the last child node to insert attribute selector - selector.each((n) => { - // ">>>" combinator - // and /deep/ alias for >>>, since >>> doesn't work in SASS - if (n.type === 'combinator' && - (n.value === '>>>' || n.value === '/deep/')) { - n.value = ' '; - n.spaces.before = n.spaces.after = ''; - return false; - } - // in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias - if (n.type === 'pseudo' && n.value === '::v-deep') { - n.value = n.spaces.before = n.spaces.after = ''; - return false; - } - if (n.type !== 'pseudo' && n.type !== 'combinator') { - node = n; +exports.default = (options) => { + return { + postcssPlugin: 'add-id', + Once (root) { + const id = options; + const keyframes = Object.create(null); + root.each(function rewriteSelector(node) { + if (!node.selector) { + // handle media queries + if (node.type === 'atrule') { + if (node.name === 'media' || node.name === 'supports') { + node.each(rewriteSelector); + } + else if (/-?keyframes$/.test(node.name)) { + // register keyframes + keyframes[node.params] = node.params = node.params + '-' + id; + } } - }); - if (node) { - node.spaces.after = ''; - } - else { - // For deep selectors & standalone pseudo selectors, - // the attribute selectors are prepended rather than appended. - // So all leading spaces must be eliminated to avoid problems. - selector.first.spaces.before = ''; - } - // fixed by xxxxxx (h5,app-plus v3 平台继续使用 attribute,其他平台使用 className) - if( - process.env.UNI_PLATFORM === 'h5' || - ( - process.env.UNI_PLATFORM === 'app-plus' && - process.env.UNI_USING_V3 - ) - ){ - selector.insertAfter(node, selectorParser.attribute({ - attribute: id - })); - } else { - selector.insertAfter(node, selectorParser.className({ - value: id - })); + return; } + node.selector = selectorParser((selectors) => { + selectors.each((selector) => { + let node = null; + // find the last child node to insert attribute selector + selector.each((n) => { + // ">>>" combinator + // and /deep/ alias for >>>, since >>> doesn't work in SASS + if (n.type === 'combinator' && + (n.value === '>>>' || n.value === '/deep/')) { + n.value = ' '; + n.spaces.before = n.spaces.after = ''; + return false; + } + // in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias + if (n.type === 'pseudo' && n.value === '::v-deep') { + n.value = n.spaces.before = n.spaces.after = ''; + return false; + } + if (n.type !== 'pseudo' && n.type !== 'combinator') { + node = n; + } + }); + if (node) { + node.spaces.after = ''; + } + else { + // For deep selectors & standalone pseudo selectors, + // the attribute selectors are prepended rather than appended. + // So all leading spaces must be eliminated to avoid problems. + selector.first.spaces.before = ''; + } + // fixed by xxxxxx (h5,app-plus v3 平台继续使用 attribute,其他平台使用 className) + if( + process.env.UNI_PLATFORM === 'h5' || + ( + process.env.UNI_PLATFORM === 'app-plus' && + process.env.UNI_USING_V3 + ) + ){ + selector.insertAfter(node, selectorParser.attribute({ + attribute: id + })); + } else { + selector.insertAfter(node, selectorParser.className({ + value: id + })); + } + }); + }).processSync(node.selector); }); - }).processSync(node.selector); - }); - // If keyframes are found in this