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编辑了我的答案以解释返回此错误的原因。我想现在唯一的解决办法是打开一个拉请求;)