webpack 与 标签加载文件的问题

webpack.config.js

    module : {
        loaders : [
            {test : /\.js$/, loader : 'babel-loader', include : path.resolve(__dirname, 'src')},
            {test : /\.css$/, loader : ExtractTextPlugin.extract('css?minimize&-autoprefixer')},
            {test : /\.(tpl|html)$/, loader : 'html'},
            {test: /\.(png|jpg|gif)$/,loader: 'url?name=[name].[ext]?[hash]'}
        ],
    },
    
    plugins : [
        new htmlWebpackPlugin({
            filename : path.resolve(__dirname, '../resources/views/index.blade.php'),
            template : 'src/templates/index.html',
            hash : true,
            files : {
                css : ['main.css'],
            }

        }),
    ]

使用require('css/index.css') 这样的方法可以达到预期,但如果在html中使用标签<link href='xxx'/>的方法,没有加文件后增加版本号hash。
同样的问题,如果js文件用CDN话,没有自动加上版本号。而且自动生成的js文件main.bundle.js会出现在script标签前面。

<script src="main.bundle.js?fjidosahfsahj456ds4">
<script src="http://xxx.cdn.net/vue.js">

问题是
1.怎样设置使标签链接后自动加上版本号?
2.怎样使自动生成的文件main.bundle.js与cdn共存?

------更新------

图片描述

图片描述

阅读 3.4k
1 个回答
  1. 如果是CDN上的文件,你是怎么知道它的版本号,webpack也不可能读取CDN上的内容来取content的hash啊?所以,要想利用webpack加上版本号,必须要把CDN上的库纳入webpack的管理,比如说:用file-loader搬运文件的时候就可以获取文件的hash值,然后在上线的时候再把该文件覆盖掉CDN上的文件。

  2. 你是怎么做到让htmlWebpackPlugin自动生成的<script>会先于你模板上的<script>的?我记得要么是生成在<head>的末尾,要么是生成在<body>的末尾的呀。当时我为了respond.js<script>要怎么放才能后于所有的css(包括htmlWebpackPlugin自动生成的)而烦恼,后来是直接把respond.js<script>直接写到<body>了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进