UNPKG

kara-module-downloader

Version:

kara module download

173 lines (170 loc) 4.62 kB
/* eslint-disable import/no-extraneous-dependencies */ const webpack = require('webpack') const MiniCssExtractPlugin = require('mini-css-extract-plugin') const CleanWebpackPlugin = require('clean-webpack-plugin') const path = require('path') const autoprefixer = require('autoprefixer') const UglifyJsPlugin = require('uglifyjs-webpack-plugin') function resolve(dir) { return path.join(__dirname, './', dir) } module.exports = { entry: { index: ['./src/download.js'], }, output: { path: resolve('lib'), filename: '[name].js', library: 'kara-module-file-view', libraryTarget: 'commonjs2', }, externals: { react: { root: 'React', commonjs2: 'react', commonjs: 'react', amd: 'react', }, 'react-dom': { root: 'ReactDOM', commonjs2: 'react-dom', commonjs: 'react-dom', amd: 'react-dom', }, }, resolve: { mainFiles: ['index.web', 'index'], modules: ['node_modules', path.join(__dirname, '../node_modules')], extensions: ['.web.js', '.js', '.json'], }, module: { rules: [ // js 加载解析 { test: /\.(js|jsx)$/, exclude: /node_modules/, loader: require.resolve('babel-loader'), options: { cacheDirectory: true, }, }, // css加载 { test: /\.css$/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { importLoaders: 1 }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', plugins: () => [ require('postcss-flexbugs-fixes'), autoprefixer({ browsers: [ '>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9', // React doesn't support IE8 anyway ], flexbox: 'no-2009', }), ], }, }, ], }, { test: /\.scss$/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { importLoaders: 1, modules: true, localIdentName: '[name]-[local]-[hash:base64:5]', // class name 模块化定制 }, }, { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', plugins: () => [ require('postcss-flexbugs-fixes'), autoprefixer({ browsers: [ '>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9', // React doesn't support IE8 anyway ], flexbox: 'no-2009', }), ], }, }, { loader: 'sass-loader', // compiles Sass to CSS }, ], }, { test: /\.(png|svg|jpe?g|gif|ico)(\?.*)?$/, loader: 'url-loader', options: { limit: 1000, name: 'img/[name].download.[ext]', }, }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'file-loader', options: { name: 'font/[name].download.[ext]', }, }, ], }, optimization: { minimizer: [ // we specify a custom UglifyJsPlugin here to get source maps in production new UglifyJsPlugin({ cache: true, parallel: true, uglifyOptions: { compress: false, ecma: 6, mangle: true, }, sourceMap: true, }), ], }, plugins: [ new CleanWebpackPlugin(['lib']), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'production'), }), // 生成CSS文件 new MiniCssExtractPlugin({ // Options similar to the same options in webpackOptions.output // both options are optional filename: '[name].css', }), new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), ], node: { dgram: 'empty', fs: 'empty', net: 'empty', tls: 'empty', }, }