| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- var webpack = require('webpack');
- var path = require('path');
- var config = require('./package.json');
- var HtmlWebpackPlugin = require('html-webpack-plugin');
- var ExtractTextPlugin = require('extract-text-webpack-plugin');
- var CopyWebpackPlugin = require('copy-webpack-plugin');
- var UglifyJsPlugin = require('uglifyjs-webpack-plugin');
- var autoprefixer = require('autoprefixer');
- var webpackConfig = module.exports = {};
- var isProduction = process.env.NODE_ENV === 'production';
- webpackConfig.entry = {
- app: './src/app.js',
- demo: './src/demo.js',
- nutui: './src/nutui.js'
- };
- webpackConfig.output = {
- path: path.resolve(__dirname, 'dist'),
- publicPath: "/",
- filename: "[name].js",
- chunkFilename: "[name].[hash].js",
- library: 'nutui',
- libraryTarget: 'umd',
- umdNamedDefine: true
- };
- webpackConfig.module = {
- rules: [{
- test: /\.css$/,
- use: ['style-loader', 'css-loader', 'postcss-loader']
- }, {
- test: /\.scss$/,
- use: ['style-loader', 'css-loader', 'sass-loader', 'postcss-loader']
- }, {
- test: /\.vue$/,
- loader: 'vue-loader',
- options: {
- loaders: {
- scss: 'vue-style-loader!css-loader!sass-loader'
- },
- postcss: [autoprefixer()]
- }
- }, {
- test: /\.js$/,
- loader: 'babel-loader',
- exclude: /node_modules/,
- }, {
- test: /\.svg$/,
- loader: 'svg-sprite-loader'
- }, {
- test: /\.(png|jpg|gif|webp)$/,
- loader: 'url-loader',
- options: {
- limit: 3000,
- name: 'img/[name].[ext]',
- }
- }, ]
- };
- webpackConfig.externals = {
- 'vue': {
- root: 'Vue',
- commonjs: 'vue',
- commonjs2: 'vue',
- amd: 'vue'
- }
- };
- webpackConfig.plugins = [
- new HtmlWebpackPlugin({
- filename: path.resolve(__dirname, './dist/index.html'),
- template: './src/index.html',
- hash:true,
- chunks: ['app']
- }),
- new HtmlWebpackPlugin({
- filename: path.resolve(__dirname, './dist/demo.html'),
- template: './src/demo.html',
- chunks: ['demo']
- }),
- /*new ExtractTextPlugin({
- filename: 'nutui.css'
- }),*/
- new webpack.BannerPlugin('NutUI v' + config.version + ' ' + new Date().toString()),
- new CopyWebpackPlugin([{
- from: path.join(__dirname, "./src/asset/"),
- to: path.join(__dirname, "./dist/asset")
- },
- {
- from: path.join(__dirname, "./src/default.html"),
- to: path.join(__dirname, "./dist/default.html")
- }
- ])
- ];
- if (isProduction) {
- webpackConfig.devtool = '#cheap-module-source-map';
- webpackConfig.plugins = (webpackConfig.plugins || []).concat([
- new webpack.DefinePlugin({
- 'process.env': {
- NODE_ENV: '"production"'
- },
- 'CONFIG': config
- }),
- new webpack.LoaderOptionsPlugin({
- minimize: false
- }),
- new UglifyJsPlugin({
- uglifyOptions: {
- ecma: 8,
- warnings: false
- }
- })
- ])
- } else {
- webpackConfig.devtool = '#cheap-module-eval-source-map';
- //webpackConfig.output.publicPath = '/';
- webpackConfig.plugins = (webpackConfig.plugins || []).concat([
- new webpack.DefinePlugin({
- 'CONFIG': config
- })
- ]);
- webpackConfig.devServer = {
- contentBase: path.resolve(__dirname, 'dist'),
- compress: true, //gzip压缩
- //host:'10.0.39.18',
- historyApiFallback: true
- };
- }
|