Laravel 小技巧:在 Laravel mix 中设置解析别名
先决条件
问题
解决方案
参考文献
这虽然与 Laravel 无关,但与 Webpack 有关,不过,我觉得我应该在项目开始时就设置好这一点。
先决条件
发展
- Laravel 5.4
- webpack(Laravel mix)
问题
我过去常常在任何文件中使用相对路径来指定文件路径.js:
// resources/assets/vue/components/Deep/Path/To/Component.vue
import FooComponent from '../../FooComponent.vue'
这很难理解,如果我更改目录结构,就必须更改每个路径。
而且看起来很丑。
解决方案
在开头添加以下配置webpack.mix.js。
// webpack.mix.js
const { mix } = require('laravel-mix')
mix.webpackConfig({
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': __dirname + '/resources/assets/js'
},
},
})
// ...config follows
然后,我们可以这样导入:
// resources/assets/vue/components/Deep/Path/To/Component.vue
import FooComponent from '@/components/FooComponent'
我发现vue-cli它使用了这种配置。它将解析别名设置@为src默认值。
https://github.com/vuejs-templates/webpack/blob/f21376d/template/build/webpack.base.conf.js#L40
希望这个配置能成为 Laravel Mix 的默认配置。
我在考虑要不要提交一个 PR……
参考文献
- https://readouble.com/laravel/5.4/ja/mix.html
- https://github.com/JeffreyWay/laravel-mix/blob/master/setup/webpack.config.js#L209