webpack.config.js 配置


var ExtractTextPlugin = require("extract-text-webpack-plugin");
var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin");
var AssetsPlugin = require('assets-webpack-plugin');
var path = require("path");
var umdREquirePlugin = require("umd-require-webpack-plugin");
var MoveToParentMergingPlugin = require('move-to-parent-merging-webpack-plugin');
var hotModuleReplacementPlugin = require("webpack/lib/HotModuleReplacementPlugin");
var webpack = require("webpack"); var isDevServer = process.argv[1].indexOf('webpack-dev-server') !== -1; var devServer = {
historyApiFallback: true,
hot: true,
inline: true,
progress: true
}; var entry = require("./entry-2");
var modulesEntry = require("./modules/entry");
for (var key in modulesEntry) {
entry[key] = modulesEntry[key];
} var needCsshint = process.argv.indexOf('--csshint') !== -1;
var config = {
// The standard entry point and output config
entry: entry,
output: {
path: path.join(__dirname, "assets2"), //path.join(__dirname, "assets", "[hash]"),
//publicPath: "//s3-us-west-1.amazonaws.com/chime-static-cloud/site/assets/",
publicPath: "/static/new-template/",
filename: "[name].js",
chunkFilename: "bundle-[id].js"
},
/*
entry: "./entry.js",
output: {
path: __dirname,
filename: "bundle.js"
},
*/
module: {
loaders: [
// Extract css files
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", `css-loader${needCsshint ? '!csslint-loader' : ''}!autoprefixer-loader`)
},
// Optionally extract less files
// or any other compile-to-css language
{
test: /\.less$/,
loader: ExtractTextPlugin.extract("style-loader", `css-loader${needCsshint ? '!csslint-loader' : ''}!autoprefixer-loader!less-loader`)
}, {
test: /\.(sass|scss)/,
loader: ExtractTextPlugin.extract("style-loader", `css-loader${needCsshint ? '!csslint-loader' : ''}!autoprefixer-loader!sass-loader?outputStyle=expanded`)
},
// You could also use other loaders the same way. I. e. the autoprefixer-loader
{
test: /\.woff2$/,
loader: 'url-loader?limit=1000000&name=build/[name].[ext]'
}, {
test: /\.(png|jpg|svg|gif)$/i,
loaders :[
'url-loader?name=build/[name].[ext]',
'image-webpack'
]
}, {
test: /\.tpl\.html$/,
loader: 'html-template-loader'
}, {
test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules|lib/,
query: {
presets: ['es2015', 'react']
}
}
]
}, // Use the plugin to specify the resulting filename (and add needed behavior to the compiler)
plugins: [
new ExtractTextPlugin("[name].css"),
new CommonsChunkPlugin({
name: "search-app.chunk",
chunks: isDevServer ? [] : ["search-app-init", "template-home", "listing-detail", "search-map"]
}),
new CommonsChunkPlugin({
name: "common-app.chunk",
//chunks: isDevServer ? [] : entryArray chunks: isDevServer ? [] : ["app-init","listing-detail","sell","blog","sell-report","neigh","nbhd-detail","blog-detail","search-map","profile","template-home","contact","template-evaluation","evaluation-step1","evaluation-step1-new","evaluation-step2","evaluation-step2-new","evaluation-step3","template-about","template-listing-feature","template-listing-sold", "search-app.chunk"]
}),
//new CommonsChunkPlugin("search-app.chunk.js", ["search-app", "home", "listing-detail"]),
new AssetsPlugin({filename: './version-control/source-map-test-2.json', prettyPrint: true}), new MoveToParentMergingPlugin(),
new umdREquirePlugin(),
new hotModuleReplacementPlugin(),
//new webpack.optimize.UglifyJsPlugin()
], resolve: {
modulesDirectories: ['.', 'node_modules']
}, resolveLoader: {
modulesDirectories: ['.', 'node_modules']
},
externals:{
"jquery":"jQuery",
"react" : "React",
"react-dom" :"ReactDOM"
}, devServer: isDevServer ? devServer : "",
}; //运行`node js-exclude.js js,new-template/js "js,jsx"`会生成最新的.jsexclude文件
if(process.argv.indexOf('--jshint') !== -1){
var jshint = JSON.parse(require('fs').readFileSync('./.jshintrc').toString().replace(/\/\/[^\r\n]+/g, ''));
var jsExcludes = require('fs').readFileSync('./.jsexclude').toString().split(/\r\n|\r|\n/).map(function(item){
return path.normalize(__dirname + '/' + item);
});
config.module.preLoaders = [{
test: /.js$/,
exclude: function(file){
return jsExcludes.indexOf(file) !== -1 || /[\/\\]node_modules[\/\\]/.test(file) || !/[\/\\]site[\/\\]/.test(file)
},
loader: "jshint-loader"
}];
config.jshint = jshint;
}
//运行`node js-exclude.js css,sass,jsp/custom-style,new-template/sass "css,scss,less"`会生成最新的.cssexclude文件
if(needCsshint){
var cssExcludes = require('fs').readFileSync('./.cssexclude').toString().split(/\r\n|\r|\n/).map(function(item){
return path.normalize(__dirname + '/' + item);
}); config.csslint = {
rules: {
// 'box-model': 1,
'display-property-grouping': 1,
// 'duplicate-properties': 1,
'empty-rules': 1,
'known-properties': 1,
'ids': 1,
'multi-rules-newline': 1,
'rule-name': 1
},
exclude: function(file){
return cssExcludes.indexOf(file) !== -1 || /[\/\\]node_modules[\/\\]/.test(file) || !/[\/\\]site[\/\\]/.test(file)
},
};
} module.exports = config;

