Php Laravel mix版本是一个特定的文件
我正在尝试对特定文件进行版本设置Php Laravel mix版本是一个特定的文件,php,laravel,webpack,laravel-mix,Php,Laravel,Webpack,Laravel Mix,我正在尝试对特定文件进行版本设置 mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css') .babel([ 'resources/assets/js/libs/xxxx.js', 'resources/assets/js/libs/xxxx.js', 'resources/assets/js/libs/xxxx.j
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css')
.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'public/js/libs.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'public/js/xxxx.js')
.version([
'public/js/app.js'
]);
我正在尝试更新app.js版本,但出现错误:
错误:enoint:没有这样的文件或目录,请打开“public/js/app.js”
我也尝试过:
app.*.js
我认为用Laravel Mix这种方式链接方法有点凌乱,可读性较差。如果只想对文件app.js
进行版本设置,可以将其隔离
在一些测试之后,我注意到,public/
在输出路径的开头是可选的
试着这样做:
mix.sass('resources/assets/sass/app.scss', 'css/app.css');
mix.js('resources/assets/js/app.js', 'js/app.js');
mix.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'js/libs.js');
mix.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js');
mix.version(['public/js/app.js']);
mix.sass('resources/assets/sass/app.scss', 'public/css');
mix.js('resources/assets/js/app.js', 'public/js');
mix.version(['resources/assets/js/bootstrap.js']);
希望这有帮助
编辑:
TL;DR:version()
方法会对所有文件进行版本设置,不管发生什么
查看后,我了解到不可能只对mix manifest.json
文件中存在的某些文件(即您在webpack.mix.js
中提到的文件)进行版本设置
version()。可选的array as参数仅指示除了mix manifest.json
中提到的所有文件之外,是否还有更多文件要版本化
在您的例子中,mix.version(['public/js/app.js'])
line首先对所有文件进行版本设置,然后查找位于public/js/app.js
的文件。但它不存在,因为它已经过版本控制,public/js
中的文件名为[file name].[hash].js
。这就是您出现此错误的原因:
错误:enoint:没有这样的文件或目录,请打开“public/js/app.js”
例如,如果您的webpack.mix.js
如下所示:
mix.sass('resources/assets/sass/app.scss', 'css/app.css');
mix.js('resources/assets/js/app.js', 'js/app.js');
mix.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'js/libs.js');
mix.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js');
mix.version(['public/js/app.js']);
mix.sass('resources/assets/sass/app.scss', 'public/css');
mix.js('resources/assets/js/app.js', 'public/js');
mix.version(['resources/assets/js/bootstrap.js']);
然后将对文件public/css/app.css
、public/js/app.js
和resources/assets/js/bootstrap.js
进行版本控制。我认为用Laravel Mix这种方式链接方法有点凌乱,可读性较差。如果只想对文件app.js
进行版本设置,可以将其隔离
在一些测试之后,我注意到,public/
在输出路径的开头是可选的
试着这样做:
mix.sass('resources/assets/sass/app.scss', 'css/app.css');
mix.js('resources/assets/js/app.js', 'js/app.js');
mix.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'js/libs.js');
mix.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js');
mix.version(['public/js/app.js']);
mix.sass('resources/assets/sass/app.scss', 'public/css');
mix.js('resources/assets/js/app.js', 'public/js');
mix.version(['resources/assets/js/bootstrap.js']);
希望这有帮助
编辑:
TL;DR:version()
方法会对所有文件进行版本设置,不管发生什么
查看后,我了解到不可能只对mix manifest.json
文件中存在的某些文件(即您在webpack.mix.js
中提到的文件)进行版本设置
version()。可选的array as参数仅指示除了mix manifest.json
中提到的所有文件之外,是否还有更多文件要版本化
在您的例子中,mix.version(['public/js/app.js'])
line首先对所有文件进行版本设置,然后查找位于public/js/app.js
的文件。但它不存在,因为它已经过版本控制,public/js
中的文件名为[file name].[hash].js
。这就是您出现此错误的原因:
错误:enoint:没有这样的文件或目录,请打开“public/js/app.js”
例如,如果您的webpack.mix.js
如下所示:
mix.sass('resources/assets/sass/app.scss', 'css/app.css');
mix.js('resources/assets/js/app.js', 'js/app.js');
mix.babel([
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js',
'resources/assets/js/libs/xxxx.js'
], 'js/libs.js');
mix.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js')
.scripts('resources/assets/js/pages/xxxx.js', 'js/xxxx.js');
mix.version(['public/js/app.js']);
mix.sass('resources/assets/sass/app.scss', 'public/css');
mix.js('resources/assets/js/app.js', 'public/js');
mix.version(['resources/assets/js/bootstrap.js']);
然后将对文件public/css/app.css
、public/js/app.js
和resources/assets/js/bootstrap.js
进行版本控制
在app.js上就像你一样,它会对所有文件进行版本设置,我不知道为什么:/I我开始认为我必须运行我的webpack mix文件两次,运行版本的次数见我编辑的答案。这应该行得通。然后您只需运行npm-run-dev
,npm-run-watch
或npm-run-production
。版本控制将自动进行。我尝试了编辑我仍然得到错误:enoint:没有这样的文件或目录,打开'public/js/app.js'我使用的是Laravel 5.4 wen mix v0.8.9I编辑了我的答案以解释返回此错误的原因。我想现在唯一的解决办法是打开一个拉请求;)即使我不连锁我的方法,只放version()
在app.js上就像你一样,它会对所有文件进行版本设置,我不知道为什么:/I我开始认为我必须运行我的webpack mix文件两次,运行版本的次数见我编辑的答案。这应该行得通。然后您只需运行npm-run-dev
,npm-run-watch
或npm-run-production
。版本控制将自动进行。我尝试了编辑我仍然得到错误:enoint:没有这样的文件或目录,打开'public/js/app.js'我使用的是Laravel 5.4 wen mix v0.8.9I编辑了我的答案以解释返回此错误的原因。我想现在唯一的解决办法是打开一个拉请求;)