gpt4 book ai didi

javascript - 使用 js2coffee 将整个项目转换为 CoffeeScript

转载 作者:数据小太阳 更新时间:2023-10-29 04:22:20 24 4
gpt4 key购买 nike

问题:

js2coffe 仅适用于单个文件 输入/输出重定向。转换整个项目及其目录结构真的很痛苦。

想要转换一个 ExpressJS 默认应用程序项目,包括。是目录结构吗?

查看下面的脚本

最佳答案

更新:如果您赶时间,请检查下面这个脚本的简短版本。

一个简单的 Bash 脚本为您完成这项工作:

#!/bin/bash

for FILE in `find . -name "*.js" -type f -o -path './node_modules' -prune -o -path './components' -prune`
do
if [ -e $FILE ] ; then
COFFEE=${FILE//.js/.coffee}

echo "converting ${FILE} to ${COFFEE}"
js2coffee "$FILE" > "$COFFEE"
else
echo "File: {$1} does not exist!"
fi
done

制作一个文件,例如all2coffee,把它放在/usr/local/bin,在终端添加一个chmod + x标记

要求

js2coffee 全局安装,如果还没有安装,请执行:npm install -g js2coffee

脚本解释

for 循环:

for FILE in `find arguments` .... 表示:

每次 find 偶然发现 .js 文件时,find 输出都会分配给 FILE 字符串

查找参数:

-name "*.js" 抓取所有以 .js 结尾的文件

-type f 必须是 file 类型,因为我们不需要 .js 目录,而只需要文件

-o -path './node_modules' -prune

excludes files in dir's ./node_modules 添加-prune 很关键,否则find会掉入dir 并打印在目录中找到的 *.js 文件

做 block :

if [ -e ${FILE} ] ;然后

-e 标志检查来自 FILE 的字符串是否是文件系统上的现有文件,否则 else被执行。

字符串操作:

COFFEE=${FILE//.js/.coffee}

我们将 COFFEE 变量赋给一个我们替换的字符串.js.coffee 通过 bash 字符串操作:${STRING//match_this/replace_with}

转化:

js2coffee "$FILE"> "$COFFEE" 我们将 FILECOFFEE 作为 string 提供给 js2coffee

额外:

您想将所有转换后的 .coffee 文件移动到一个新目录,但保留结构?

在 Linux 中使用 findrsync 或在 Os X 上使用 ditto 因为cp不会创建此命令所需的目录。这里有一个小脚本可以执行完成这项工作的主要目录

所有 .coffee 文件都将在/coffee 目录中复制 .js 文件层次结构

for FILE in `find . -name "*.coffee"`
do
ditto .${FILE/./} coffee${FILE/./}
done

在您将文件转换为 .coffee 后执行此操作

更新

您可以在第一次运行后将 dittorsyncmv 交换以移动 mv 之后的文件,例如cp 不创建子目录。

更新 2

为那些准时的人添加了一个类轮,请参阅下面我的第二个答案!

更新 3

添加了一个选项来从转换中排除 ./node_modules 目录,对于那些不想转换其依赖项的人

关于javascript - 使用 js2coffee 将整个项目转换为 CoffeeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com