国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node中間層實踐(三)——webpack配置

kelvinlee / 2706人閱讀

摘要:的意思是,如果碰到不能的情況,就整頁刷新首頁路由開發環境中使用了,需要將每一個的配置中寫上歡迎繼續關注本博的更新中間層實踐一基于的全棧式開發中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理

版權聲明:更多文章請訪問我的個人站Keyon Y,轉載請注明出處。

這里沒什么可說的,webpack的配置和插件實在太多了,用的時候查文檔就行了。

項目地址:https://github.com/KeyonY/NodeMiddle

這里 先貼 個我的配置,注釋寫的挺詳細的了。

開發環境的webpack配置:
var path = require("path");
var webpack = require("webpack");
var TransferWebpackPlugin = require("transfer-webpack-plugin");
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var localOptions = require("./localOptions");

var entrys = require("./entrys.js");

module.exports = {
    entry: entrys,
    output: {
        path: path.resolve(__dirname, "./dist"),
        publicPath: localOptions.host,
        filename: "Scripts/[name].js"
    },
    devtool: "eval-source-map",
    module: {
        rules: [
            {test: /.js$/,loader:"babel-loader"},
            {test: /.pug$/,loader:"pug-loader",options: {pretty: true}},
            {test: /.scss$/,use: ExtractTextPlugin.extract({fallback: "style-loader", use: ["css-loader",{loader: "postcss-loader",options: {config: {path: "./build/postcss.config.js"}}},"sass-loader"]})},
        ]
    },
    plugins: [
        new webpack.BannerPlugin("Copyright 2017 Keyon Y"),
        //把指定文件夾下的文件復制到指定的目錄
        new TransferWebpackPlugin([
                {from: "../src/assets", to: "../dist/assets"},
            ],path.resolve(__dirname)),
        // webpack就能夠比對id的使用頻率和分布來得出最短的id分配給使用頻率高的模塊
        new webpack.optimize.OccurrenceOrderPlugin(),
        new webpack.HotModuleReplacementPlugin(),
        new ExtractTextPlugin({filename:"Contents/[name].css",disable: true,allChunks: true}),
        // 允許錯誤不打斷程序
        new webpack.NoErrorsPlugin()
    ]
}
生產環境的webpack配置:
var path = require("path");
var webpack = require("webpack");
var TransferWebpackPlugin = require("transfer-webpack-plugin");
var ExtractTextPlugin = require("extract-text-webpack-plugin");

var entrys = require("./entrys.js");

module.exports = {
    entry: entrys,
    output: {
        path: path.resolve(__dirname, "../dist"),
        publicPath: "/",
        filename: "Scripts/[name].js"
    },
    module: {
        rules: [
            {test: /.js$/,loader:"babel-loader"},
            {test: /.pug$/,loader:"pug-loader",options: {pretty: true}},
            {test: /.scss$/,use: ExtractTextPlugin.extract({fallback: "style-loader", use: ["css-loader",{loader: "postcss-loader",options: {config: {path: "./build/postcss.config.js"}}},"sass-loader"]})}
        ]
    },
    plugins: [
        new webpack.BannerPlugin("Copyright 2017 Keyon Y"),
        //把指定文件夾下的文件復制到指定的目錄
        new TransferWebpackPlugin([
                {from: "../src/assets", to: "../dist/assets"},
                {from: "../src/Views", to: "../dist/Views"},
            ],path.resolve(__dirname)),
        // webpack就能夠比對id的使用頻率和分布來得出最短的id分配給使用頻率高的模塊
        new webpack.optimize.OccurrenceOrderPlugin(),
        new ExtractTextPlugin({filename:"Contents/[name].css",disable: false,allChunks: true}),
        // 混淆壓縮js和css
        new webpack.optimize.UglifyJsPlugin({
            compress: {
                properties: false,
                warnings: false
            },
            output: {
                beautify: false,
                quote_keys: true
            },
            mangle: {
                screw_ie8: false
            },
            sourceMap: false,
            except: ["$", "exports", "require"]    //排除關鍵字
        })
    ],
    stats: "normal"
}

entry的配置,因為有太多的組件("src/Components"中)了,所以為了簡化webpack.config的內容,我把entry的配置寫在entry.js作為一個模塊導入進來。

// entry.js
var webpackHotMiddlewareScript = "webpack-hot-middleware/client?reload=true&timeout=2000";    //reload=true的意思是,如果碰到不能hot reload的情況,就整頁刷新
var isDev = process.env.NODE_ENV === "dev";

var entryJson = {
    base: "./src/Components/base/base.js",
    index: "./src/Components/index/index.js",   // 首頁--Default 路由
    message: "./src/Components/message/message.js",
    home: "./src/Components/home/home.js",
    modals: "./src/Components/modals/modals.js",
}

if(isDev) { // 開發環境中使用了webpack-hot-middleware,需要將每一個entry的配置中寫上"webpack-hot-middleware/client?reload=true&timeout=2000"
    var transJson = {};
    for(let e in entryJson) {
        transJson[e] = [entryJson[e], webpackHotMiddlewareScript];
    }
    module.exports = transJson;
}else {
    module.exports = entryJson;
}

歡迎繼續關注本博的更新
Node中間層實踐(一)——基于NodeJS的全棧式開發
Node中間層實踐(二)——搭建項目框架
Node中間層實踐(三)——webpack配置
Node中間層實踐(四)——模板引擎pug
Node中間層實踐(五)——express-中間層的邏輯處理

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110123.html

相關文章

  • Node間層實踐(二)——搭建項目框架

    摘要:項目地址腳手架使用過,的同學都清楚,官方推薦的安裝方式是通過專用的來快速搭建一個由編譯打包的項目框架。用在層的模塊化,在中間層實現了模塊化。這樣,從中間層到前端都實現了熱加載。 版權聲明:更多文章請訪問我的個人站Keyon Y,轉載請注明出處。 項目地址:https://github.com/KeyonY/NodeMiddle 腳手架? 使用過angular2,vue2的同學都清楚,官...

    DrizzleX 評論0 收藏0
  • 如何打造一個令人愉悅的前端開發環境(

    摘要:的最后一個大招就是替換一些傳統的服務端語言,例如,,等,在業務層上面使用來開發服務端完全不成問題。更多的的使用細節和技巧建議關注美團博客大搜車論壇下一篇我們開啟如何結合和搭建一個開發環境和項目目錄 往期回顧 前面2期都講得是瀏覽器端的東西比較多,包括Webpack,雖然是Node處理的,但是還是瀏覽器端用的多,對于現在的前端開發來說,不懂一點服務端的東西,簡直沒辦法活,一般的招聘要求都...

    cgh1999520 評論0 收藏0
  • Node間層實踐(一)——基于NodeJS的全棧式開發

    摘要:總結我覺得,以后基于的全棧式開發的模式將會越來越流行,這也會引領前端步入工程化時代。歡迎繼續關注本博的更新中間層實踐一基于的全棧式開發中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理 版權聲明:更多文章請訪問我的個人站Keyon Y,轉載請注明出處。 前言 近期公司有個新項目,由于后端人手不足,我果斷的提議用node中間層的方案,得到了老大的支持...

    warkiz 評論0 收藏0
  • 基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰

    摘要:原作者原鏈接基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(CC BY-...

    big_cat 評論0 收藏0
  • 基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰

    摘要:原作者原博文地址基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(...

    Lavender 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<