📦 添加虚拟环境和启动脚本

新增:
- backend/venv/ - Python 虚拟环境
- backend/start.sh - 启动脚本(使用虚拟环境)
- backend/requirements.txt - 依赖列表
- .gitignore - 忽略虚拟环境和缓存文件

说明:
- 每个项目使用独立虚拟环境
- 避免依赖冲突
- 启动脚本自动创建和激活虚拟环境
This commit is contained in:
2026-04-04 18:28:31 +08:00
parent 9ab279e1fe
commit 96f6318101
32058 changed files with 3949495 additions and 22 deletions

View File

@@ -0,0 +1,8 @@
'use strict';
/** @return {import('postcss-value-parser').SpaceNode} */
module.exports = function addSpace() {
return /** @type import('postcss-value-parser').SpaceNode */ ({
type: 'space',
value: ' ',
});
};

View File

@@ -0,0 +1,36 @@
'use strict';
const { stringify } = require('postcss-value-parser');
/**
* @param {import('postcss-value-parser').Node[][]} values
* @return {string}
*/
module.exports = function getValue(values) {
return stringify(flatten(values));
};
/**
* @param {import('postcss-value-parser').Node[][]} values
* @return {import('postcss-value-parser').Node[]}
*/
function flatten(values) {
/** @type {import('postcss-value-parser').Node[]} */
const nodes = [];
for (const [index, arg] of values.entries()) {
arg.forEach((val, idx) => {
if (
idx === arg.length - 1 &&
index === values.length - 1 &&
val.type === 'space'
) {
return;
}
nodes.push(val);
});
if (index !== values.length - 1) {
nodes[nodes.length - 1].type = 'div';
nodes[nodes.length - 1].value = ',';
}
}
return nodes;
}

View File

@@ -0,0 +1,8 @@
'use strict';
/**
* @param {string[]} grid
* @return {string}
*/
module.exports = function joinGridVal(grid) {
return grid.join(' / ').trim();
};

View File

@@ -0,0 +1,3 @@
'use strict';
// All of the curently implemented math functions
module.exports = new Set(['calc', 'clamp', 'max', 'min']);

View File

@@ -0,0 +1,10 @@
'use strict';
/**
* @param {string} prop
* @return {string}
*/
function vendorUnprefixed(prop) {
return prop.replace(/^-\w+-/, '');
}
module.exports = vendorUnprefixed;