const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
entry: {
a: './src/index.js',
b: './src/a.js'//入口文件
},
optimization:{ //拆分模块,公共模块提取
splitChunks:{
chunks:"all"
}
},
output: {
path: path.resolve(__dirname, 'dist'),//通过HtmlWebpackPlugin插件生成的html文件存放在这个目录下面
filename: '[name].js',//主入口的文件名
chunkFilename: '[id].bundle.js'//非主入口的文件名
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
'file-loader?name=img/[name].[hash:6].[ext]'
]
}
]
},
plugins: [ //生产index.html插件
new htmlWebpackPlugin({
filename: 'index.html',
template: './src/index.html',
inject: 'true',
// chunks:['manifest','a']
})
]
};
Node.js
Path
var path = require("path");
path.join([path1][, path2][, ...])//用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是"\"。
path.resolve(from, to)//用于将相对路径转为绝对路径。
全局对象
global //最根本的作用是作为全局变量的宿主。
__filename //表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。 如果在模块中,返回的值是模块文件的路径。
__dirname //表示当前执行脚本所在的目录。
"build": "rm -rf dist && atool-build && mkdir -p dist/${npm_package_name}/${npm_package_version} && mv dist/*.* dist/${npm_package_name}/${npm_package_version}/"
常用插件
html-webpack-plugin
自动生成html插件
autoprefixer
自动检测兼容性给各个浏览器加个css内核前缀的插件
copy-webpack-plugin
拷贝资源插件
cnpm install --save-dev copy-webpack-plugin
new CopyWebpackPlugin([{
from: __dirname + '/src/public'
}]),
webpack.ProvidePlugin [webpack内置插件 ]
全局挂载插件
uglifyjs-webpack-plugin
压缩js
DefinePlugin
new webpack.DefinePlugin(definitions)
DefinePlugin可以在编译时期创建全局变量。
该特性适用于开发版本同线上版本在某些常量上有区别的场景。
比如,可能会通过全局变量定义是否需要打印日志,在开发版中打印日志,
而在先上版本不打印日志。
// webpack.config.js
plugins:[
new webpack.DefinePlugin({
// 全局debug标识
__DEV__: debug,
}),
]
new webpack.DefinePlugin({
PRODUCTION: JSON.stringify(true),
VERSION: JSON.stringify("5fa3b9"),
BROWSER_SUPPORTS_HTML5: true,
TWO: "1+1",
"typeof window": JSON.stringify("object")
})
console.log("Running App version " + VERSION);
if(!BROWSER_SUPPORTS_HTML5) require("html5shiv");
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。