提交 3001efa9 编写于 作者: fxy060608's avatar fxy060608

feat(cli): add copy

上级 4994f182
......@@ -23,10 +23,11 @@
"dependencies": {
"@rollup/pluginutils": "^4.1.0",
"estree-walker": "^2.0.1",
"fs-extra": "^9.0.1",
"magic-string": "^0.25.7"
},
"peerDependencies": {
"@dcloudio/uni-cli-shared": "^3.0.0",
"vite": "^1.0.0-rc.12"
"vite": "^1.0.0-rc.13"
}
}
// import path from 'path'
// import fs from 'fs-extra'
import { Plugin } from 'rollup'
// const publicDir = '/Users/fxy/Documents/demo/my-vite-uniapp-project/src/static'
// const outDir = '/Users/fxy/Documents/demo/my-vite-uniapp-project/static'
export const buildPluginCopy: Plugin = {
name: 'uni:copy',
async generateBundle() {
// https://github.com/vitejs/vite/blob/master/src/node/build/index.ts#L621
// setTimeout(async () => {
// if (fs.existsSync(publicDir)) {
// for (const file of await fs.readdir(publicDir)) {
// await fs.copy(path.join(publicDir, file), path.resolve(outDir, file))
// }
// }
// }, 100)
}
}
......@@ -16,7 +16,6 @@ export const buildPluginPagesJson: Plugin = {
},
load(id) {
if (id.endsWith(pagesJsonAliasName)) {
console.log(id.replace(pagesJsonAliasName, pagesJsonName))
return parsePagesJson(
fs
.readFileSync(id.replace(pagesJsonAliasName, pagesJsonName))
......
export * from './buildPluginCopy'
export * from './buildPluginInject'
export * from './buildPluginMainJs'
export * from './buildPluginPagesJson'
......
......@@ -9,6 +9,7 @@ import {
} from './server'
import {
buildPluginCopy,
buildPluginInject,
buildPluginMainJs,
buildPluginPagesJson,
......@@ -16,10 +17,16 @@ import {
} from './build'
import { dynamicImportCode } from './utils/dynamicImportUtils'
import { initEasycoms } from './utils/easycomUtils'
const VUES = ['vue', 'vue.js', './vue.js']
const plugins = [buildPluginMainJs, buildPluginPagesJson, buildPluginInject]
const plugins = [
buildPluginMainJs,
buildPluginPagesJson,
buildPluginInject,
buildPluginCopy
]
if (dynamicImportCode) {
plugins.push(buildPluginDynamicImport)
......@@ -47,8 +54,12 @@ const plugin: Plugin = {
rollupInputOptions: {
plugins
},
vueCompilerOptions
vueCompilerOptions,
configureBuild({ root }) {
initEasycoms(root)
}
}
// TODO 等待 vite 升级支持以下配置
Object.assign(plugin, {
optimizeDeps: {
exclude: [
......
import path from 'path'
import { ServerPlugin } from 'vite'
import { initEasycom } from '@dcloudio/uni-cli-shared'
import { initEasycoms } from '../utils/easycomUtils'
export const serverPluginEnv: ServerPlugin = ({ root, watcher }) => {
const rootDir = path.resolve(root, 'src')
const dirs = ['components'].map(dir => path.resolve(rootDir, dir))
const easycomOptions = { dirs, rootDir: rootDir }
initEasycom(easycomOptions)
const { dirs, refresh } = initEasycoms(root)
watcher.on('all', (eventName, path) => {
if (!['add', 'unlink'].includes(eventName)) {
return
}
if (dirs.find(dir => path.startsWith(dir))) {
initEasycom(easycomOptions)
refresh()
}
})
}
import path from 'path'
import { initEasycom } from '@dcloudio/uni-cli-shared'
export function initEasycoms(root: string) {
const rootDir = path.resolve(root, 'src')
const dirs = ['components'].map(dir => path.resolve(rootDir, dir))
const easycomOptions = { dirs, rootDir: rootDir }
initEasycom(easycomOptions)
return {
dirs,
refresh() {
initEasycom(easycomOptions)
}
}
}
......@@ -2,6 +2,8 @@ import path from 'path'
import slash from 'slash'
import { camelize, capitalize } from '@vue/shared'
import { parseJson } from '@dcloudio/uni-cli-shared'
interface PageOptions {
......@@ -103,7 +105,7 @@ function formatPagesJson(jsonStr: string) {
}
function formatPageIdentifier(path: string) {
return path.replace(/\//g, '')
return capitalize(camelize(path.replace(/\//g, '-')))
}
function generatePageDefineCode(pageOptions: PageOptions) {
......
......@@ -714,6 +714,12 @@
"@types/qs" "*"
"@types/serve-static" "*"
"@types/fs-extra@^9.0.5":
version "9.0.5"
resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.5.tgz#2afb76a43a4bef80a363b94b314d0ca1694fc4f8"
dependencies:
"@types/node" "*"
"@types/graceful-fs@^4.1.2":
version "4.1.4"
resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册