webpack-dev-server 配置

var WebpackDevServer = require("webpack-dev-server");
var webpack = require("webpack"); var compiler = webpack({
// configuration
});
var server = new WebpackDevServer(compiler, {
// webpack-dev-server options contentBase: "/Users/yincheng/code/homethy-static/site/",
// or: contentBase: "http://localhost/", hot: true,
// Enable special support for Hot Module Replacement
// Page is no longer updated, but a "webpackHotUpdate" message is send to the content
// Use "webpack/hot/dev-server" as additional module in your entry point
// Note: this does _not_ add the `HotModuleReplacementPlugin` like the CLI option does. / Set this as true if you want to access dev server from arbitrary url.
// This is handy if you are using a html5 router.
historyApiFallback: false, // Set this if you want to enable gzip compression for assets
compress: true, // Set this if you want webpack-dev-server to delegate a single path to an arbitrary server.
// Use "*" to proxy all paths to the specified server.
// This is useful if you want to get rid of 'http://localhost:8080/' in script[src],
// and has many other use cases (see https://github.com/webpack/webpack-dev-server/pull/127 ).
/*
proxy: {
"*": "http://localhost:9090"
},
*/ // pass [static options](http://expressjs.com/en/4x/api.html#express.static) to inner express server
staticOptions: {
}, // webpack-dev-middleware options
quiet: false,
noInfo: false,
lazy: true,
filename: "bundle.js",
watchOptions: {
aggregateTimeout: 300,
poll: 1000
},
publicPath: "/site/",
headers: { "X-Custom-Header": "yes" },
stats: { colors: true }
});
server.listen(8080, "localhost", function() {});

webpack-dev-server 配置的更多相关文章

  1. webpack dev server 配置 启动项目报错Error: listen EADDRINUSE

    Error: listen EADDRINUSE 0.0.0.0:5601 它的意思是,端口5601被其他进程占用. 切换端口即可解决问题

  2. 笔记:配置 webpack dev server

    笔记:配置 webpack dev server 安装 webpack-dev-server 组件 配置 webpack.config.js 配置 增加 html-webpack-plugin 组件 ...

  3. 配置Webpack Dev Server 实战操作方法步骤

    本文摘要:配置 Webpack Dev Server 可以解决本地开发前端应用时,手动执行 webpack 命令或 yarn build 命令,再去浏览器中访问 dist/index.html 的麻烦 ...

  4. [Webpack] Access Webpack Dev Server from Mobile Safari on an iPhone

    Testing your sites on mobile devices is a critical part of the development process. Webpack dev serv ...

  5. webpack dev server 和 sublime text 配合时需要注意的地方

    参考:https://webpack.js.org/guides/development/ Adjusting Your Text Editor Some text editors have a &q ...

  6. vue2+webpack 开发环境配置

    前提条件: 1.安装node.js https://nodejs.org/en/ 下载安装合适的平台 2.安装npm 第一步:初始化项目 新建文件夹 E:\app 推荐vue项目目录结构: confi ...

  7. 解决新版本webpack vue-cli生成文件没有dev.server.js问题

    新版本webpack生成的dev.server.js 在webpack.dev.conf.js中 webpack.dev.conf.js const axios = require('axios') ...

  8. VUE开发请求本地数据的配置,旧版本dev-server.js,新版本webpack.dev.conf.js

    VUE开发请求本地数据的配置,早期的vue-lic下面有dev-server.js和dev-client.js两文件,请求本地数据在dev-server.js里配置,最新的vue-webpack-te ...

  9. vue模拟后台数据,请求本地数据的配置(旧版本dev-server.js,新版本webpack.dev.conf.js)

    最近学习一个vue-cli的项目,需要与后台进行数据交互,这里使用本地json数据来模仿后台数据交互流程.然而发现build文件夹下没有dev-server.js文件了,因为新版本的vue-webpa ...

  10. webpack 4 & dev server

    webpack 4 & dev server proxy https://webpack.js.org/configuration/dev-server/#devserverproxy htt ...

随机推荐

  1. 海量日志实时收集系统架构设计与go语言实现

    日志收集系统应该说是到达一定规模的公司的标配了,一个能满足业务需求.运维成本低.稳定的日志收集系统对于运维的同学和日志使用方的同学都是非常nice的.然而这时理想中的日志收集系统,现实往往不是这样的. ...

  2. cmd命令窗口连接mysql的命令大全

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登 ...

  3. Jenkins CLI 命令详解

    笔者在前文<通过 CLI 管理 Jenkins Server>中介绍了如何通过 SSH 或客户端命令行的方式管理 Jenkins Server,限于篇幅,前文主要的目的是介绍连接 Jenk ...

  4. 3分钟看完Java 8——史上最强Java 8新特性总结之第一篇 函数式编程基础

    目录 · 行为参数化 · Lambda表达式 · 概况 · 函数式接口 · 类型推断 · 使用外层变量 · 方法引用 · 复合Lambda表达式 行为参数化 1. 理解函数式编程要先理解行为参数化. ...

  5. CSS Font文字样式

    font-style: /* 文字样式 italic(倾斜) | normal */ font-weight: /* 文字是否加粗 bold | normal(正常) */ font-size: /* ...

  6. Maven教程3(依赖管理)

    Maven教程2(Eclipse配置及maven项目) Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象.这些对 象通过一个名为项目对象模型(Project Object Mo ...

  7. ubuntu server 14.04 LTS下搭建LAMP环境之最详细笔记之一U盘安装双系统

    前言: 一直在WIN上使用PHP,不喜欢用WAMP,每次都是手动在windows配置环境,偶尔有一次装了小红帽玩了两天,感觉不是很习惯就换了回来,过了没几天见讨论LAMP环境,于是安装了ubuntu的 ...

  8. Extjs4.2+webAPI+EF实现分页以及webapi的数据传值

    由于不明白分页的总数是怎么计算,不知道他的分页方式所以花费了好多功夫,现在弄出来了与大家分享下 1.首先是EF的简历,想必大家都清楚:添加-〉新建项-〉数据-〉Ado.net实体数据模型 2.就是后台 ...

  9. Java学习笔记之——常用快捷键(eclipse)

    * Ctrl+C 复制 * Ctrl+V 粘贴 * Ctrl+A 全选 * Ctrl+S 保存 * Ctrl+Z 撤销 * Ctrl+Y 还原 * Ctrl+X 剪切 * Ctrl+F   查找 * ...

  10. 【协议】5、gossip 协议

    Gossip是一种去中心化.容错并保证最终一致性的协议. Background:分布式环境 Gossip是为了解决分布式遇到的问题而设计的.由于服务和数据分布在不同的机器上,节点之间的每次交互都伴随着 ...