提交 2b71a962 编写于 作者: fxy060608's avatar fxy060608

feat: support UNI_INPUT_DIR

上级 6d34a5a9
......@@ -71,7 +71,7 @@
"size-limit": "^4.10.1",
"ts-jest": "^26.4.4",
"typescript": "~4.1.3",
"vite": "^2.2.1",
"vite": "^2.2.3",
"vue": "3.0.11",
"yorkie": "^2.0.0"
}
......
declare namespace NodeJS {
interface ProcessEnv {
UNI_PLATFORM: UniApp.PLATFORM
UNI_INPUT_DIR: string
UNI_OUTPUT_DIR: string
}
}
......@@ -12,9 +12,9 @@ export default {
entry: path.resolve(__dirname, 'src/main.ts'),
formats: ['es'],
},
// minify: false,
minify: false,
rollupOptions: {
// external: ['vue', '@vue/shared'],
external: ['vue', '@vue/shared'],
// output: {
// entryFileNames: `assets/[name].js`,
// chunkFileNames: `assets/[name].js`,
......
......@@ -2,7 +2,7 @@
"name": "@dcloudio/uni-app",
"version": "3.0.0",
"description": "@dcloudio/uni-app",
"main": "dist/uni-app.cjs.js",
"main": "dist/uni-app.esm.js",
"module": "dist/uni-app.esm.js",
"types": "dist/uni-app.d.ts",
"files": [
......
......@@ -24,6 +24,7 @@
"dependencies": {
"debug": "^4.3.1",
"jsonc-parser": "^3.0.0",
"slash": "^3.0.0",
"xregexp": "3.1.0"
},
"peerDependencies": {
......
export * from './url'
export * from './json'
export * from './utils'
export * from './constants'
export * from './preprocess/index'
import os from 'os'
import path from 'path'
import slash from 'slash'
const isWindows = os.platform() === 'win32'
export function normalizePath(id: string): string {
return path.posix.normalize(isWindows ? slash(id) : id)
}
......@@ -678,7 +678,7 @@ var safeAreaInsets = {
onChange,
offChange
};
var D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out = safeAreaInsets;
var out = safeAreaInsets;
const onEventPrevent = /* @__PURE__ */ withModifiers(() => {
}, ["prevent"]);
const onEventStop = /* @__PURE__ */ withModifiers(() => {
......@@ -690,10 +690,10 @@ function getWindowOffset() {
const left = parseInt(style2.getPropertyValue("--window-left"));
const right = parseInt(style2.getPropertyValue("--window-right"));
return {
top: top ? top + D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top : 0,
bottom: bottom ? bottom + D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.bottom : 0,
left: left ? left + D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left : 0,
right: right ? right + D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.right : 0
top: top ? top + out.top : 0,
bottom: bottom ? bottom + out.bottom : 0,
left: left ? left + out.left : 0,
right: right ? right + out.right : 0
};
}
const style = document.documentElement.style;
......@@ -1333,7 +1333,7 @@ function normalizePageMeta(pageMeta) {
let offset = rpx2px(refreshOptions.offset);
const {type} = navigationBar;
if (type !== "transparent" && type !== "none") {
offset += NAVBAR_HEIGHT + D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top;
offset += NAVBAR_HEIGHT + out.top;
}
refreshOptions.offset = offset;
refreshOptions.height = rpx2px(refreshOptions.height);
......@@ -11465,7 +11465,7 @@ const getSystemInfoSync = defineSyncApi("getSystemInfoSync", () => {
const windowWidth = getWindowWidth(screenWidth);
let windowHeight = window.innerHeight;
const language = navigator.language;
const statusBarHeight = D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top;
const statusBarHeight = out.top;
let osname;
let osversion;
let model;
......@@ -11578,12 +11578,12 @@ const getSystemInfoSync = defineSyncApi("getSystemInfoSync", () => {
const system = `${osname} ${osversion}`;
const platform = osname.toLocaleLowerCase();
const safeArea = {
left: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left,
right: windowWidth - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.right,
top: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top,
bottom: windowHeight - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.bottom,
width: windowWidth - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.right,
height: windowHeight - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top - D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.bottom
left: out.left,
right: windowWidth - out.right,
top: out.top,
bottom: windowHeight - out.bottom,
width: windowWidth - out.left - out.right,
height: windowHeight - out.top - out.bottom
};
const {top: windowTop, bottom: windowBottom} = getWindowOffset();
windowHeight -= windowTop;
......@@ -11603,10 +11603,10 @@ const getSystemInfoSync = defineSyncApi("getSystemInfoSync", () => {
model,
safeArea,
safeAreaInsets: {
top: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.top,
right: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.right,
bottom: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.bottom,
left: D__DCloud_local_git_uniAppNext_node_modules_safeAreaInsets_out.left
top: out.top,
right: out.right,
bottom: out.bottom,
left: out.left
}
};
});
......@@ -13123,7 +13123,7 @@ const props = {
type: Boolean
}
};
const toastIconClassName = "uni-toast__icon";
const ToastIconClassName = "uni-toast__icon";
var Toast = /* @__PURE__ */ defineComponent({
name: "Toast",
props,
......@@ -13158,7 +13158,7 @@ var Toast = /* @__PURE__ */ defineComponent({
class: "uni-toast"
}, [image2 ? createVNode("img", {
src: image2,
class: toastIconClassName
class: ToastIconClassName
}, null, 10, ["src"]) : Icon.value, createVNode("p", {
class: "uni-toast__content"
}, [title])])], 8, ["data-duration"]), [[vShow, visible.value]])]
......@@ -13168,9 +13168,9 @@ var Toast = /* @__PURE__ */ defineComponent({
});
function useToastIcon(props2) {
const Icon = computed(() => props2.icon === "success" ? createVNode(createSvgIconVNode(ICON_PATH_SUCCESS_NO_CIRCLE, "#fff", 38), {
class: toastIconClassName
class: ToastIconClassName
}) : props2.icon === "loading" ? createVNode("i", {
class: [toastIconClassName, "uni-loading"]
class: [ToastIconClassName, "uni-loading"]
}, null, 2) : null);
return {
Icon
......
......@@ -37,7 +37,7 @@
"@dcloudio/uni-cli-shared": "^3.0.0",
"@dcloudio/uni-shared": "^3.0.0",
"@vue/shared": "^3.0.11",
"vite": "^2.2.1"
"vite": "^2.2.3"
},
"devDependencies": {
"@types/mime": "^2.0.3",
......
import fs from 'fs'
import path from 'path'
import { parse } from 'jsonc-parser'
import { Plugin, UserConfig } from 'vite'
import { Plugin } from 'vite'
import { normalizePath } from '@dcloudio/uni-cli-shared'
import { VitePluginUniResolvedOptions } from '..'
import { createCss } from './css'
import { createResolve } from './resolve'
import { createDefine } from './define'
import { createServer } from './server'
import { createBuild } from './build'
import { createOptimizeDeps } from './optimizeDeps'
import { createDefine } from './define'
import { FEATURE_DEFINES } from '../utils'
function resolveBase(inputDir: string) {
const manifest = parse(
fs.readFileSync(path.join(inputDir, 'manifest.json'), 'utf8')
)
return (manifest.h5 && manifest.h5.router && manifest.h5.router.base) || '/'
function normalizeRoot(config: UserConfig) {
return normalizePath(config.root ? path.resolve(config.root) : process.cwd())
}
function normalizeInputDir(config: UserConfig) {
return process.env.UNI_INPUT_DIR || path.resolve(normalizeRoot(config), 'src')
}
export function createConfig(
options: VitePluginUniResolvedOptions
): Plugin['config'] {
return (config, env) => {
const root = config.root || process.cwd()
const inputDir = process.env.UNI_INPUT_DIR || path.resolve(root, 'src')
const outputDir = process.env.UNI_OUTPUT_DIR || path.resolve(root, 'dist')
options.root = root
options.base = resolveBase(inputDir)
options.inputDir = inputDir
options.outputDir = outputDir
options.command = env.command
options.platform = (process.env.UNI_PLATFORM as UniApp.PLATFORM) || 'h5'
options.inputDir = normalizeInputDir(config)
const define = createDefine(options, env)
return {
base: options.base,
define,
resolve: createResolve(options),
optimizeDeps: createOptimizeDeps(options),
......
import path from 'path'
import { ResolvedConfig } from 'vite'
export function initEnv(config: ResolvedConfig) {
if (!process.env.UNI_PLATFORM) {
process.env.UNI_PLATFORM = 'h5'
}
if (!process.env.UNI_CLI_CONTEXT) {
process.env.UNI_CLI_CONTEXT = process.cwd()
}
if (!process.env.UNI_INPUT_DIR) {
process.env.UNI_INPUT_DIR = path.resolve(config.root, 'src')
}
if (!process.env.UNI_OUTPUT_DIR) {
process.env.UNI_OUTPUT_DIR = path.resolve(config.root, config.build.outDir)
}
}
import path from 'path'
import { Plugin } from 'vite'
import { VitePluginUniResolvedOptions } from '..'
import { resolvePlugins } from './plugins'
import { initEnv } from './env'
import { initOptions } from './options'
import { initPlugins } from './plugins'
export function createConfigResolved(options: VitePluginUniResolvedOptions) {
return ((config) => {
options.root = config.root
options.inputDir = path.resolve(config.root, 'src')
options.assetsDir = config.build.assetsDir
resolvePlugins(config, options)
initEnv(config)
initOptions(options, config)
initPlugins(config, options)
}) as Plugin['configResolved']
}
import fs from 'fs'
import path from 'path'
import { parse } from 'jsonc-parser'
import { VitePluginUniResolvedOptions } from '..'
import { ResolvedConfig } from 'vite'
function resolveBase() {
const manifest = parse(
fs.readFileSync(
path.join(process.env.UNI_INPUT_DIR!, 'manifest.json'),
'utf8'
)
)
return (manifest.h5 && manifest.h5.router && manifest.h5.router.base) || '/'
}
export function initOptions(
options: VitePluginUniResolvedOptions,
config: ResolvedConfig
) {
options.base = resolveBase()
options.outputDir = process.env.UNI_OUTPUT_DIR
options.assetsDir = config.build.assetsDir
}
......@@ -82,7 +82,7 @@ const uniInjectPluginOptions: Partial<InjectOptions> = {
},
}
export function resolvePlugins(
export function initPlugins(
config: ResolvedConfig,
options: VitePluginUniResolvedOptions
) {
......
......@@ -69,7 +69,7 @@ function parsePagesJson(
const cssCode = generateCssCode(config, options)
return `
import { extend } from '@vue/shared'
import { extend } from '@vue/shared/dist/shared.esm-bundler.js'
import { ${
config.define!.__UNI_FEATURE_PAGES__ ? 'defineAsyncComponent, ' : ''
}resolveComponent, createVNode, withCtx, openBlock, createBlock } from 'vue'
......
import { VitePluginUniResolvedOptions } from '.'
const defaultPlatform = 'h5'
export function initEnv(_options: VitePluginUniResolvedOptions) {
process.env.UNI_PLATFORM = process.env.UNI_PLATFORM || defaultPlatform
}
import { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
import { initEnv } from './env'
import { createConfig } from './config'
import { createResolveId } from './resolveId'
import { createConfigResolved } from './configResolved'
......@@ -11,7 +10,6 @@ export interface VitePluginUniOptions {
outputDir?: string
}
export interface VitePluginUniResolvedOptions extends VitePluginUniOptions {
root: string
base: string
command: ResolvedConfig['command']
platform: UniApp.PLATFORM
......@@ -28,7 +26,6 @@ export default function uniPlugin(
): Plugin {
const options: VitePluginUniResolvedOptions = {
...rawOptions,
root: process.cwd(),
base: '/',
assetsDir: 'assets',
inputDir: '',
......@@ -36,7 +33,6 @@ export default function uniPlugin(
command: 'serve',
platform: 'h5',
}
initEnv(options)
return {
name: 'vite:uni',
config: createConfig(options),
......
......@@ -10,6 +10,11 @@ export function createResolveId(
_options: VitePluginUniResolvedOptions
): Plugin['resolveId'] {
return function (id) {
if (id.startsWith('@dcloudio/') || id.startsWith('@vue/')) {
return require.resolve(id, {
paths: [process.env.UNI_CLI_CONTEXT!],
})
}
if (VUES.includes(id)) {
debugResolve(id)
return '@dcloudio/uni-h5-vue'
......
......@@ -5,6 +5,7 @@
},
"include": [
"src",
"../shims-node.d.ts",
"../shims-uni-app.d.ts",
"../../node_modules/postcss/lib/postcss.d.ts"
]
......
......@@ -1002,9 +1002,9 @@
hash-sum "^2.0.0"
"@vitejs/plugin-vue@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.1.tgz#6de49436fc346f829a56676066428e3f011522ac"
integrity sha512-TG+LbEUNwfFrx1VyN+iq+PsiGd9MT16hUdJY+BnMXj3MrLAF8m3VYUspTDM3aXoh48YDmAkMjG4gWFRg3lbG5A==
version "1.2.2"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.2.tgz#b0038fc11b9099f4cd01fcbf0ee419adda417b52"
integrity sha512-5BI2WFfs/Z0pAV4S/IQf1oH3bmFYlL5ATMBHgTt1Lf7hAnfpNd5oUAAs6hZPfk3QhvyUQgtk0rJBlabwNFcBJQ==
"@vue/babel-helper-vue-transform-on@^1.0.2":
version "1.0.2"
......@@ -1145,9 +1145,9 @@ acorn@^7.1.1, acorn@^7.4.0:
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.1.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.1.tgz#fb0026885b9ac9f48bac1e185e4af472971149ff"
integrity sha512-xYiIVjNuqtKXMxlRMDc6mZUhXehod4a3gbZ1qRlM7icK4EbxUFNLhWoPblCvFtB2Y9CIqHP3CF/rdxLItaQv8g==
version "8.2.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.1.tgz#0d36af126fb6755095879c1dc6fd7edf7d60a5fb"
integrity sha512-z716cpm5TX4uzOzILx8PavOE6C6DKshHDw1aQN52M/yNSqE9s5O8SMfyhCCfCJ3HmTL0NkVOi+8a/55T7YB3bg==
agent-base@6:
version "6.0.2"
......@@ -2325,9 +2325,9 @@ eslint-visitor-keys@^2.0.0:
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
eslint@^7.17.0:
version "7.24.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a"
integrity sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==
version "7.25.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67"
integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==
dependencies:
"@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.4.0"
......@@ -3184,9 +3184,9 @@ is-ci@^2.0.0:
ci-info "^2.0.0"
is-core-module@^2.1.0, is-core-module@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
version "2.3.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887"
integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==
dependencies:
has "^1.0.3"
......@@ -4112,9 +4112,9 @@ lint-staged@^10.5.3:
stringify-object "^3.3.0"
listr2@^3.2.2:
version "3.7.1"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.7.1.tgz#ff0c410b10eb1c5c76735e4814128ec8f7d2b983"
integrity sha512-cNd368GTrk8351/ov/IV+BSwyf9sJRgI0UIvfORonCZA1u9UHAtAlqSEv9dgafoQIA1CgB3nu4No79pJtK2LHw==
version "3.8.0"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.8.0.tgz#40dcbcae83cca1005570ff0cc76cc35b51576d09"
integrity sha512-TWxRzND4v6UI+Fs3FrNohYcz48jyZUyzvSLgrGTe9TXKLf84T0EfjmP5e27p6e031q3VGl6vBbHdueGFUxgczQ==
dependencies:
chalk "^4.1.0"
cli-truncate "^2.1.0"
......@@ -5802,9 +5802,9 @@ symbol-tree@^3.2.4:
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@^6.0.4:
version "6.3.4"
resolved "https://registry.yarnpkg.com/table/-/table-6.3.4.tgz#5d8a7fa1c887bd1ef08741751ec36246255a80b6"
integrity sha512-fhKcZ3+oAYG/ld3seJEZ9+fGSsy+yeoPzLQUrwbOzNYdhrU+6TzObhJ2Sp76ZfUGIrDTrxsXz5NSCZJIUOJb4Q==
version "6.5.1"
resolved "https://registry.yarnpkg.com/table/-/table-6.5.1.tgz#930885a7430f15f8766b35cd1e36de40793db523"
integrity sha512-xGDXWTBJxahkzPQCsn1S9ESHEenU7TbMD5Iv4FeopXv/XwJyWatFjfbor+6ipI10/MNPXBYUamYukOrbPZ9L/w==
dependencies:
ajv "^8.0.1"
lodash.clonedeep "^4.5.0"
......@@ -5812,6 +5812,7 @@ table@^6.0.4:
lodash.truncate "^4.4.2"
slice-ansi "^4.0.0"
string-width "^4.2.0"
strip-ansi "^6.0.0"
tar-fs@^2.0.0:
version "2.1.1"
......@@ -6163,10 +6164,10 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
vite@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/vite/-/vite-2.2.1.tgz#90c481f69371f32867d86a6a623bb064b876ad3d"
integrity sha512-KIqK90EoJJpuqE86Y9DSkZjFNGgsyZX/4I1xENIitLRd3hgRtOlIGCJYrNnBD9/eqipz0OroAiIj9/R1JcOdFA==
vite@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/vite/-/vite-2.2.3.tgz#1acbdfa56ac00e00e7ccb6988f63f130c2f99dbb"
integrity sha512-PtjyBL4GtACM+uT5q5hi2+AlMBbb6YI2b2bam6QI8ZdZt4FezseF0yZHQx0G+b3po9jIJ/GS5N9gc5Yq9Rue7g==
dependencies:
esbuild "^0.9.3"
postcss "^8.2.1"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册