我正在尝试获取一个gruntfile,用于在Laravel应用程序中连接/ uglify 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
任务,用于将app/views/dist/js/min
的Javascript文件复制回public/js/min
。我也想摆脱它,但如果我能解决这个问题,我会很高兴。
答案 0 :(得分:1)
这里的答案实际上相对简单,并且可以直接从usemin documentation收集(一旦我开始看起来足够努力):
块表示为:
<!-- build:<type>(alternate search path) <path> -->
... HTML Markup, list of script / link tags.
<!-- endbuild -->
在我使用Laravel的情况下,我需要指定一个public/
的备用搜索路径,它运行得很好:
@section('scripts')
<!-- build:js(public/) /js/min/script.min.js -->
<script type="text/javascript" src="/js/script1.js"></script>
<script type="text/javascript" src="/js/script2.js"></script>
<script type="text/javascript" src="/js/script3.js"></script>
<script type="text/javascript" src="/js/script4.js"></script>
<!-- endbuid -->
@stop