Web Laravel Mix4 配置spa研究
前面
一直不太愿意碰构建这块,在别人项目基础上用laravel-mix已经够省心了
但还是决定要深入了解下…
laravel-mix 4
https://laravel-mix.com/docs/4.1/upgrade
Upgraded to webpack 4.
Upgraded to vue-loader 15.
Upgraded to Babel 7.
Babel config merging strategy:
还是提供.babelrc,不是7应该用babel.config.js了?
因为走的laravel,所以就laravel-mix了,vue全家桶的vue cli3也是干这个的…都是based on webpack
extract
extract()是把dependencies的里包打包为vendor.js, 应用为app.js ,vendor不常便,缓存起来,优化缓存策略
//设置manifest.json的输出目录,也就是dist的根目录
mix.setPublicPath('../../public/spa');
mix.config.webpackConfig.output = {
// chunkFilename: 'chunk/[name].[chunkhash].js',
chunkFilename: '[name].chunk.js',
};
mix.i18n()
//这里的第2个参数,js就是相对上面设置的publicPath
.js('src/app.js','js').version()
.sass('sass/post.scss','css').version()
//将原来的app.js分为manifest.js , vendor.js 和app.js,在blade里分别引用就好.
mix.extract();
生成的目录如下:
├── css
│ └── post.css
├── js
│ ├── app.chunk.js
│ ├── manifest.js
│ └── vendor.chunk.js
└── mix-manifest.json
之前有点蒙圈,好像不知道怎么用了,其实配合好mix函数,就好,不然为啥用larave-mix呢?
spa.blade.php:
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src="" ></script>
按上面的写法 mix函数:
参数1是告诉blade相对public目录,去找文件
参数2是告诉相对public到哪里找manifest.json,也就是`public/spa`.
但是,如果写的相对目录,它会自动根据setPublicPath来推断
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src="" ></script>
<script type="text/javascript" src="" ></script>
babel
知识点:
-
babel6->babel7
-
babelrc->babel.config.js
monorepo工程怎么区分两者的:
https://blog.csdn.net/weixin_34195546/article/details/88567067
-
stage0-stage1
-
preset
@vue/babel-preset-app:
它会把 useBuiltIns: 'usage' 传递给 @babel/preset-env,这样它会根据源代码中出现的语言特性自动检测需要的 polyfill。这确保了最终包里 polyfill 数量的最小化。然而,这也意味着如果其中一个依赖需要特殊的 polyfill,默认情况下 Babel 无法将其检测出来。
- plugin