【发布时间】:2014-11-23 23:28:06
【问题描述】:
我正在尝试让 gruntfile 在 Laravel 应用程序中连接/丑化 javascript 文件。我的所有任务都是独立工作的,但无论出于何种原因,我的输入 javascript 文件的路径都没有正确设置。
这是我的刀片模板之一的示例:
@section('scripts')
<!-- build:js /js/min/page.min.js -->
<script type="text/javascript" src="/js/scrollIt.min.js"></script>
<script type="text/javascript" src="/js/jquery.omniwindow.js"></script>
<script type="text/javascript" src="/js/isotope.min.js"></script>
<!-- endbuild -->
@stop
这是我的 useminPrepare / usemin 任务定义:
useminPrepare: {
html: 'app/views/**/*.blade.php',
options: {
dest: 'app/views/dist'
}
},
usemin: {
options: {
assetDirs: [ 'public/js' ]
},
html: [ 'app/views/dist/**/*.blade.php' ]
},
我没有定义 uglify 任务,我只是依赖 usemin 将生成的任务。
所有模板都正确地进入了“app/views/dist”目录,并进行了正确的替换(在上面的示例中,模板中包含一个位于public/js/min/page.min.js 的javascript 文件)。在处理过程中,我注意到输出:
$ grunt build
Running "useminPrepare:html" (useminPrepare) task
Going through {list of templates} to update the config
Looking for build script HTML comment blocks
Configuration is now:
concat:
{ generated:
{ files:
[ { dest: '.tmp/concat/js/min/page.min.js',
src:
[ 'app/views/course/js/scrollIt.min.js',
'app/views/course/js/jquery.omniwindow.js',
'app/views/course/js/isotope.min.js' ] },
] } }
uglify:
{ generated:
{ files:
[ { dest: 'app/views/dist/js/min/page.min.js',
src: [ '.tmp/concat/js/min/page.min.js' ] },
] } }
cssmin:
{}
正如您在上面看到的,它正在app/views/course/js 目录中查找我的 javascript 文件,这是不正确的。为什么是这样?我认为在我的 usemin 任务中指定 assetDirs: ['public/js'] 会告诉 grunt 在哪里可以找到这些文件。我尝试将脚本引用更改为如下所示:
<script type="text/javascript" src="../../../public/js/scrollIt.min.js"></script>
这会导致构建成功,但会破坏我的本地开发,因此它绝对不是解决方案。我是否需要以某种方式覆盖uglify:generated 任务,如果需要,我该如何为具有生成文件名的多个不同模板执行此操作?
如果有必要,您可以查看我的整个 Gruntfile.js here。你可以从那里看到我还必须添加一个新的copy 任务,用于将 Javascript 文件从app/views/dist/js/min 复制回public/js/min。我也想摆脱它,但如果我能解决这个问题,我会很高兴。
【问题讨论】:
标签: javascript laravel gruntjs blade grunt-usemin