<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        webpack 2的react開發配置實例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:33:45
        文檔

        webpack 2的react開發配置實例代碼

        webpack 2的react開發配置實例代碼:基于webpack 2.3的標準語法,包含了less變量替換、React組件熱加載、第三庫單獨輸出、區分生產與開發環境等常用配置。 'use strict' module.exports = function( env ) { // 生成環境下webpack使用-p參數開啟代碼壓縮 // webpack[-d
        推薦度:
        導讀webpack 2的react開發配置實例代碼:基于webpack 2.3的標準語法,包含了less變量替換、React組件熱加載、第三庫單獨輸出、區分生產與開發環境等常用配置。 'use strict' module.exports = function( env ) { // 生成環境下webpack使用-p參數開啟代碼壓縮 // webpack[-d

        基于webpack 2.3的標準語法,包含了less變量替換、React組件熱加載、第三庫單獨輸出、區分生產與開發環境等常用配置。

        'use strict'
        
        module.exports = function( env ) {
         // 生成環境下webpack使用-p參數開啟代碼壓縮
         // webpack[-dev-server]使用--env dev參數指定編譯環境
         var isDev = env == 'dev';
        
         var path = require( 'path' );
         var webpack = require( 'webpack' );
         var CleanWebpackPlugin = require( 'clean-webpack-plugin' );
         var CopyWebpackPlugin = require( 'copy-webpack-plugin' );
         var HtmlWebpackPlugin = require( 'html-webpack-plugin' );
         var WebkitPrefixer = require( 'autoprefixer' );
         var WebpackMd5Hash = require( 'webpack-md5-hash' );
         var BundleAnalyzerPlugin = require( 'webpack-bundle-analyzer' ).BundleAnalyzerPlugin;
        
         var sourcedir = path.resolve( __dirname, 'src' );// 源碼和資源文件的放置位置
         var outputdir = path.resolve( __dirname, 'build' );// 編譯結果的放置位置
         var webContextRoot = '/myreact/';// 應用的實際訪問路徑,默認是'/'
         // antd的圖標字體文件的實際訪問路徑,利用less-load的變量替換功能
         var antd_fonticon = webContextRoot + 'assets/antd_fonticon/iconfont';
        
         var hasValue = function( item ) { return item != null; };
         return {
         //context: path.resolve( __dirname ),
         devtool: 'source-map',
         devServer: {
         host: '0.0.0.0',
         port: 8082,
         historyApiFallback: true
         },
         resolve: {
         // 讓less-loader等插件能找到以~相對定位的資源
         modules: [sourcedir, 'node_modules']
         },
         entry: {
         main: [
         // 編譯新版本js的新api(如Promise),主要是讓IE11能夠執行編譯后的代碼
         'babel-polyfill',
         //使用react-hot-loader@3.0.0-beta.6,
         // 搭配webpack-dev-server --hot命令實現react組件的hot reload
         isDev ? 'react-hot-loader/patch' : null,
         path.resolve( sourcedir, 'main.jsx' )].filter( hasValue ),
         // 第三方庫匯總
        輸出 vendor: ['bootstrap/dist/css/bootstrap.min.css', 'react', 'react-dom', 'react-router', 'redux', 'react-redux', 'react-router-redux', 'moment', 'lodash', 'immutable', 'whatwg-fetch', // 只含antd的js部分 'antd', // 各控件還需引入各自的樣式文件 'antd/lib/style/index.less'] }, output: { path: outputdir, filename: isDev ? 'js/[name].js' : 'js/[name]_[chunkhash:8].js', // 使用require.ensure造成的延遲加載的代碼文件 chunkFilename: isDev ? 'js/chunk_[id]_[name].js' : 'js/chunk_[name]_[chunkhash:8].js', publicPath: webContextRoot }, module: { rules: [{ test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, use: [{ // 編譯新版本js語法為低版本js語法 loader: 'babel-loader', options: { presets: [ // 編譯es2015版本的js ['babel-preset-es2015', { modules: false }], 'babel-preset-stage-2', // 編譯jsx 'babel-preset-react'], plugins: [// 支持熱加載react組件 isDev ? 'react-hot-loader/babel' : null, // 減少重復的編譯后的輔助方法 'babel-plugin-transform-runtime', // 按需加載組件的代碼和樣式 ['babel-plugin-import', { libraryName: 'antd', style: true }]].filter( hasValue ) } }] }, { test: /\.css$/, use: ['style-loader', { loader: 'css-loader', options: { // 第三方組件未以module方式引入css,所以不能在全局開啟css module modules: false } }, { loader: 'postcss-loader', options: { plugins: [WebkitPrefixer] } }] }, { test: /\.less$/, use: ['style-loader', { loader: 'css-loader', options: { modules: false } }, { loader: 'postcss-loader', options: { plugins: [WebkitPrefixer] } }, { loader: 'less-loader', options: { modules: false, modifyVars: { // 替換antd用到的字體文件路徑 "icon-url": JSON.stringify( antd_fonticon ) } } }] }, { test: /\.(jpg|png|gif)$/, use: { loader: 'url-loader', options: { // 編碼為dataUrl的最大尺寸 limit: 10000, // 輸出路徑,相對于publicPath outputPath: 'assets/', name: isDev ? '[name].[ext]' : '[name]_[hash:8].[ext]' } } }, { test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, use: { loader: 'url-loader', options: { limit: 10000, mimetype: 'application/font-woff', outputPath: 'assets/', name: isDev ? '[name].[ext]' : '[name]_[hash:8].[ext]' } } }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, use: { loader: 'url-loader', options: { limit: 10000, mimetype: 'application/octet-stream', outputPath: 'assets/', name: isDev ? '[name].[ext]' : '[name]_[hash:8].[ext]' } } }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, use: { loader: 'url-loader', options: { limit: 10000, mimetype: 'application/vnd.ms-fontobject', outputPath: 'assets/', name: isDev ? '[name].[ext]' : '[name]_[hash:8].[ext]' } } }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, use: { loader: 'url-loader', options: { limit: 10000, mimetype: 'application/svg+xml', outputPath: 'assets/', name: isDev ? '[name].[ext]' : '[name]_[hash:8].[ext]' } } }] }, plugins: [ // momentjs包含大量本地化代碼,需篩選 new webpack.ContextReplacementPlugin( /moment[\/\\]locale$/, /en-ca|zh-cn/ ), new webpack.optimize.OccurrenceOrderPlugin( true ), // 復制無需編譯的文件至輸出目錄 new CopyWebpackPlugin( [{ from: path.resolve( sourcedir, 'assets' ), to: 'assets' }] ), // 修復webpack的chunkhash不以chunk文件實際內容為準的問題 new WebpackMd5Hash(), // 單獨打包輸出第三方組件,和webpack生成的運行時代碼 new webpack.optimize.CommonsChunkPlugin( { name: ['vendor', 'manifest'] }), // 自動填充js、css引用進首頁 new HtmlWebpackPlugin( { title: 'wzp react', template: path.resolve( sourcedir, 'index.html' ), inject: 'body' // Inject all scripts into the body }), // 設置環境變量 new webpack.DefinePlugin( { process: { env: { // process.env.NODE_ENV==="production" // 應用代碼里,可憑此判斷是否運行在生產環境 NODE_ENV: isDev ? JSON.stringify( 'development' ) : JSON.stringify( 'production' ) } } }), // print more readable module names on HMR updates isDev ? new webpack.NamedModulesPlugin() : null, // 先清理輸出目錄 isDev ? null : new CleanWebpackPlugin( [outputdir] ), // 排除特定庫 isDev ? null : new webpack.IgnorePlugin( /.*/, /react-hot-loader$/ ), // 輸出報告,查看第三方庫的大小 isDev ? null : new BundleAnalyzerPlugin( { analyzerMode: 'static', reportFilename: 'report.html', openAnalyzer: true, generateStatsFile: false }) ].filter( hasValue ) } };

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        webpack 2的react開發配置實例代碼

        webpack 2的react開發配置實例代碼:基于webpack 2.3的標準語法,包含了less變量替換、React組件熱加載、第三庫單獨輸出、區分生產與開發環境等常用配置。 'use strict' module.exports = function( env ) { // 生成環境下webpack使用-p參數開啟代碼壓縮 // webpack[-d
        推薦度:
        標簽: 開發 配置 web
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲av日韩av无码| 亚洲一久久久久久久久| 中国一级毛片视频免费看| 亚洲春色另类小说| 99久久99热精品免费观看国产| 亚洲国产日韩在线视频| 最新久久免费视频| 亚洲AV日韩精品久久久久久久| 精品视频在线免费观看| 亚洲欧洲精品视频在线观看| 国产92成人精品视频免费| 成人片黄网站色大片免费观看cn| 亚洲欧美aⅴ在线资源| 内射干少妇亚洲69XXX| 免费大片在线观看网站| 免费人成视频在线观看视频| 免费国产美女爽到喷出水来视频| 午夜小视频免费观看| 国产小视频免费观看| 免费在线观看污网站| 亚洲中文久久精品无码| 亚洲色成人网站WWW永久| 亚洲国产成人久久精品影视| 亚洲欧洲日产国码在线观看| 亚洲日韩精品无码专区加勒比 | 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 免费a级毛片无码a∨性按摩| 99麻豆久久久国产精品免费| 国产精品视频白浆免费视频| 自怕偷自怕亚洲精品| 18国产精品白浆在线观看免费| 蜜芽亚洲av无码一区二区三区| 国产L精品国产亚洲区久久| 免费人妻无码不卡中文字幕系| 国产亚洲sss在线播放| 亚洲欧洲一区二区三区| 五月婷婷在线免费观看| 无遮挡a级毛片免费看| 久久久久亚洲精品天堂| 免费h成人黄漫画嘿咻破解版| 久久青草免费91线频观看不卡|