Skip to content

vue-cli-service build --target lib 场景不支持文件名hash配置 #7476

Open
@yaojiafeng

Description

@yaojiafeng

构建 umd 的命令:vue-cli-service build --target lib --inline-vue --name subapp ./src/main.js ,发现生成的 umd.js文件不带hash,尝试在vue.config.js 中配置hash:

 configureWebpack: {
    output: {
      // 在文件名中添加哈希
      filename: '[name].js',
      chunkFilename: '[name].[hash].js'
    }
  }

但是上面打包后文件名并没带hash。
深入查看打包源码,发现:node_modules\@vue\cli-service\lib\commands\build\resolveLibConfig.js文件中:

rawConfig.output = Object.assign({
    library: libName,
    libraryExport: isVueEntry ? 'default' : undefined,
    libraryTarget: format,
    // preserve UDM header from webpack 3 until webpack provides either
    // libraryTarget: 'esm' or target: 'universal'
    // https://github.com/webpack/webpack/issues/6522
    // https://github.com/webpack/webpack/issues/6525
    globalObject: `(typeof self !== 'undefined' ? self : this)`
  }, rawConfig.output, {
    filename: `${entryName}.js`,
    chunkFilename: `${entryName}.[name].js`,
    // use dynamic publicPath so this can be deployed anywhere
    // the actual path will be determined at runtime by checking
    // document.currentScript.src.
    publicPath: ''
  })

外部配置的 chunkFilename 已经被后面的写死覆盖了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions