最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

webpack 開發(fā)和生產(chǎn)并行設(shè)置的方法

 更新時間:2018年11月08日 10:18:31   作者:渣渣輝  
這篇文章主要介紹了webpack 開發(fā)和生產(chǎn)并行設(shè)置的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

安裝依賴的4種命令

生產(chǎn)依賴和開發(fā)

一個項目中是有開發(fā)環(huán)境和生產(chǎn)環(huán)境的,這兩個環(huán)境的依賴也是不同的

  • 開發(fā)依賴:只在開發(fā)中用來幫助你進(jìn)行開發(fā),簡化代碼或者生成兼容設(shè)置的以來包。你可以打開package.json來查看,devDependencies的下面的這些包為開發(fā)使用的包。這些包在生產(chǎn)環(huán)境中并沒有用處。
  • 生產(chǎn)依賴:就是比如我們的js使用了jquery,jquery的程序要在瀏覽器端起作用,也就是說我們最終的程序也需要這個包,這就是生產(chǎn)依賴。這些包在dependencies中。

npm install jquery

安裝完成后,你會發(fā)現(xiàn)在package.json中并不存在這個包的依賴。如果你項目拷貝給別人繼續(xù)開發(fā),或者別人和你git合作,再次下載項目npm install時就會缺少這個jquery包。項目就會無法正常運(yùn)行,所以這也是我們最不贊成的安裝方法

npm install jquery --save

安裝完成后,它存在于package.json的dependencies中,也就是說它是生產(chǎn)環(huán)境需要依賴的包(上線時需要的以來包)。

npm install jquery --save-dev

安裝完成后,它存在于package.json的devDependencies中,也就是說它是開發(fā)環(huán)境中需要的,上線并不需要這個包的依賴。

npm install

根據(jù)package.json安裝所有的生產(chǎn)和開發(fā)的包

npm install --production

安裝生產(chǎn)環(huán)境依賴包

配置生產(chǎn)和開發(fā)并行

webpack.config.js

console.log(encodeURIComponent(process.env.type));
if (process.env.type == 'build') {
  var website = {
    publicPath: "http://pengrongjie.top:1717/"
  }  
} else {
  var website = {
    publicPath: "http://192.168.1.9:1717/"
  } 
}

package.json(windows)

"dev":"set type=dev&webpack"

 "scripts": {
  "server": "webpack-dev-server --open",
  "dev":"set type=dev&webpack",
  "build": "set type=build&webpack"
 },

package.json(mac)

"scripts": {
  "server": "webpack-dev-server --open",
  "dev":"export type=dev&&webpack",
  "build": "export type=build&&webpack"
 },

開發(fā)

npm run dev

生產(chǎn)

npm run build

全部代碼webpack.config.js

const path = require('path');
const glob = require('glob');
const uglify = require('uglifyjs-webpack-plugin');
const htmlPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const PurifyCSSPlugin = require('purifycss-webpack');
console.log(encodeURIComponent(process.env.type));
if (process.env.type == 'build') {
  var website = {
    publicPath: "http://pengrongjie.top:1717/"
  }  
} else {
  var website = {
    publicPath: "http://192.168.1.9:1717/"
  } 
}

module.exports = {
  // devtool: 'source-map',
  // 入口 
  entry: {
    entry: './src/entry.js',
  },
  // 出口
  output: {
    //絕對路徑
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
    publicPath: website.publicPath
  },
  // 模塊
  module: {
    //規(guī)則
    rules: [
      // {
      //   test: /\.css$/,
      //   use: [
      //     {
      //       loader:'style-loader'
      //     }
      //   ]
      // },
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          // use: "css-loader"
          use: [
            { loader: 'css-loader', options: { importLoaders: 1 } },
            'postcss-loader'
          ]
        })
      },
      {
        test: /\.(png|jpg|gif)/,
        use: [{
          loader: 'url-loader',
          options: {
            limit: 5000,
            outputPath: 'images/',
          }
        }]
      }, {
        test: /\.(htm|html)$/i,
        use: ['html-withimg-loader']
      },
      // {
      //   test: /\.less$/,
      //   use: [{
      //     loader: 'style-loader'
      //   }, {
      //     loader: 'css-loader'
      //   }, {
      //     loader: 'less-loader'
      //   }]
      // }
      {
        test: /\.less$/,
        use: ExtractTextPlugin.extract({
          use: [{
            loader: 'css-loader',
            options: { importLoaders: 1 }
          }, {
            loader: 'less-loader'
          },'postcss-loader'],
          fallback: 'style-loader'
        })
      },
      // {
      //   test: /\.scss$/,
      //   use: [{
      //     loader:'style-loader'
      //   },{
      //     loader:'css-loader'
      //   },{
      //     loader:'sass-loader'
      //   }]
      // },
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
          use: [{
            loader: 'css-loader',
            options: { importLoaders: 1 }
          }, {
            loader: 'sass-loader'
            },
            'postcss-loader'],
          fallback: 'style-loader'
        })
      },
      // {
      //   test:/\.(js|jsx)$/,
      //   use:{
      //     loader:'babel-loader',
      //     options:{
      //       presets:[
      //         'es2015',
      //         'react'
      //       ]
      //     }
      //   },
      //   //過濾掉,不編譯node_modules中的文件,
      //   exclude:/node_modules/
      // },
      {
        test:/\.(js|jsx)$/,
        use:{
          loader:'babel-loader',
        },
        //過濾掉,不編譯node_modules中的文件,
        exclude:/node_modules/
      }
      
    ]
  },
  //插件
  plugins: [
    // new uglify()
    new htmlPlugin({
      minify: {
        removeAttributeQuotes: true
      },
      hash: true,
      template: './src/index.html'
    }),
    new ExtractTextPlugin("css/index.css"),
    new PurifyCSSPlugin({
      paths:glob.sync(path.join(__dirname,'src/*.html')),
    })
  ],
  //開發(fā)服務(wù)
  devServer: {
    contentBase: path.resolve(__dirname, 'dist'),
    host: '192.168.1.9',
    compress: true, //服務(wù)端是否啟用壓縮
    port: 1717
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS一次前端面試經(jīng)歷記錄

    JS一次前端面試經(jīng)歷記錄

    這篇文章主要介紹了JS一次前端面試經(jīng)歷,結(jié)合具體案例形式分析了JS前端面試過程中遇到的問題以及響應(yīng)的注意事項,需要的朋友可以參考下
    2020-03-03
  • 讀懂CommonJS的模塊加載

    讀懂CommonJS的模塊加載

    這篇文章主要介紹了CommonJS的模塊加載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • js閉包學(xué)習(xí)心得總結(jié)

    js閉包學(xué)習(xí)心得總結(jié)

    這篇文章主要介紹了JS閉包的學(xué)習(xí)心得,以及分析其中遇到的問題,需要的朋友跟著參考下吧。
    2018-04-04
  • AutoJs4.4.1免費(fèi)版快速接通vscode調(diào)試腳本的操作方法

    AutoJs4.4.1免費(fèi)版快速接通vscode調(diào)試腳本的操作方法

    這篇文章主要介紹了AutoJs4.4.1免費(fèi)版快速接通vscode進(jìn)行調(diào)試腳本,首先下載AutoJs并安裝,下載完成后,將2個apk文件拷貝到手機(jī)安裝即可,接下來需要安裝插件,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • js獲取事件源及觸發(fā)該事件的對象

    js獲取事件源及觸發(fā)該事件的對象

    如何獲取事件源及觸發(fā)該事件的對象,方法有很多,js中可以通過event來實現(xiàn),下面有個不錯的示例,感興趣的朋友可以參考下
    2013-10-10
  • JS+HTML5 FileReader對象用法示例

    JS+HTML5 FileReader對象用法示例

    這篇文章主要介紹了JS+HTML5 FileReader對象用法,結(jié)合具體實例形式分析了FileReader對象的常用方法及簡單使用技巧,需要的朋友可以參考下
    2017-04-04
  • Bootstrap table使用方法記錄

    Bootstrap table使用方法記錄

    這篇文章主要為大家詳細(xì)介紹了Bootstrap table的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 簡單實現(xiàn)JS對dom操作封裝

    簡單實現(xiàn)JS對dom操作封裝

    這篇文章主要介紹了簡單實現(xiàn)JS對dom操作封裝,需要的朋友可以參考下
    2015-12-12
  • JS原型prototype和__proto__用法實例分析

    JS原型prototype和__proto__用法實例分析

    這篇文章主要介紹了JS原型prototype和__proto__用法,結(jié)合實例形式分析了JS原型prototype和__proto__使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-03-03
  • 使用DeviceOne實現(xiàn)微信小程序功能

    使用DeviceOne實現(xiàn)微信小程序功能

    本文主要對小程序的優(yōu)缺點和DeviceOne的特點進(jìn)行介紹,分享了使用DeviceOne實現(xiàn)微信小程序功能的實例代碼,具有一定的參考價值。下面跟著小編一起來看下吧
    2016-12-12

最新評論

拜城县| 科技| 贺兰县| 清河县| 建湖县| 拉孜县| 辉南县| 齐齐哈尔市| 丽水市| 岢岚县| 裕民县| 通海县| 合江县| 闽清县| 福海县| 修文县| 昂仁县| 微山县| 和顺县| 青海省| 永靖县| 寿宁县| 彭水| 昂仁县| 红河县| 诸暨市| 黄大仙区| 景洪市| 涞水县| 巫山县| 洪洞县| 衡山县| 平泉县| 通许县| 甘孜县| 丰宁| 西峡县| 于田县| 台前县| 竹北市| 万荣县|