webpack.config.custom.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. var webpack = require('webpack');
  2. var path = require('path');
  3. var config = require('./custom.json');
  4. var ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. var CopyWebpackPlugin = require('copy-webpack-plugin');
  6. var UglifyJsPlugin = require('uglifyjs-webpack-plugin');
  7. var autoprefixer = require('autoprefixer');
  8. var webpackConfig = module.exports = {};
  9. webpackConfig.entry = {
  10. nutui: './src/nutui-custom.js'
  11. };
  12. webpackConfig.output = {
  13. path: path.resolve(__dirname, 'dist'),
  14. publicPath: "/",
  15. filename: 'nutui.js',
  16. library: 'nutui',
  17. libraryTarget: 'umd',
  18. umdNamedDefine: true
  19. };
  20. webpackConfig.module = {
  21. rules: [{
  22. test: /\.css$/,
  23. use: ['style-loader', 'css-loader', 'postcss-loader']
  24. }, {
  25. test: /\.scss$/,
  26. use: ['style-loader', 'css-loader', 'sass-loader', 'postcss-loader']
  27. }, {
  28. test: /\.vue$/,
  29. loader: 'vue-loader',
  30. options: {
  31. postcss: [autoprefixer()]
  32. }
  33. }, {
  34. test: /\.svg$/,
  35. loader: 'svg-sprite-loader'
  36. }, {
  37. test: /\.js$/,
  38. loader: 'babel-loader',
  39. exclude: /node_modules/,
  40. }, {
  41. test: /\.(png|jpg|gif|webp)$/,
  42. loader: 'url-loader',
  43. options: {
  44. limit: 3000,
  45. name: 'img/[name].[ext]',
  46. }
  47. }, ]
  48. };
  49. webpackConfig.externals = {
  50. 'vue': {
  51. root: 'Vue',
  52. commonjs: 'vue',
  53. commonjs2: 'vue',
  54. amd: 'vue'
  55. }
  56. };
  57. webpackConfig.plugins = [
  58. new webpack.LoaderOptionsPlugin({
  59. minimize: false
  60. }),
  61. new UglifyJsPlugin({
  62. uglifyOptions: {
  63. ecma: 8,
  64. warnings: false
  65. }
  66. }),
  67. new webpack.BannerPlugin('NutUI v' + config.version + ' ' + new Date().toString()),
  68. new webpack.DefinePlugin({
  69. 'process.env': {
  70. NODE_ENV: '"production"'
  71. },
  72. 'CONFIG': config
  73. }),
  74. new webpack.LoaderOptionsPlugin({
  75. minimize: false
  76. })
  77. ];
  78. webpackConfig.devtool = '#cheap-module-source-map';