npm init -y
npm install laravel-mix --save-dev
cp node_modules/laravel-mix/setup/webpack.mix.js ./
“scripts”: {
“dev”: “NODE_ENV=development webpack --progress --hide-modules”,
“watch”: “NODE_ENV=development webpack --watch --progress --hide-modules”,
“hot”: “NODE_ENV=development webpack-dev-server --inline --hot”,
“production”: “NODE_ENV=production webpack --progress --hide-modules”
},
webpack.mix.js
该文件是所有前端资源编译的入口,通常你需要编辑下述代码
默认会启用 JavaScript ES2017 + 模块绑定,就行 sass 编译一样
let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js').sass(
'resources/assets/sass/app.scss',
'public/css'
);
npm run dev
当引用相对路径的时候,会根据当前文件的路径来搜索,同样的, webpack 会首先搜索 resources/assets/img/example.jpg ,如果找不到,会继续搜索文件位置,包括 node_modules ,如果还找不到,就报错:
- 让 resources/assets/img/example.jpg 存在这个文件。
- 编译 css 的时候添加下面的选项,禁用 css 的 url 处理。
mix.sass('resources/assets/sass/app.scss', 'public/css')
.options({
processCssUrls: false
});
mix-manifest.json
文件存放位置调用mix.setPublicPath(‘dist/’)
mix-manifest.json 文件存储映射后的版本,这些版本是前端页面所需要用到
//webpack方式
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
});
// mix方式
mix.autoload({
jquery: ['$', 'window.jQuery', 'jQuery'], // more than one
moment: 'moment' // only one
});