mirror of
https://github.com/msojocs/wechat-web-devtools-linux.git
synced 2025-07-07 00:02:14 +08:00
fix: 可视化
This commit is contained in:
parent
cc00feb8b0
commit
0a3d71d08f
1
.github/workflows/release.yml
vendored
1
.github/workflows/release.yml
vendored
@ -54,6 +54,7 @@ jobs:
|
|||||||
sudo find -maxdepth 1 -not -name ${{ env.name }} -not -name . -exec mv {} ${{ env.name }} \;
|
sudo find -maxdepth 1 -not -name ${{ env.name }} -not -name . -exec mv {} ${{ env.name }} \;
|
||||||
ls -l
|
ls -l
|
||||||
sudo cp -r "${{ env.name }}/package.nw/node_modules/nodegit" nodegit
|
sudo cp -r "${{ env.name }}/package.nw/node_modules/nodegit" nodegit
|
||||||
|
sudo cp -r "${{ env.name }}/compiler" compiler
|
||||||
env:
|
env:
|
||||||
name: 'release-${{ github.ref_name }}'
|
name: 'release-${{ github.ref_name }}'
|
||||||
|
|
||||||
|
96
compiler/wcc_node/index.js
Normal file
96
compiler/wcc_node/index.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
const util = require('./util')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
let wcc
|
||||||
|
try {
|
||||||
|
console.warn('wcc load')
|
||||||
|
wcc = require('./src/wcc')
|
||||||
|
} catch (err) {
|
||||||
|
console.error('wcc', err)
|
||||||
|
// wcc = require('./build/Release/wcc.node')
|
||||||
|
}
|
||||||
|
|
||||||
|
const fs = util.fs
|
||||||
|
|
||||||
|
exports = async function (options) {
|
||||||
|
// console.warn('wcc init options:', options);
|
||||||
|
if (!options) throw Error('options is required')
|
||||||
|
|
||||||
|
const lazyload = !!options.lazyloadConfig
|
||||||
|
|
||||||
|
options = Object.assign(
|
||||||
|
{
|
||||||
|
files: [], // FILES
|
||||||
|
contents: [],
|
||||||
|
replaceContent: {},
|
||||||
|
verbose: false,
|
||||||
|
debug: false, // -d
|
||||||
|
debugWXS: false, // -ds
|
||||||
|
showNewTree: false,
|
||||||
|
isPlugin: false,
|
||||||
|
addTestAttre: false,
|
||||||
|
independent: false,
|
||||||
|
genfuncname: '$gwx', // -gn
|
||||||
|
isCut: false, // --split
|
||||||
|
cwd: process.cwd,
|
||||||
|
debug: false,
|
||||||
|
lazyload, // -ll
|
||||||
|
lazyloadConfig: '',
|
||||||
|
},
|
||||||
|
options,
|
||||||
|
)
|
||||||
|
|
||||||
|
return new Promise(async (resolve, reject) => {
|
||||||
|
let st = Date.now()
|
||||||
|
|
||||||
|
// 获取文件内容
|
||||||
|
if (!options.contents.length) {
|
||||||
|
const tasks = options.files.map((file) => {
|
||||||
|
if (typeof options.replaceContent[file] === 'string') {
|
||||||
|
return options.replaceContent[file]
|
||||||
|
}
|
||||||
|
return fs.readFile(path.resolve(options.cwd, file), 'utf8')
|
||||||
|
})
|
||||||
|
options.contents = await Promise.all(tasks) || []
|
||||||
|
}
|
||||||
|
// console.warn('wcc get files', Date.now() - st, options.contents)
|
||||||
|
let result
|
||||||
|
try {
|
||||||
|
// console.warn('final options:', options);
|
||||||
|
// TODO: fix
|
||||||
|
result = wcc(options.cwd, options.files, {cut: options.isCut}, options)
|
||||||
|
// console.warn('wcc result', result)
|
||||||
|
} catch(errmsg) {
|
||||||
|
reject(new Error(errmsg))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log('wcc get compile', Date.now() - st)
|
||||||
|
if (options.output) {
|
||||||
|
const output = path.resolve(options.cwd, options.output)
|
||||||
|
const dir = path.dirname(output)
|
||||||
|
if (lazyload) {
|
||||||
|
// lazyload 为 true时,wcc 返回值是个对象, 需要序列化一下
|
||||||
|
result = JSON.stringify(result)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await fs.stat(dir)
|
||||||
|
} catch (e) {
|
||||||
|
await fs.mkdir(dir, {
|
||||||
|
recursive: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
await fs.writeFile(output, result, 'utf8')
|
||||||
|
}
|
||||||
|
console.warn('wcc get output', Date.now() - st)
|
||||||
|
resolve(result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(exports, 'version', {
|
||||||
|
get() {
|
||||||
|
return wcc.version
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = exports
|
25
compiler/wcc_node/package.json
Normal file
25
compiler/wcc_node/package.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "miniprogram-wcc",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "WCC node C++ addon",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"install": "node-gyp-build",
|
||||||
|
"rebuild": "node-gyp rebuild",
|
||||||
|
"build:dist": "node scripts/build",
|
||||||
|
"build": "node-gyp build",
|
||||||
|
"test": "node ./test/index",
|
||||||
|
"format": "prettier *.js test/*.js scripts/*.js --write"
|
||||||
|
},
|
||||||
|
"author": "coverguo",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"node-gyp-build": "^4.2.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eustia-module": "^1.21.2",
|
||||||
|
"licia": "^1.21.2",
|
||||||
|
"ncp": "^2.0.0",
|
||||||
|
"node-gyp": "^7.0.0"
|
||||||
|
}
|
||||||
|
}
|
30
compiler/wcc_node/src/index.js
Normal file
30
compiler/wcc_node/src/index.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
const path = require('path')
|
||||||
|
const vm = require('vm')
|
||||||
|
const glob = require('glob')
|
||||||
|
const unescapeJs = require('unescape-js')
|
||||||
|
|
||||||
|
const wcc = require('./wcc')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
wxmlToJs(rootPath) {
|
||||||
|
// wcc 编译器需要完整的 wxml 文件列表
|
||||||
|
const files = glob.sync('**/*.wxml', {
|
||||||
|
cwd: rootPath,
|
||||||
|
nodir: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ['node_modules/**/*.wxml'],
|
||||||
|
})
|
||||||
|
const wxsFiles = glob.sync('**/*.wxs', {
|
||||||
|
cwd: rootPath,
|
||||||
|
nodir: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ['node_modules/**/*.wxs'],
|
||||||
|
})
|
||||||
|
const compileResult = wcc(rootPath, files.map(file => file.substring(0, file.length - 5)), wxsFiles)
|
||||||
|
|
||||||
|
return `
|
||||||
|
${compileResult};
|
||||||
|
return $gwx;
|
||||||
|
`
|
||||||
|
},
|
||||||
|
}
|
129
compiler/wcc_node/src/wcc.js
Normal file
129
compiler/wcc_node/src/wcc.js
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
const { spawnSync } = require('child_process')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 wxml 编译器路径
|
||||||
|
*/
|
||||||
|
let wxmlParserPath = ''
|
||||||
|
function getWXMLParsePath() {
|
||||||
|
if (wxmlParserPath) return wxmlParserPath
|
||||||
|
|
||||||
|
const fileName = process.platform === 'darwin' ? '../bin/mac/wcc' : process.platform === 'linux' ? '../bin/linux/wcc' : '../bin/windows/wcc.exe'
|
||||||
|
wxmlParserPath = path.join(__dirname, fileName)
|
||||||
|
|
||||||
|
// 尝试修改权限
|
||||||
|
try {
|
||||||
|
fs.chmodSync(wxmlParserPath, 0o777)
|
||||||
|
} catch (err) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return wxmlParserPath
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取自定义组件编译参数
|
||||||
|
*/
|
||||||
|
function getComponentArgs(files) {
|
||||||
|
let args = []
|
||||||
|
let count = 0
|
||||||
|
|
||||||
|
files.forEach(file => {
|
||||||
|
const fileJson = file.fileJson
|
||||||
|
|
||||||
|
if (fileJson.usingComponents) {
|
||||||
|
args.push(file.pagePath)
|
||||||
|
args.push(Object.keys(fileJson.usingComponents).length)
|
||||||
|
args = args.concat(Object.keys(fileJson.usingComponents))
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
args.unshift(count)
|
||||||
|
|
||||||
|
return args
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取完整文件列表,包括自定义组件
|
||||||
|
*/
|
||||||
|
function getAllFiles(rootPath, files) {
|
||||||
|
const ret = []
|
||||||
|
const hasCheckMap = {}
|
||||||
|
|
||||||
|
for (let i = 0, len = files.length; i < len; i++) {
|
||||||
|
const file = files[i]
|
||||||
|
|
||||||
|
let fileJson = {}
|
||||||
|
const realPath = path.join(rootPath, file)
|
||||||
|
if (hasCheckMap[realPath]) continue
|
||||||
|
hasCheckMap[realPath] = true
|
||||||
|
try {
|
||||||
|
fileJson = require(`${realPath}.json`)
|
||||||
|
} catch(err) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自定义组件
|
||||||
|
if (fileJson.usingComponents) {
|
||||||
|
Object.keys(fileJson.usingComponents).forEach(subFileKey => {
|
||||||
|
const subFile = fileJson.usingComponents[subFileKey]
|
||||||
|
|
||||||
|
len++
|
||||||
|
|
||||||
|
let relativePath = path.relative(rootPath, path.join(path.dirname(realPath), subFile))
|
||||||
|
relativePath = relativePath.replace(/\\/g, '/')
|
||||||
|
files.push(relativePath)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.push({
|
||||||
|
pagePath: `${file}.wxml`,
|
||||||
|
jsonPath: `${file}.json`,
|
||||||
|
fileJson,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入口
|
||||||
|
* 编译 wxml 到 js
|
||||||
|
* files
|
||||||
|
*
|
||||||
|
* @param {*} rootPath
|
||||||
|
* @param {*} files 文件列表,包含组件
|
||||||
|
* @param {*} param2
|
||||||
|
* @param {*} options 配置选项
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function wxmlToJS(rootPath, files, { cut } = {}, options={}) {
|
||||||
|
const type = cut ? '-xc' : '-cc'
|
||||||
|
// files = getAllFiles(rootPath, files)
|
||||||
|
|
||||||
|
// @TODO,如果遇到参数过长被操作系统干掉的情况,可以使用 --config-path FILE 配置,参数空格换成空行
|
||||||
|
// const componentArgs = getComponentArgs(files), componentArgs.join(' ')
|
||||||
|
const args = ['-d', '--split', options.wxmlCompileConfigSplit, type, options.wxmlCompileConfig]
|
||||||
|
.concat(files)
|
||||||
|
.concat(['-gn', '$gwx'])
|
||||||
|
|
||||||
|
// TODO:可用性检测
|
||||||
|
// wxs调试
|
||||||
|
if(options.debugWXS)args.unshift('-ds')
|
||||||
|
// 懒加载
|
||||||
|
if(options.lazyload)args=args.concat(['-ll', options.lazyloadConfig])
|
||||||
|
|
||||||
|
// wxmlParserPath 二进制可执行文件路径
|
||||||
|
const wxmlParserPath = getWXMLParsePath()
|
||||||
|
// console.warn('wcc args:', args)
|
||||||
|
const wcc = spawnSync(wxmlParserPath, args, { cwd: rootPath })
|
||||||
|
|
||||||
|
if (wcc.status === 0) {
|
||||||
|
return wcc.stdout.toString()
|
||||||
|
} else {
|
||||||
|
throw new Error(`编译 .wxml 文件错误:${wcc.stderr.toString()}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = wxmlToJS
|
1134
compiler/wcc_node/util.js
Normal file
1134
compiler/wcc_node/util.js
Normal file
File diff suppressed because it is too large
Load Diff
91
compiler/wcsc_node/index.js
Normal file
91
compiler/wcsc_node/index.js
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
const util = require('./util')
|
||||||
|
const path = require('path')
|
||||||
|
const fs = util.fs
|
||||||
|
|
||||||
|
// TODO:未找到触发操作,所以相关功能未验证
|
||||||
|
let wcsc
|
||||||
|
try {
|
||||||
|
wcsc = require('./src/wcsc')
|
||||||
|
} catch (err) {
|
||||||
|
console.error('wcsc', err)
|
||||||
|
// wcsc = require('./build/Release/wcsc.node')
|
||||||
|
}
|
||||||
|
|
||||||
|
function tranWcscResultToObject(resultStr) {
|
||||||
|
const resultArr = resultStr.split('=')
|
||||||
|
const result = {}
|
||||||
|
for (let i = 0, len = resultArr.length; i < len && resultArr[i + 1]; i += 2) {
|
||||||
|
result[resultArr[i]] = resultArr[i + 1]
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
exports = async function (options) {
|
||||||
|
if (!options) throw Error('options is required')
|
||||||
|
|
||||||
|
// avoid undefined or null
|
||||||
|
if (typeof options.subPackage !== 'string') {
|
||||||
|
delete options.subPackage
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof options.lazyload !== 'boolean') {
|
||||||
|
delete options.lazyload
|
||||||
|
}
|
||||||
|
|
||||||
|
options = Object.assign(
|
||||||
|
{
|
||||||
|
files: [],
|
||||||
|
contents: [],
|
||||||
|
pageCount: 0,
|
||||||
|
cwd: process.cwd,
|
||||||
|
replaceContent: {},
|
||||||
|
debug: false,
|
||||||
|
classPrefix: '',
|
||||||
|
lazyload: false,
|
||||||
|
},
|
||||||
|
options,
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!options.contents.length) {
|
||||||
|
const tasks = options.files.map((file) => {
|
||||||
|
if (typeof options.replaceContent[file] === 'string') {
|
||||||
|
return options.replaceContent[file]
|
||||||
|
}
|
||||||
|
return fs.readFile(path.resolve(options.cwd, file), 'utf8')
|
||||||
|
})
|
||||||
|
options.contents = await Promise.all(tasks) || []
|
||||||
|
}
|
||||||
|
|
||||||
|
let wccResult
|
||||||
|
try {
|
||||||
|
console.warn('wcsc options', options)
|
||||||
|
wccResult = wcsc(options.cwd, options.files, options)
|
||||||
|
} catch (errmsg) {
|
||||||
|
throw new Error(errmsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = options.lazyload ? wccResult : tranWcscResultToObject(wccResult)
|
||||||
|
|
||||||
|
if (options.output) {
|
||||||
|
const output = path.resolve(options.cwd, options.output)
|
||||||
|
const dir = path.dirname(output)
|
||||||
|
try {
|
||||||
|
await fs.stat(dir)
|
||||||
|
} catch (e) {
|
||||||
|
await fs.mkdir(dir, {
|
||||||
|
recursive: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
await fs.writeFile(output, JSON.stringify(result, null, 2), 'utf8')
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(exports, 'version', {
|
||||||
|
get() {
|
||||||
|
return wcsc.version
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = exports
|
30
compiler/wcsc_node/package.json
Normal file
30
compiler/wcsc_node/package.json
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "miniprogram-wcsc",
|
||||||
|
"version": "0.0.2",
|
||||||
|
"description": "WXSS node C++ addon",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"install": "node-gyp-build",
|
||||||
|
"rebuild": "node-gyp rebuild",
|
||||||
|
"build:dist": "node scripts/build",
|
||||||
|
"build": "node-gyp build",
|
||||||
|
"test": "node ./test/index",
|
||||||
|
"format": "prettier *.js test/*.js scripts/*.js --write"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git@git.code.oa.com:redhoodsu/wxss.git"
|
||||||
|
},
|
||||||
|
"author": "redhoodsu",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"node-gyp-build": "^4.2.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eustia-module": "^1.21.2",
|
||||||
|
"licia": "^1.21.2",
|
||||||
|
"ncp": "^2.0.0",
|
||||||
|
"node-gyp": "^7.0.0",
|
||||||
|
"prettier": "^2.3.1"
|
||||||
|
}
|
||||||
|
}
|
58
compiler/wcsc_node/src/index.js
Normal file
58
compiler/wcsc_node/src/index.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
const path = require('path')
|
||||||
|
const vm = require('vm')
|
||||||
|
const glob = require('glob')
|
||||||
|
const unescapeJs = require('unescape-js')
|
||||||
|
|
||||||
|
const wcc = require('./wcc')
|
||||||
|
const wcsc = require('./wcsc')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
wxmlToJs(rootPath) {
|
||||||
|
// wcc 编译器需要完整的 wxml 文件列表
|
||||||
|
const files = glob.sync('**/*.wxml', {
|
||||||
|
cwd: rootPath,
|
||||||
|
nodir: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ['node_modules/**/*.wxml'],
|
||||||
|
})
|
||||||
|
const wxsFiles = glob.sync('**/*.wxs', {
|
||||||
|
cwd: rootPath,
|
||||||
|
nodir: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ['node_modules/**/*.wxs'],
|
||||||
|
})
|
||||||
|
const compileResult = wcc(rootPath, files.map(file => file.substr(0, file.length - 5)), wxsFiles)
|
||||||
|
|
||||||
|
return `
|
||||||
|
${compileResult};
|
||||||
|
return $gwx;
|
||||||
|
`
|
||||||
|
},
|
||||||
|
|
||||||
|
wxssToJs(rootPath) {
|
||||||
|
// wcsc 编译器需要完整的 wxss 文件列表
|
||||||
|
const files = glob.sync('**/*.wxss', {
|
||||||
|
cwd: rootPath,
|
||||||
|
nodir: true,
|
||||||
|
dot: true,
|
||||||
|
ignore: ['node_modules/**/*.wxss'],
|
||||||
|
})
|
||||||
|
const compileResult = wcsc(rootPath, files.map(file => file.substr(0, file.length - 5)))
|
||||||
|
|
||||||
|
// 拼装 wxss map 字符串
|
||||||
|
let wxssMap = ''
|
||||||
|
Object.keys(compileResult).forEach(key => {
|
||||||
|
if (path.extname(key) === '.wxss') {
|
||||||
|
wxssMap += `'${key}': ${unescapeJs(compileResult[key])},`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return `
|
||||||
|
${unescapeJs(compileResult.comm)};
|
||||||
|
var wxssMap = { ${wxssMap} };
|
||||||
|
return function (filePath) {
|
||||||
|
return wxssMap[filePath];
|
||||||
|
};
|
||||||
|
`
|
||||||
|
},
|
||||||
|
}
|
81
compiler/wcsc_node/src/wcsc.js
Normal file
81
compiler/wcsc_node/src/wcsc.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
const { spawnSync } = require('child_process')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 wxss 编译器路径
|
||||||
|
*/
|
||||||
|
let wxssParserPath = ''
|
||||||
|
function getWXSSParsePath() {
|
||||||
|
if (wxssParserPath) return wxssParserPath
|
||||||
|
|
||||||
|
const fileName = process.platform === 'darwin' ? '../bin/mac/wcsc' : process.platform === 'linux' ? '../bin/linux/wcsc' : '../bin/windows/wcsc.exe'
|
||||||
|
wxssParserPath = path.join(__dirname, fileName)
|
||||||
|
|
||||||
|
// 尝试修改权限
|
||||||
|
try {
|
||||||
|
fs.chmodSync(wxssParserPath, 0o777)
|
||||||
|
} catch (err) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
return wxssParserPath
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取完整文件列表
|
||||||
|
*/
|
||||||
|
function getAllFiles(rootPath, files) {
|
||||||
|
const ret = []
|
||||||
|
let compWxssNum = 0
|
||||||
|
|
||||||
|
for (let i = 0, len = files.length; i < len; i++) {
|
||||||
|
const file = files[i]
|
||||||
|
|
||||||
|
let fileJson = null
|
||||||
|
try {
|
||||||
|
fileJson = require(path.join(rootPath, `${file}.json`))
|
||||||
|
} catch(err) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fileJson) {
|
||||||
|
// 组件 wxss
|
||||||
|
compWxssNum++
|
||||||
|
ret.unshift(`${file}.wxss`)
|
||||||
|
} else {
|
||||||
|
ret.push(`${file}.wxss`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
list: ret,
|
||||||
|
compWxssNum,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编译 wxss 到 js
|
||||||
|
*/
|
||||||
|
function wxssToJS(rootPath, files, options) {
|
||||||
|
files = getAllFiles(rootPath, files)
|
||||||
|
|
||||||
|
const args = ['-db', '-pc', String(files.compWxssNum)].concat(files.list)
|
||||||
|
|
||||||
|
const wxssParserPath = getWXSSParsePath()
|
||||||
|
console.warn('wcsc args: ', args)
|
||||||
|
const wcsc = spawnSync(wxssParserPath, args, { cwd: rootPath })
|
||||||
|
|
||||||
|
if (wcsc.status === 0) {
|
||||||
|
const res = wcsc.stdout.toString().split('=')
|
||||||
|
const funcList = {}
|
||||||
|
for (let i = 0, len = res.length; i < len && res[i + 1]; i += 2) {
|
||||||
|
funcList[res[i]] = res[i + 1]
|
||||||
|
}
|
||||||
|
return funcList
|
||||||
|
} else {
|
||||||
|
return new Error(`编译 .wxss 文件错误:${wcsc.stderr.toString()}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = wxssToJS
|
1134
compiler/wcsc_node/util.js
Normal file
1134
compiler/wcsc_node/util.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -70,7 +70,7 @@ node-gyp list
|
|||||||
# end test
|
# end test
|
||||||
|
|
||||||
cd /workspace
|
cd /workspace
|
||||||
# rm -rf node nwjs package.nw
|
rm -rf node nwjs package.nw
|
||||||
#
|
#
|
||||||
# exec ./tools/rebuild-node-modules 0.53.1
|
# exec ./tools/rebuild-node-modules 0.53.1
|
||||||
exec ./tools/setup-wechat-devtools-bash
|
exec ./tools/setup-wechat-devtools-bash
|
||||||
|
@ -74,4 +74,9 @@
|
|||||||
|
|
||||||
| nodegit | NODE_MODULE_VERSION |
|
| nodegit | NODE_MODULE_VERSION |
|
||||||
|---------|----------|
|
|---------|----------|
|
||||||
| 0.27.0 | 64, 72, 83 |
|
| 0.27.0 | 64, 72, 83 |
|
||||||
|
|
||||||
|
| | wechat-devtools | miniprogram-compiler |
|
||||||
|
|------|-----------------|----------------------|
|
||||||
|
| wcc | v0.5vv_20200413_syb_scopedata | v0.5vv_20200413_syb_scopedata |
|
||||||
|
| wcsc | v0.4me_20190328_db | v0.4me_20190328_db |
|
14
readme.md
14
readme.md
@ -1,4 +1,4 @@
|
|||||||
[](https://github.com/jiyeme/wechat-devtools-linux/actions/workflows/release.yml)
|
[](https://github.com/msojocs/wechat-devtools-linux/actions/workflows/release.yml)
|
||||||
[](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
|
[](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
|
||||||
[](https://nwjs.io/downloads/)
|
[](https://nwjs.io/downloads/)
|
||||||
[](https://nodejs.org/en/)
|
[](https://nodejs.org/en/)
|
||||||
@ -9,7 +9,7 @@
|
|||||||
本项目修改自:https://github.com/dragonation/wechat-devtools/
|
本项目修改自:https://github.com/dragonation/wechat-devtools/
|
||||||
|
|
||||||
# 项目地址
|
# 项目地址
|
||||||
* https://github.com/jiyeme/wechat-devtools
|
* https://github.com/msojocs/wechat-devtools
|
||||||
|
|
||||||
# 进度
|
# 进度
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
# 使用方法
|
# 使用方法
|
||||||
|
|
||||||
可以在本项目的[发布](https://github.com/jiyeme/wechat-devtools/releases)中,寻找已经构筑好了的`.tar.gz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。
|
可以在本项目的[发布](https://github.com/msojocs/wechat-devtools/releases)中,寻找已经构筑好了的`.tar.gz`包(发布里也有度盘链接),下载解压后,运行其中的`bin/wechat-devtools`即可运行。
|
||||||
|
|
||||||
注:gitee上原来我也想放发布包的,但是文件太大了,附件最大只允许100M,而且总体积不能超过1G。所以目前暂时先只放github,如果大家发现下载速度慢的话,可以考虑科学上网或者度盘链接,速度快也稳定上传和下载。
|
注:gitee上原来我也想放发布包的,但是文件太大了,附件最大只允许100M,而且总体积不能超过1G。所以目前暂时先只放github,如果大家发现下载速度慢的话,可以考虑科学上网或者度盘链接,速度快也稳定上传和下载。
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ Docker容器启动方法
|
|||||||
2. 请安装`docker` `docker-compose`
|
2. 请安装`docker` `docker-compose`
|
||||||
3. 克隆本项目:
|
3. 克隆本项目:
|
||||||
```
|
```
|
||||||
git clone https://github.com/jiyeme/wechat-devtools.git
|
git clone https://github.com/msojocs/wechat-devtools.git
|
||||||
```
|
```
|
||||||
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
||||||
```
|
```
|
||||||
@ -75,7 +75,7 @@ docker-compose up
|
|||||||
2. 请安装nodejs,并配置到PATH环境变量中;
|
2. 请安装nodejs,并配置到PATH环境变量中;
|
||||||
3. 克隆本项目:
|
3. 克隆本项目:
|
||||||
```
|
```
|
||||||
git clone https://github.com/jiyeme/wechat-devtools.git
|
git clone https://github.com/msojocs/wechat-devtools.git
|
||||||
```
|
```
|
||||||
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
||||||
```
|
```
|
||||||
@ -95,7 +95,7 @@ git clone https://github.com/jiyeme/wechat-devtools.git
|
|||||||
并配置到PATH环境变量中;
|
并配置到PATH环境变量中;
|
||||||
3. 克隆本项目:
|
3. 克隆本项目:
|
||||||
```
|
```
|
||||||
git clone https://github.com/jiyeme/wechat-devtools.git
|
git clone https://github.com/msojocs/wechat-devtools.git
|
||||||
```
|
```
|
||||||
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
4. 在本地项目目录中执行如下的语句,构筑开发者工具:
|
||||||
```
|
```
|
||||||
@ -123,7 +123,7 @@ git clone https://github.com/jiyeme/wechat-devtools.git
|
|||||||
# 后续计划
|
# 后续计划
|
||||||
|
|
||||||
1. 增加Docker镜像的稳定性(对Host要求比较高)
|
1. 增加Docker镜像的稳定性(对Host要求比较高)
|
||||||
2. [处理计划](https://github.com/jiyeme/wechat-devtools/projects?type=beta)
|
2. [处理计划](https://github.com/msojocs/wechat-devtools/projects?type=beta)
|
||||||
|
|
||||||
# FAQ
|
# FAQ
|
||||||
[GO](docs/FAQ.MD)
|
[GO](docs/FAQ.MD)
|
||||||
|
9
test/fix-wcc-node
Normal file
9
test/fix-wcc-node
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
package_dir="/mnt/disk1/GitHub/wechat-devtools/package.nw"
|
||||||
|
cd "${package_dir}/node_modules/" \
|
||||||
|
&& rm -rf wcc wcsc \
|
||||||
|
&& mkdir -p "wcc/bin/linux" "wcsc/bin/linux" \
|
||||||
|
&& cp -r "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcc" "wcc/bin/linux/wcc" \
|
||||||
|
&& cp -r "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcsc" "wcsc/bin/linux/wcsc" \
|
||||||
|
&& cp -r "${package_dir}/../compiler/wcc_node"/* "wcc" \
|
||||||
|
&& cp -r "${package_dir}/../compiler/wcsc_node"/* "wcsc"
|
26
test/wcc/1/options.json
Normal file
26
test/wcc/1/options.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"./pages/index/index.wxml",
|
||||||
|
"./pages/logs/logs.wxml"
|
||||||
|
],
|
||||||
|
"contents": [
|
||||||
|
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
|
||||||
|
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
|
||||||
|
],
|
||||||
|
"replaceContent": {
|
||||||
|
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
|
||||||
|
},
|
||||||
|
"verbose": false,
|
||||||
|
"debug": true,
|
||||||
|
"debugWXS": false,
|
||||||
|
"showNewTree": false,
|
||||||
|
"addTestAttre": false,
|
||||||
|
"independent": false,
|
||||||
|
"genfuncname": "$gwx",
|
||||||
|
"isCut": false,
|
||||||
|
"cwd": "C:/users/msojocs/Documents/we1",
|
||||||
|
"lazyload": false,
|
||||||
|
"lazyloadConfig": "",
|
||||||
|
"wxmlCompileConfig": "2>_<4679./pages/index/index.wxml>_<46790>_<4679./pages/logs/logs.wxml>_<46790",
|
||||||
|
"wxmlCompileConfigSplit": ">_<4679"
|
||||||
|
}
|
1117
test/wcc/1/result-bin.js
Normal file
1117
test/wcc/1/result-bin.js
Normal file
File diff suppressed because it is too large
Load Diff
1258
test/wcc/1/result-node.js
Normal file
1258
test/wcc/1/result-node.js
Normal file
File diff suppressed because it is too large
Load Diff
25
test/wcc/2/options.json
Normal file
25
test/wcc/2/options.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"./pages/index/index.wxml",
|
||||||
|
"./pages/logs/logs.wxml"
|
||||||
|
],
|
||||||
|
"contents": [
|
||||||
|
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
|
||||||
|
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
|
||||||
|
],
|
||||||
|
"replaceContent": {
|
||||||
|
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
|
||||||
|
},
|
||||||
|
"verbose": false,
|
||||||
|
"debug": true,
|
||||||
|
"debugWXS": false,
|
||||||
|
"showNewTree": false,
|
||||||
|
"addTestAttre": false,
|
||||||
|
"independent": false,
|
||||||
|
"genfuncname": "$gwx",
|
||||||
|
"cwd": "C:/users/msojocs/Documents/we1",
|
||||||
|
"lazyload": false,
|
||||||
|
"lazyloadConfig": "",
|
||||||
|
"wxmlCompileConfig": "2>_<5795./pages/index/index.wxml>_<57950>_<5795./pages/logs/logs.wxml>_<57950",
|
||||||
|
"wxmlCompileConfigSplit": ">_<5795"
|
||||||
|
}
|
1258
test/wcc/2/result-node.js
Normal file
1258
test/wcc/2/result-node.js
Normal file
File diff suppressed because it is too large
Load Diff
26
test/wcc/3/options.json
Normal file
26
test/wcc/3/options.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"./pages/index/index.wxml",
|
||||||
|
"./pages/logs/logs.wxml"
|
||||||
|
],
|
||||||
|
"contents": [
|
||||||
|
"<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n",
|
||||||
|
"<!--logs.wxml-->\n<view class=\"container log-list\">\n <block wx:for=\"{{logs}}\" wx:key=\"timeStamp\" wx:for-item=\"log\">\n <text class=\"log-item\">{{index + 1}}. {{log.date}}</text>\n </block>\n</view>\n"
|
||||||
|
],
|
||||||
|
"replaceContent": {
|
||||||
|
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
|
||||||
|
},
|
||||||
|
"verbose": false,
|
||||||
|
"debug": true,
|
||||||
|
"debugWXS": false,
|
||||||
|
"showNewTree": false,
|
||||||
|
"addTestAttre": false,
|
||||||
|
"independent": false,
|
||||||
|
"genfuncname": "$gwx",
|
||||||
|
"isCut": false,
|
||||||
|
"cwd": "C:/users/msojocs/Documents/we1",
|
||||||
|
"lazyload": false,
|
||||||
|
"lazyloadConfig": "",
|
||||||
|
"wxmlCompileConfig": "2>_<3233./pages/index/index.wxml>_<32330>_<3233./pages/logs/logs.wxml>_<32330",
|
||||||
|
"wxmlCompileConfigSplit": ">_<3233"
|
||||||
|
}
|
1258
test/wcc/3/result-node.js
Normal file
1258
test/wcc/3/result-node.js
Normal file
File diff suppressed because it is too large
Load Diff
150
test/wcc/4/options.json
Normal file
150
test/wcc/4/options.json
Normal file
File diff suppressed because one or more lines are too long
10958
test/wcc/4/result-node.js
Normal file
10958
test/wcc/4/result-node.js
Normal file
File diff suppressed because one or more lines are too long
23
test/wcc/WCC.MD
Normal file
23
test/wcc/WCC.MD
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# 输入
|
||||||
|
node_modules --- options.json
|
||||||
|
把options.json转换为命令行参数
|
||||||
|
|
||||||
|
execute ----
|
||||||
|
```
|
||||||
|
Wechat WXML Compiler, version v0.5vv_20200413_syb_scopedata
|
||||||
|
Usage: ./wcc [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-ll XCPath] <FILES... | -s <SINGLE_FILE>
|
||||||
|
Options:
|
||||||
|
-d: output code for debug
|
||||||
|
-o: output destination (default stdout)
|
||||||
|
-xc: output simplified code for custom component
|
||||||
|
-cc: output compelete code for custom component
|
||||||
|
-s: read from stdin
|
||||||
|
-ds: insert debug wxs info
|
||||||
|
-cb: add life cycle callback
|
||||||
|
-ll: compile in lazy load mode
|
||||||
|
```
|
||||||
|
|
||||||
|
# 输出
|
||||||
|
|
1023
test/wcc/common.js
Normal file
1023
test/wcc/common.js
Normal file
File diff suppressed because it is too large
Load Diff
9
test/wcc/test.sh
Normal file
9
test/wcc/test.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd /home/msojocs/Documents/we1 && \
|
||||||
|
/mnt/disk1/GitHub/wechat-devtools/package.nw/node_modules/wcc/bin/linux/wcc -d --split ">_<9772" -cc "2>_<9772./pages/index/index.wxml>_<97720>_<9772./pages/logs/logs.wxml>_<97720" ./pages/index/index.wxml ./pages/logs/logs.wxml -gn $gwx
|
||||||
|
# | grep Z
|
||||||
|
|
||||||
|
# cd /home/msojocs/Documents/we1 && \
|
||||||
|
# wine /mnt/disk1/GitHub/wechat-devtools/cache/wechat_devtools_1.05.2201240_x64/code/package.nw/js/vendor/wcc.exe \
|
||||||
|
# " -d --split >_<9772 -xc 2>_<9772./pages/index/index.wxml>_<97720>_<9772./pages/logs/logs.wxml>_<97720" \
|
||||||
|
# " ./pages/logs/logs.wxml ./pages/index/index.wxml -gn $gwx"
|
@ -16,7 +16,7 @@ const parseFile = function (path) {
|
|||||||
// 开启调试,更新参数
|
// 开启调试,更新参数
|
||||||
content['chromium-args'] = content['chromium-args'].replace('--disable-devtools', '').replace('--ignore-gpu-blacklist', '--ignore-gpu-blocklist') + ' --mixed-context'
|
content['chromium-args'] = content['chromium-args'].replace('--disable-devtools', '').replace('--ignore-gpu-blacklist', '--ignore-gpu-blocklist') + ' --mixed-context'
|
||||||
content.window.height = content.window.width = 500
|
content.window.height = content.window.width = 500
|
||||||
fs.writeFileSync(path, JSON.stringify(content, null, 4));
|
fs.writeFileSync(path, JSON.stringify(content));
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,9 +101,19 @@ mkdir -p "${package_dir}/node_modules/vscode-ripgrep/bin"
|
|||||||
cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg"
|
cp -fr "${package_dir}/node_modules_tmp/node_modules/vscode-ripgrep/bin/rg" "${package_dir}/node_modules/vscode-ripgrep/bin/rg"
|
||||||
|
|
||||||
# wcc wcsc
|
# wcc wcsc
|
||||||
|
# 预览编译
|
||||||
cd "${package_dir}/js/vendor/" && rm -rf "wcc.exe" "wcsc.exe"
|
cd "${package_dir}/js/vendor/" && rm -rf "wcc.exe" "wcsc.exe"
|
||||||
cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcc" "${package_dir}/js/vendor/wcc.exe"
|
cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcc" "${package_dir}/js/vendor/wcc.exe"
|
||||||
cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcsc" "${package_dir}/js/vendor/wcsc.exe"
|
cp "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcsc" "${package_dir}/js/vendor/wcsc.exe"
|
||||||
|
# 可视化编译
|
||||||
|
(cd "${package_dir}/node_modules/" \
|
||||||
|
&& rm -rf wcc wcsc \
|
||||||
|
&& mkdir -p "wcc/bin/linux" "wcsc/bin/linux" \
|
||||||
|
&& cp -r "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcc" "wcc/bin/linux/wcc" \
|
||||||
|
&& cp -r "${package_dir}/node_modules_tmp/node_modules/miniprogram-compiler/bin/linux/wcsc" "wcsc/bin/linux/wcsc" \
|
||||||
|
&& cp -r "${package_dir}/../compiler/wcc_node"/* "wcc" \
|
||||||
|
&& cp -r "${package_dir}/../compiler/wcsc_node"/* "wcsc"
|
||||||
|
)
|
||||||
|
|
||||||
rm -rf "${package_dir}/node_modules_tmp"
|
rm -rf "${package_dir}/node_modules_tmp"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user