第一帆并没有创建.tmp / public,所以我手动完成了。但它也没有将资源从我的资源文件夹复制到我的公共文件夹。有人可以解释为什么会这样吗?
当时,我得到的答案没有帮助, 我现在更新到9.8,我似乎没有任何问题。
答案 0 :(得分:11)
我有同样的问题。运行sails lift
时,未创建.tmp文件夹。最终对我有用的是在我的sails应用程序的根文件夹中本地安装Grunt。所以只需在你的sails app文件夹中运行npm install grunt
即可。使用-g
标志全局安装Grunt显然是不够的。本地安装后,您可以再次运行sails lift
,并创建.tmp文件夹
希望这有帮助!
答案 1 :(得分:5)
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
文件夹并将其插入/linker
路径来“升级”未使用/assets
标记创建的项目。然后,您可以在/js
下添加/styles
,/templates
和/linker
。
通过sails lift
启动sails服务器时,通过grunt
文件夹中的.tmp
创建/同步以下文件夹结构:
.tmp
/public
如果任何其他项目文件夹(例如/images
,/js
,/styles
,/templates
)包含内容,则会将其复制/同步到{{1 }}夹。区别在于,如果存在.tmp/public
文件夹,则会在/linker
下创建/js
,/styles
和其他/templates
文件夹。
/linker
文件会怎样?如果您使用layout.ejs
文件夹,则风帆会更改您的/linker
文件,以包含指向您的javascript和css文件的链接。因此,从项目的layout.ejs
文件夹提供的任何页面都可以访问这些文件中包含的javascript和css。
Grunt使用/views
中的评论标记作为这些链接的placehodler。例如,放置在layout.ejs
文件夹中的任何内容都会自动在/style
这两个标记之间链接:
layout.ejs
<!--STYLES-->
<!--STYLES END-->
文件夹中的任何内容都将在这两个标记之间链接:
/js
<!--SCRIPTS-->
<!--SCRIPTS END-->
文件夹中的任何内容都将链接在这两个标记之间:
/templates
以下是在任一情况下访问资产的方式:
使用 <!--TEMPLATES-->
<!--TEMPLATES END-->
文件夹
/linker
- &gt; /js
/linker/js/yourFile.js
- &gt; /styles
不使用 /linker/styles/yourCSS.css
文件夹
/linker
- &gt; /js
/js/yourFile.js
- &gt; /styles
答案 2 :(得分:2)
Grunt似乎没有在我的安装上执行任何,包括复制assets文件夹。我在Rob Wormald的Google Group上发现了这篇帖子,终于让它为我工作了:
在.sailsrc文件的项目根目录中,删除“grunt”:false行。那会让事情变得有效。
这是我认为应该在下一个版本中纠正的其中一个生成器的问题。
答案 3 :(得分:1)
您需要在sails项目根目录中检查Gruntfile.js,一切都会更容易理解。这是一些简短的解释:
我希望这有帮助:)。