gpt4 book ai didi

javascript - usemin 为输入 Assets 文件使用了错误的目录

转载 作者:行者123 更新时间:2023-11-30 05:32:18 24 4
gpt4 key购买 nike

我正在尝试让 gruntfile 工作以连接/丑化 Laravel 应用程序中的 javascript 文件。我的所有任务都是独立工作的,但无论出于何种原因,我的输入 javascript 文件的路径都没有正确设置。

这是我的 Blade 模板之一的示例:

@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/分钟。我也想摆脱它,但如果我能解决这个问题,我会很高兴。

最佳答案

这里的答案其实比较简单,可以直接从usemin documentation中搜集到。 (当我开始仔细观察时):

Blocks are expressed as:

<!-- 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

关于javascript - usemin 为输入 Assets 文件使用了错误的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com