【发布时间】:2019-01-26 08:53:16
【问题描述】:
我对 Laravel-Mix 有一个奇怪的问题,每当我尝试混合 sass 或 js 时,它们最终会进入一个完全错误且不同的目录,例如:
这是我的 webpack.mix.js 文件:
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
当我运行 npm run dev 时,这就是我在这些路径中得到这些文件的结果:
DONE Compiled successfully in 8073ms 08:32:45
Asset Size Chunks Chunk Names
/vagrant/pirlanta/public/vagrant/pirlanta/public/js/app.js 1.38 MB 0 [emitted] [big] /vagrant/pirlanta/public/vagrant/pirlanta/public/js/app
../../../vagrant/pirlanta//css/app.css 198 kB 0, 0 [emitted] /vagrant/pirlanta/public/vagrant/pirlanta/public/js/app, /vagrant/pirlanta/public/vagrant/pirlanta/public/js/app
值得一提,每当编译css时,我不能让它进入public文件夹,由于某种原因,它每次都从路径中省略“public”一词,您可以在上面的输出中检查'../vagrant/pirlanta//css/app.css',这些“//”之间应该有“public”,我知道为什么它被省略了......
实际上还有一件事,这个 Laravel 应用程序在 VM 中运行,所以我必须进行一些更改,因为 node_modules 目录是符号链接的,在'/home/vagrant/pirlanta/node_modules' 和 '/vagrant/pirlanta/node_modules/' 之间。
因为我有一台Windows主机我无法正常安装node_modules,我必须对其进行符号链接,无论如何这会导致一些意外行为,Mix试图从@读取webpack.mix文件987654329@,而项目的根目录是'/vagrant/pirlanta/',这是实际 webpack.mix 文件所在的位置,所以我必须先做一些更改:
在'node_modules/laravel-mix/src/Paths.js' 内部,我将mix() 函数更改为这样:
mix() {
return this.root(
argv.env && argv.env.mixfile ? argv.env.mixfile : '/vagrant/pirlanta/webpack.mix'
);
让它反映正确的 webpack.mix 文件。
我真的不知道为什么要将文件混合输出到不同的路径,我几乎可以肯定这是由上面提到的Paths.js 文件中的构造函数引起的,但我无法确认,我真的不知道'不知道如何解决这个问题,我无法在一个地方编译这两个文件。
【问题讨论】:
标签: node.js laravel npm webpack