【发布时间】:2017-05-18 19:11:05
【问题描述】:
First Sails 没有创建 .tmp/public,所以我手动创建。但它也不会将我的资产文件夹中的内容复制到我的公用文件夹中。有人可以解释这是为什么吗?
#
当时,我得到的答案没有帮助, 我现在已经更新到9.8,我似乎没有任何问题。
#
【问题讨论】:
标签: sails.js
First Sails 没有创建 .tmp/public,所以我手动创建。但它也不会将我的资产文件夹中的内容复制到我的公用文件夹中。有人可以解释这是为什么吗?
当时,我得到的答案没有帮助, 我现在已经更新到9.8,我似乎没有任何问题。
【问题讨论】:
标签: sails.js
我也有同样的问题。运行 sails lift 时,未创建 .tmp 文件夹。最终对我有用的是在我的 Sails 应用程序的根文件夹中本地安装 Grunt。所以只需在您的sails 应用程序文件夹中运行npm install grunt。使用 -g 标志全局安装 Grunt 显然是不够的。本地安装后,再次运行sails lift,就会创建.tmp文件夹。
希望这会有所帮助!
【讨论】:
Sails 使用grunt 管理资产。其中一些“管理”涉及在您的项目文件夹结构和服务器的公用文件夹之间同步文件,但与往常一样,我走在了前面。
grunt 的配置基于您的sails 项目根目录中的Gruntfile.js 文件。这个文件有很多内容,但是,我将专注于 javascript 和 css 资产。
当您第一次创建项目时,您可以选择使用--linker 标志。使用标志的一个例子是sails new projectName --linker。以下是两种场景下/assets文件夹的目录结构:
使用 --linker 标志
/assets
/images
/linker
/js
/styles
/templates
不使用 --linker 标志
/assets
/images
/js
/styles
注意,您可以通过手动创建/linker 文件夹并将其插入/assets 路径来“升级”不是使用--linker 标志创建的项目。然后您可以在/linker 下添加/js、/styles 和/templates。
当通过sails lift 启动sails 服务器时,通过grunt 在.tmp 文件夹中创建/同步以下文件夹结构:
.tmp
/public
如果任何其他项目文件夹(例如 /images、/js、/styles、/templates)包含内容,则会将它们复制/同步到 .tmp/public文件夹。区别在于如果存在/linker 文件夹,则在/linker 下创建/js、/styles 和一个额外的/templates 文件夹。
layout.ejs 文件会怎样?如果您使用 /linker 文件夹,sails 将更改您的 layout.ejs 文件以包含指向您的 javascript 和 css 文件的链接。因此,从项目的 /views 文件夹提供的任何页面都可以访问这些文件中包含的 javascript 和 css。
Grunt 使用 layout.ejs 中的注释标签作为这些链接的占位符。例如,放置在/style 文件夹中的任何内容都将自动链接到layout.ejs 这两个标签之间:
<!--STYLES-->
<!--STYLES END-->
/js 文件夹中的任何内容都将在这两个标签之间链接:
<!--SCRIPTS-->
<!--SCRIPTS END-->
/templates 文件夹中的任何内容都将在这两个标签之间链接:
<!--TEMPLATES-->
<!--TEMPLATES END-->
以下是您在任一场景下访问资产的方式:
使用/linker 文件夹
/js --> /linker/js/yourFile.js
/styles --> /linker/styles/yourCSS.css
不使用/linker 文件夹
/js --> /js/yourFile.js
/styles --> /styles/yourCSS.css
【讨论】:
Grunt 似乎没有在我的安装中执行任何操作,包括复制资产文件夹。我在 Rob Wormald 的 Google Group 上找到了这篇文章,终于让它为我工作了:
在您的 .sailsrc 文件中,在项目的根目录中,删除显示“grunt”的行:false。那应该让事情正常进行。
这是我认为应该在下一个版本中更正的生成器之一的问题。
【讨论】:
您需要检查您的sails 项目根目录中的Gruntfile.js,一切都会更容易理解。以下是一些简短的解释:
我希望这会有所帮助:)。
【讨论】: