fex-team / fis3-packager-map

A packager plugin for fis to pack resources.
BSD 2-Clause "Simplified" License
7 stars 7 forks source link

加上md5戳之后,打包后的文件访问不了 #11

Closed kevin1220 closed 7 years ago

kevin1220 commented 8 years ago

我把所有的css文件打包成了lib.css之后,在页面中引用lib.css的时候是没有问题,但是加上md5戳之后,在页面上引用的时候,不会自动定位到对应的资源文件,其他的没打包的静态资源都会自动加上,并自动定位到对应的资源,这是为什么呢

2betop commented 8 years ago

在 fis 里面只能引用源码里面的文件,不能引用编译后生成的文件。正确的方式是 fis 的源码不变,不管打包与否,

html

  <script src="1.js" />
  <script src="2.js" />

fis3 在打包情况下会编译成

<script src="pkg-1.js" />

这个替换过程对于纯前端项目来说是 loader 插件完成,对于跟后端打通的项目如: fis3-smarty fis3-jello, yog2 是后端完成的。

zhiqiang21 commented 7 years ago

@2betop 想问下这个是必须得安装一个loader插件,才会把模板文件中待合并的文件替换成合并完成的产文件么?

比如说下面这个样子的:

<link rel="stylesheet" type="text/css" href="../public/lib_css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="../public/lib_css/jquery.datetimepicker.css">
    <link rel="stylesheet" type="text/css" href="../public/css/index.css">

fis的配置如下:

fis.match('::package', {
        packager: fis.plugin('map', {
            '/public/static/css/lib.css': [
                '/public/lib_css/bootstrap.min.css',
                '/public/lib_css/jquery.datetimepicker.css',
                '/public/css/index.css'
            ]
        })
    });

必须安装插件,才可以把模板文件(前面代码中的那三个静态文件路径)替换为合并后的静态文件么?

<link rel="stylesheet" type="text/css" href="/public/static/css/lib.css">

困惑好几天了,求指教

zhiqiang21 commented 7 years ago

需要使用这个loader插件来解决为题https://github.com/fex-team/fis3-postpackager-loader

需要插入特定位置的时候,就加标识


{% block statichead %}
    <!--STYLE_PLACEHOLDER-->       这里就是标识合并以后的文件插入模板的位置
    <!--<link rel="stylesheet" type="text/css" href="../public/static/css/lib.css">-->
    <link rel="stylesheet" type="text/css" href="../public/lib_css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="../public/lib_css/jquery.datetimepicker.css">
    <link rel="stylesheet" type="text/css" href="../public/css/index.css">
    {% endblock %}