vue.config.jsを特に編集していなければbuild時にハッシュ付きのファイルが生成されると思いますが、様々な理由によりハッシュ付きのファイルが生成されるのは不味い時、人はクエリストリングでキャッシュバスティングを行いたくなるものでしょう。
vue.config.js
module.exports = {
filenameHashing: false,
chainWebpack: config => {
config.output.filename('js/[name].js?[contenthash:8]');
config.output.chunkFilename('js/[name].js?[contenthash:8]');
config.plugin('extract-css').tap(args => {
(args[0].filename = 'css/[name].css?[contenthash:8]'),
(args[0].chunkFilename = 'css/[name].css?[contenthash:8]');
args[0].allChunks = true;
return args;
});
}
};
filenameHashing: false
でハッシュ付きファイルの生成を無効にします。
chainWebpackでwebpackの設定を上書きします。
この設定でいざbuildすると、Vue CLIの場合head内にpreloadが追加されますが
同時に .map
ファイルもpreloadに追加されてしまいます。
vue.config.js
config.plugin('preload').tap(args => {
args[0].fileBlacklist = [/\.map\?(.+?)$/, /hot-update\.js$/]
return args
});
同様に上記の設定を追加すれば良いと思っていたのですがエラーで解決出来なかったため productionSourceMap: false
を追加しました。
build時にsourcemapファイルは特に必要ないしpreloadから.map
の文字列は消え去ったのでこれで良しとします。