bash - 如何从保存的 Bash 变量中运行 ESLint?
问题描述
我正在为项目工作设置一个项目初始化脚本和一个 git 预提交挂钩。我们有我想要运行的用于 linting 的脚本,而不是在根目录中,而是在子目录中,我想保持这种方式。
我想要做的是将 eslint 和 phpcs 的二进制可执行文件的完整相对路径设置为 bash 变量,然后能够运行它们。我还希望能够从 bash 变量中执行 composer.phar 二进制文件。
所以这就是我所做的。
# Set tool paths
PHPCS_PATH=`./wp-content/themes/our-theme/vendor/bin/phpcs`
PHPCBF_PATH=`./wp-content/themes/our-theme/vendor/bin/phpcbf`
ESLINT_PATH=`./wp-content/themes/our-theme/node_modules/.bin/eslint`
SASSLINT_PATH=`./wp-content/themes/our-theme/node_modules/.bin/sass-lint`
COMPOSER_PATH=`./wp-content/themes/our-theme/composer.phar`
我试图从项目根目录本地测试这些路径,但我不断收到错误。
我将其中一行复制并粘贴到我的终端中,按 Enter,然后执行以下操作之一:
${ESLINT_PATH}
并且command ${ESLINT_PATH}
和所有让我"${ESLINT_PATH}"
...$ESLINT_PATH
zsh: command too long: eslint [options] file.js [file.js] [dir]\n\nBasic configuration...
eval "${ESLINT_PATH}"
一切都让我eval $ESLINT_PATH
...eval "$ESLINT_PATH"
zsh: no matches found: [options] zsh: command not found: Basic zsh: command not found: --no-eslintrc zsh: command not found: -c, zsh: no matches found: [String]
我失去理智了吗?我到底如何使路径可执行?如果我获取路径的内容并运行它,它就可以正常工作。
示例:./wp-content/themes/swmaster/node_modules/.bin/eslint
实际上告诉我指定路径。
我在这里做错了什么?
解决方案
看起来您的问题出在这些作业中:
# Set tool paths
PHPCS_PATH=`./wp-content/themes/our-theme/vendor/bin/phpcs`
PHPCBF_PATH=`./wp-content/themes/our-theme/vendor/bin/phpcbf`
ESLINT_PATH=`./wp-content/themes/our-theme/node_modules/.bin/eslint`
SASSLINT_PATH=`./wp-content/themes/our-theme/node_modules/.bin/sass-lint`
COMPOSER_PATH=`./wp-content/themes/our-theme/composer.phar`
这些反引号是命令替换。一种更容易阅读的写作方式是:
PHPCS_PATH=$(./wp-content/themes/our-theme/vendor/bin/phpcs)
...
我不认为那是你真正想要的。命令替换实际上执行内部的内容,并被替换为stdout
. 我认为您实际上是在尝试进行字符串分配。这可以通过简单地删除反引号来完成,因为路径中没有空格。但无论如何,双引号是一个好习惯。尝试这个:
# Set tool paths
PHPCS_PATH="./wp-content/themes/our-theme/vendor/bin/phpcs"
PHPCBF_PATH="./wp-content/themes/our-theme/vendor/bin/phpcbf"
ESLINT_PATH="./wp-content/themes/our-theme/node_modules/.bin/eslint"
SASSLINT_PATH="./wp-content/themes/our-theme/node_modules/.bin/sass-lint"
COMPOSER_PATH="./wp-content/themes/our-theme/composer.phar"
解决您的问题的另一种方法是将这些目录添加到您的PATH
变量中。例如,如果您将您设置PATH
为包含 phpcs 和 phpcbf 的 bin 目录,您将能够执行这些程序而无需指定完整(或在这种情况下为相对)路径:
export PATH=$PATH:./wp-content/themes/our-theme/vendor/bin
# or export PATH=$PATH:/full/path/to/wp-content/themes/our-theme/vendor/bin
# Now you can just run the line below without a path...
phpcs
推荐阅读
- php - PHP仅在其他索引匹配时按列过滤多维数组
- python-3.x - Chromedriver 使用 Docker 文件安装,但 chrome 驱动程序未反映在上述目录中
- r - 我应该在 RMarkdown 中正确显示谁的 vtable?
- anylogic - AnyLogic 无法正确读取 Excel 字符串值
- r - 拆分表示时间的字符串并以秒为单位提取值
- javascript - 由于看似无关的库,对象范围规则似乎发生了变化?
- google-cloud-platform - 将自定义域映射到 GCP API 网关
- android - 如何在 Kotlin Android 中迭代单个 JSON 数组结果
- php - Laravel 7不显示img
- python - 如何使用 groupby 时间创建单独的数据框