webpack的配置
使用webpack工具需要配置一个根目录下的配置文件,文件名默认为webpack.condfig.js,配置文件导出一个模块对象,包含了webpack工具的相关配置参数,这个模块对象将会以参数形式被引用。
参数 : entry
该参数对象指明了入口文件的配置:
//页面入口文件配置 entry: { demo : [baseUrl + "demo.js"], },
参数 : output
该参数对象指明了文件被工具经过打包等操作后的输出配置,包括输出的文件的存放位置和文件名称等:
//文件输出配置 output: { path: 'src/js', filename: '[name].js', },
参数 : plugins
该参数对象指明了工具将应用上哪些插件,每个插件都被封装为一个类,引用时需要new生产,例如:
-
webpack/lib/optimize/CommonsChunkPlugin:该插件用于封装文件间公共复用的部分,使代码更合理,简洁。
-
webpack.ProvidePlugin: 该插件用于为了避免重复在每个模块里重复require我们需要的库,集中设置这些引用的库并直接使用在每个模块中。
//插件项 plugins: [ new CommonsChunkPlugin("common.js"), new webpack.ProvidePlugin({ $ : "jquery", }), ],
参数 : module
该参数对象指明了相关加载器配置,加载器非常有用,它保证了工具对现有的前端资源的扩展性,它可以加载并解析各种前端资源,相应的加载器需要npm install安装。
module: { //加载器配置 loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.(js|jsx)$/, loader: 'jsx-loader?harmony' }, { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=25000'}, { test: /\.(hbs|html)$/, loader: "handlebars"}, ] },
参数 : resolve
该参数指明了其他基本配置,
resolve: { //查找module的话从这里开始查找 root: 'E:/github/flux-example/src', //绝对路径 //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名 extensions: ['', '.js', '.json', '.scss'], //模块别名定义,方便后续直接引用别名,无须多写长长的地址 alias: { AppStore : 'js/stores/AppStores.js',//后续直接 require('AppStore') 即可, ActionType : 'js/actions/ActionType.js', AppAction : 'js/actions/AppAction.js' } }
全部代码:
var webpack = require('webpack'); var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); var baseUrl = "./src/dev/pactions/"; module.exports = { //页面入口文件配置 entry: { demo : [baseUrl + "demo.js"], }, //文件输出配置 output: { path: 'src/js', filename: '[name].js', }, //插件项 plugins: [ new CommonsChunkPlugin("common.js"), new webpack.ProvidePlugin({ $ : "jquery", }), ], module: { //加载器配置 loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.js$/, loader: 'jsx-loader?harmony' }, { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=4096'}, {test: require.resolve('jquery'), loader: 'expose-loader?$'}, ] }, //其它解决方案配置 resolve: { root:'G:/baseNode/baseNd/baseNd/views', //绝对路径 extensions: ['', '.js', '.json', '.scss'], alias: { AppStore : 'js/stores/AppStores.js', ActionType : 'js/actions/ActionType.js', AppAction : 'js/actions/AppAction.js' } } };