修复脑残windows
parent
cc348dccc4
commit
b740b76867
4
index.js
4
index.js
|
@ -7,7 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import fs from 'iofs'
|
import fs from 'iofs'
|
||||||
import { join } from 'path'
|
import { join, normalize } from 'path'
|
||||||
|
|
||||||
import createServer from './lib/dev.js'
|
import createServer from './lib/dev.js'
|
||||||
import compile from './lib/prod.js'
|
import compile from './lib/prod.js'
|
||||||
|
@ -15,7 +15,7 @@ import compile from './lib/prod.js'
|
||||||
const WORK_SPACE = process.cwd()
|
const WORK_SPACE = process.cwd()
|
||||||
const IS_WINDOWS = process.platform === 'win32'
|
const IS_WINDOWS = process.platform === 'win32'
|
||||||
|
|
||||||
const CONFIG_FILE = join(WORK_SPACE, 'vue.live.js')
|
const CONFIG_FILE = normalize(join(WORK_SPACE, 'vue.live.js'))
|
||||||
const PROTOCOL = IS_WINDOWS ? 'file://' : ''
|
const PROTOCOL = IS_WINDOWS ? 'file://' : ''
|
||||||
|
|
||||||
let args = process.argv.slice(2)
|
let args = process.argv.slice(2)
|
||||||
|
|
|
@ -8,7 +8,7 @@ import fs from 'iofs'
|
||||||
import scss from '@bytedo/sass'
|
import scss from '@bytedo/sass'
|
||||||
import { createHash } from 'crypto'
|
import { createHash } from 'crypto'
|
||||||
import Es from 'esbuild'
|
import Es from 'esbuild'
|
||||||
import { resolve, join } from 'path'
|
import { join } from 'path'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
JS_EXP,
|
JS_EXP,
|
||||||
|
@ -23,6 +23,11 @@ const OPTIONS = {
|
||||||
indentWidth: 2
|
indentWidth: 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 修正路径合并 避免在windows下被转义
|
||||||
|
function urlJoin(...args) {
|
||||||
|
return join(...args).replace(/\\/g, '/')
|
||||||
|
}
|
||||||
|
|
||||||
function md5(str = '') {
|
function md5(str = '') {
|
||||||
let sum = createHash('md5')
|
let sum = createHash('md5')
|
||||||
sum.update(str, 'utf8')
|
sum.update(str, 'utf8')
|
||||||
|
@ -89,7 +94,7 @@ export function parseJs(
|
||||||
/import ([\w\W]*?) from (["'])(.*?)\2/g,
|
/import ([\w\W]*?) from (["'])(.*?)\2/g,
|
||||||
function (m, alias, q, name) {
|
function (m, alias, q, name) {
|
||||||
if (name.startsWith('@/')) {
|
if (name.startsWith('@/')) {
|
||||||
name = name.replace('@/', join(DEPLOY_PATH, '/assets/js/'))
|
name = name.replace('@/', urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!imports[name]) {
|
if (!imports[name]) {
|
||||||
|
@ -98,14 +103,14 @@ export function parseJs(
|
||||||
if (IS_MPA) {
|
if (IS_MPA) {
|
||||||
name = `${currentPage}/` + name
|
name = `${currentPage}/` + name
|
||||||
}
|
}
|
||||||
name = join(DEPLOY_PATH, '/assets/js/', name)
|
name = urlJoin(DEPLOY_PATH, '/assets/js/', name)
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
name.startsWith('/') &&
|
name.startsWith('/') &&
|
||||||
!name.startsWith('//') &&
|
!name.startsWith('//') &&
|
||||||
!name.startsWith(join(DEPLOY_PATH, '/assets/js/'))
|
!name.startsWith(urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
) {
|
) {
|
||||||
name = name.replace(/^\//, join(DEPLOY_PATH, '/assets/js/'))
|
name = name.replace(/^\//, urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name.endsWith('.js') && !name.endsWith('.vue')) {
|
if (!name.endsWith('.js') && !name.endsWith('.vue')) {
|
||||||
|
@ -143,11 +148,11 @@ export function parseJs(
|
||||||
// 修正那反人类的windows路径
|
// 修正那反人类的windows路径
|
||||||
return `import ${tmp} from '${name}' assert { type: 'css' }\n${tmp}.path = '${name.replace(
|
return `import ${tmp} from '${name}' assert { type: 'css' }\n${tmp}.path = '${name.replace(
|
||||||
/\\/g,
|
/\\/g,
|
||||||
'\\\\'
|
'/'
|
||||||
)}'`
|
)}'`
|
||||||
} else {
|
} else {
|
||||||
if (name.startsWith('@/')) {
|
if (name.startsWith('@/')) {
|
||||||
name = name.replace('@/', join(DEPLOY_PATH, '/assets/js/'))
|
name = name.replace('@/', urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (!imports[name]) {
|
if (!imports[name]) {
|
||||||
|
@ -156,14 +161,14 @@ export function parseJs(
|
||||||
if (IS_MPA) {
|
if (IS_MPA) {
|
||||||
name = `${currentPage}/` + name
|
name = `${currentPage}/` + name
|
||||||
}
|
}
|
||||||
name = join(DEPLOY_PATH, '/assets/js/', name)
|
name = urlJoin(DEPLOY_PATH, '/assets/js/', name)
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
name.startsWith('/') &&
|
name.startsWith('/') &&
|
||||||
!name.startsWith('//') &&
|
!name.startsWith('//') &&
|
||||||
!name.startsWith(join(DEPLOY_PATH, '/assets/js/'))
|
!name.startsWith(urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
) {
|
) {
|
||||||
name = name.replace(/^\//, join(DEPLOY_PATH, '/assets/js/'))
|
name = name.replace(/^\//, urlJoin(DEPLOY_PATH, '/assets/js/'))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name.endsWith('.js') && !name.endsWith('.vue')) {
|
if (!name.endsWith('.js') && !name.endsWith('.vue')) {
|
||||||
|
@ -232,7 +237,7 @@ stylesheet.path = '${file
|
||||||
.slice(
|
.slice(
|
||||||
options.IS_MPA ? options.pagesDir.length : options.SOURCE_DIR.length
|
options.IS_MPA ? options.pagesDir.length : options.SOURCE_DIR.length
|
||||||
)
|
)
|
||||||
.replace(/\\/g, '\\\\')}'
|
.replace(/\\/g, '/')}'
|
||||||
stylesheet.replaceSync(\`${CACHE[file].css}\`)
|
stylesheet.replaceSync(\`${CACHE[file].css}\`)
|
||||||
document.adoptedStyleSheets.push(stylesheet)
|
document.adoptedStyleSheets.push(stylesheet)
|
||||||
`
|
`
|
||||||
|
|
11
lib/dev.js
11
lib/dev.js
|
@ -30,7 +30,7 @@ export default async function createServer(root = '', conf = {}) {
|
||||||
|
|
||||||
if (!SERVER_OPTIONS.key || !SERVER_OPTIONS.cert) {
|
if (!SERVER_OPTIONS.key || !SERVER_OPTIONS.cert) {
|
||||||
console.error('证书错误: https 证书不能为空!!!\n')
|
console.error('证书错误: https 证书不能为空!!!\n')
|
||||||
process.exit(1)
|
process.exit()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,6 +138,8 @@ export default async function createServer(root = '', conf = {}) {
|
||||||
DEPLOY_PATH
|
DEPLOY_PATH
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// console.log(entry);
|
||||||
|
|
||||||
code = parseHtml(html, { page, imports: conf.imports, entry })
|
code = parseHtml(html, { page, imports: conf.imports, entry })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +292,10 @@ export default async function createServer(root = '', conf = {}) {
|
||||||
case 'scss':
|
case 'scss':
|
||||||
{
|
{
|
||||||
let content = fs.cat(filePath).toString()
|
let content = fs.cat(filePath).toString()
|
||||||
ws.send({ action: 'render', data: { path: file, content } })
|
ws.send({
|
||||||
|
action: 'render',
|
||||||
|
data: { path: file.replace(/\\/g, '/'), content }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
||||||
|
@ -310,7 +315,7 @@ export default async function createServer(root = '', conf = {}) {
|
||||||
} else {
|
} else {
|
||||||
ws.send({
|
ws.send({
|
||||||
action: 'render',
|
action: 'render',
|
||||||
data: { path: file, content: tmp.css }
|
data: { path: file.replace(/\\/g, '/'), content: tmp.css }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@bytedo/vue-live",
|
"name": "@bytedo/vue-live",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.2.1",
|
"version": "0.2.2",
|
||||||
"bin": {
|
"bin": {
|
||||||
"vue-live": "index.js"
|
"vue-live": "index.js"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue