- 添加 JavaScript 脚本修复 lodash.template 模块中的 assignWith 问题 - 提供 Shell 脚本支持 Linux/Mac 系统的自动修复功能 - 实现 assignWith 函数的简单 polyfill 版本以确保兼容性 - 添加补丁检测机制防止重复修补同一文件 - 在构建前自动运行修复脚本确保依赖完整性
49 lines
1.3 KiB
Bash
49 lines
1.3 KiB
Bash
#!/bin/bash
|
|
# Fix lodash.template assignWith issue for Linux/Mac servers
|
|
# Run this script after npm/yarn install
|
|
|
|
LODGASH_TEMPLATE="node_modules/lodash.template/index.js"
|
|
|
|
if [ ! -f "$LODGASH_TEMPLATE" ]; then
|
|
echo "❌ lodash.template not found. Please run npm install or yarn install first."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if already patched
|
|
if grep -q "LODASH_TEMPLATE_PATCHED" "$LODGASH_TEMPLATE"; then
|
|
echo "✓ lodash.template already patched"
|
|
exit 0
|
|
fi
|
|
|
|
echo "🔧 Patching lodash.template..."
|
|
|
|
# Create a temporary file with the patch
|
|
PATCH=$(cat <<'EOF'
|
|
/* LODASH_TEMPLATE_PATCHED */
|
|
// assignWith polyfill for lodash.template
|
|
function assignWith(object, source, customizer) {
|
|
if (object == null) return object;
|
|
var props = Object.keys(Object(source));
|
|
for (var i = 0; i < props.length; i++) {
|
|
var key = props[i];
|
|
var value = source[key];
|
|
var assignedValue = customizer ? customizer(object[key], value, key, object, source) : value;
|
|
if (assignedValue !== undefined) {
|
|
object[key] = assignedValue;
|
|
}
|
|
}
|
|
return object;
|
|
}
|
|
|
|
EOF
|
|
)
|
|
|
|
# Insert after the first line (license comment)
|
|
{
|
|
head -n 1 "$LODGASH_TEMPLATE"
|
|
echo "$PATCH"
|
|
tail -n +2 "$LODGASH_TEMPLATE"
|
|
} > "$LODGASH_TEMPLATE.tmp" && mv "$LODGASH_TEMPLATE.tmp" "$LODGASH_TEMPLATE"
|
|
|
|
echo "✅ Successfully patched lodash.template with assignWith function"
|