webpack - Laravel mix.extract(['vue']) “忘记” app.js
问题描述
我创建了以下配置:
const mix = require ('laravel-mix');
const glob = require ('glob')
const path = require ('path')
const CleanWebpackPlugin = require ('clean-webpack-plugin')
/*
|--------------------------------------------------------------------------
| Mix config
|--------------------------------------------------------------------------
*/
mix.options ({
postCss: [require ('autoprefixer')]
});
/*
|--------------------------------------------------------------------------
| Webpack config
|--------------------------------------------------------------------------
*/
mix.webpackConfig ({
output: {
chunkFilename: 'chunks/[name].[chunkhash].js'
},
plugins: [
new CleanWebpackPlugin ({
cleanOnceBeforeBuildPatterns: ['chunks/**/*']
}),
],
module: {
rules: [{
test: /node_modules(?:\/|\\).+\.js$/,
loader: 'babel-loader',
include: [
path.join (__dirname, 'node_modules/vue-echarts'),
path.join (__dirname, 'node_modules/resize-detector'),
path.join (__dirname, 'node_modules/vue-masonry')
]
}]
},
resolve: {
alias: {
'@': path.join (__dirname, 'resources/assets/src'),
'node_modules': path.join (__dirname, 'node_modules')
}
},
})
/*
|--------------------------------------------------------------------------
| Vendor assets
|--------------------------------------------------------------------------
*/
function mixAssetsDir (query, cb) {
(glob.sync ('resources/assets/' + query) || []).forEach (f => {
f = f.replace (/[\\\/]+/g, '/');
cb (f, f.replace ('resources/assets', 'public'));
});
}
const sassOptions = {
precision: 5,
implementation: () => require ('node-sass')
};
// Core javascripts
mixAssetsDir ('vendor/js/**/*.js', (src, dest) => mix.scripts (src, dest));
// Fonts
mixAssetsDir ('vendor/fonts/*.css', (src, dest) => mix.copy (src, dest));
mixAssetsDir ('vendor/fonts/*/*', (src, dest) => mix.copy (src, dest));
/*
|--------------------------------------------------------------------------
| Entry point
|--------------------------------------------------------------------------
*/
mix.js ('resources/assets/src/app.js', 'public');
if (Mix.isUsing ('hmr')) {
mix.disableNotifications ();
} else {
mix.version ();
}
如果我现在添加:
mix.js ('resources/assets/src/app.js', 'public').extract(['vue']);
app.js
不是存储在中,而是public
作为块存储在chunks
. 这使得它无法使用
<script src="{{ mix('app.js') }}"></script>
或者
<script src="{{ mix('chunks/app.js') }}"></script>
没有找到app.js
,因为它是版本化的(请参阅mix-manifest.json
):
"/chunks//app.bcac72b900935193b194.js": "/chunks//app.bcac72b900935193b194.js?id=37f4d5877ebeaf16f640",
解决方案
推荐阅读
- html - 新 iOS 13 上的滚动问题(适用于 Safari 和 Chrome)
- python - 尝试使用 tensorflow.io.gfile.GFile 和 tensorflow.dataset.map,得到“预期的二进制或 unicode 字符串,得到 Tensor dtype=string
- r - 为什么 bookdown 只提供没有文字的章节标题?
- windows - Windows:如何知道输入设备是否为“立体声混音”?
- tensorflow - 为什么 tensorflow TFLiteConverter.from_session 需要相同的输入和输出大小
- ruby - If 语句和 Case 语句 - 不匹配
- java - 可以在调用时将 DateTime 类型的变量解析(到方法中,而不是从扫描仪中)到方法中吗?
- google-bigquery - 如何从字符串中获取前两个单词?
- node.js - 如何快速删除 node_modules 文件夹?
- ruby - 创建对象的多个实例时,将它们视为内存中的同一个对象