Webpacker 资产摘要在部署与部署之间不一致
Webpacker asset digest not consistent from deploy to deploy
我正在使用 Rails 和 Webpacker。当我部署时,我的 CSS 资产摘要(public/packs/css
中文件的摘要)在部署与部署之间是不一样的。
不仅不同部署的摘要不同,而且有时(尽管不总是)不同机器的摘要也不同。
我该如何解决这个问题?我想我也许可以通过准确了解摘要的生成方式来获得一些见解,但到目前为止我还没有找到任何好的信息。
找到解决方案,感谢 these two GitHub 个问题。
第 1 步:运行yarn add webpack-merge
。
第 2 步:更改 config/webpack/environment.js
以匹配以下内容:
const { environment } = require('@rails/webpacker')
const { merge } = require('webpack-merge');
const sassLoader = environment.loaders.get('sass')
const cssLoader = environment.loaders.get('css')
sassLoader.use.map(loader => {
if (loader.loader === 'css-loader') {
loader.options = merge(loader.options, { sourceMap: false })
}
});
cssLoader.use.map(loader => {
if (loader.loader === 'css-loader') {
loader.options = merge(loader.options, { sourceMap: false })
}
});
module.exports = environment
之后,CSS 摘要应该是确定性的。
我正在使用 Rails 和 Webpacker。当我部署时,我的 CSS 资产摘要(public/packs/css
中文件的摘要)在部署与部署之间是不一样的。
不仅不同部署的摘要不同,而且有时(尽管不总是)不同机器的摘要也不同。
我该如何解决这个问题?我想我也许可以通过准确了解摘要的生成方式来获得一些见解,但到目前为止我还没有找到任何好的信息。
找到解决方案,感谢 these two GitHub 个问题。
第 1 步:运行yarn add webpack-merge
。
第 2 步:更改 config/webpack/environment.js
以匹配以下内容:
const { environment } = require('@rails/webpacker')
const { merge } = require('webpack-merge');
const sassLoader = environment.loaders.get('sass')
const cssLoader = environment.loaders.get('css')
sassLoader.use.map(loader => {
if (loader.loader === 'css-loader') {
loader.options = merge(loader.options, { sourceMap: false })
}
});
cssLoader.use.map(loader => {
if (loader.loader === 'css-loader') {
loader.options = merge(loader.options, { sourceMap: false })
}
});
module.exports = environment
之后,CSS 摘要应该是确定性的。