Clasp 无法创建新的 Apps 脚本

Clasp can not create a new Apps Script

我用这个终端命令克隆了一个应用脚本

clasp clone <scriptId>

到此文件夹:

.../desktop/AppsScriptProjects

并且文件已下载到文件夹

.../desktop/AppsScriptProjects/AppsScriptName

但是现在,我想创建一个新的 Apps 脚本。

我导航回:

.../desktop/AppsScriptProjects

并执行:

clasp create "Test Project"

但我得到了错误:

Nested clasp projects are not supported.

我做错了什么?

Version Info:

OS: Mac Os (Mojave)

Node: v10.15.3

Clasp: 2.1.0

当我 运行 ls -a 在我打算创建一个新的应用程序脚本的目录上时,我得到的是:

. ..

问题是 clasp create <words> creates a project in the current directory,脚本项目名称 <words>,除 appsscript.json.clasp.json 外没有其他文件。

即使给定 --rootDir <folder name> 参数,也会在当前目录 中创建项目。这与 clasp clone 的行为相同,因为克隆是 到当前目录 .

所以:

$ cd ~/clasp_projects
$ clasp create "project 1"
Clone which script? (Use arrow keys)
Clone which script? standalone
Created new standalone script <...>
$ ls -a
./ ../ .clasp.json appsscript.json

如果您也提供了根目录:

$ cd ~/clasp_projects
$ mkdir "project 1"
$ clasp create "project 1" --rootDir "project 1"
Clone which script? (Use arrow keys)
Clone which script? standalone
Created new standalone script <...>
$ ls -a
./ ../ .clasp.json appsscript.json 'project 1'/
$ ls -a "project 1"
./ ../

没什么不同。

对于这两种情况,您的当前目录现在都会有一个 .clasp.json 文件,向 clasp 表明这是一个与 clasp 相关的存储库,并且对应于单个 Apps 脚本项目。在您的情况下,您具有以下目录结构:

AppsScriptProjects/
`--- AppsScriptName/
     |--- .clasp.json
     |--- appsscript.json
     |--- myscript.js
       ...

当您尝试从 AppsScriptProjects/ 调用 clasp create "Test Project" 时,您是在告诉 clasp 创建此结构:

AppsScriptProjects/
|--- AppsScriptName/
|    |--- .clasp.json
|    |--- appsscript.json
|    |--- myscript.js
|      ...
|--- .clasp.json
`--- appsscript.json

解决方案

代替上述方法,创建 & cd 到 "Test Project/":

$ cd AppsScriptProjects
$ mkdir "Test Project"
$ cd "Test Project"
$ clasp create
...

这将产生

AppsScriptProjects/
|--- AppsScriptName/
|    |--- .clasp.json
|    |--- appsscript.json
|    |--- myscript.js
|      ...
`--- Test Project/
     |--- .clasp.json 
     `--- appsscript.json

简而言之:clasp 适用于您当前的目录。它不会在子目录中创建项目。虽然它可以在子目录中创建项目文件,但项目目录(您可以在其中找到.clasp.json)是其中的目录你调用了 clasp.