欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

webpack 靜態(tài)資源集中輸出的方法示例

 更新時(shí)間:2018年11月09日 11:06:18   作者:渣渣輝  
這篇文章主要介紹了webpack 靜態(tài)資源集中輸出的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

目錄結(jié)構(gòu)

copy-webpack-plugin

工作中會(huì)有一些已經(jīng)存在但在項(xiàng)目中沒(méi)有引用的圖片資源或者其他靜態(tài)資源(比如設(shè)計(jì)圖、開(kāi)發(fā)文檔),這些靜態(tài)資源有可能是文檔,也有可能是一些額外的圖片。打包時(shí)保留這些靜態(tài)資源,直接打包到制定文件夾

安裝依賴

cnpm install copy-webpack-plugin --save-dev

webpack.config.js

  • from:要打包的靜態(tài)資源目錄地址,這里的__dirname是指項(xiàng)目目錄下,是node的一種語(yǔ)法,可以直接定位到本機(jī)的項(xiàng)目目錄中。
  • to:要打包到的文件夾路徑,跟隨output配置中的目錄。所以不需要再自己加__dirname。
const copyWebpackPlugin = require('copy-webpack-plugin');
...
  plugins: [
    new copyWebpackPlugin([{
      from: __dirname + '/src/public',
      to:'./public'
    }])
  ],

打包,運(yùn)行

npm run build
npm run server

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');
const entry = require('./webpack_config/entry_webpack');
const webpack = require('webpack');
const copyWebpackPlugin = require('copy-webpack-plugin');
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',
    jquery: 'jquery',
    vue:'vue'
  },
  // entry:entry.path,
  // 出口
  output: {
    //絕對(duì)路徑
    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'
      //       ]
      //     }
      //   },
      //   //過(guò)濾掉,不編譯node_modules中的文件,
      //   exclude:/node_modules/
      // },
      {
        test:/\.(js|jsx)$/,
        use:{
          loader:'babel-loader',
        },
        //過(guò)濾掉,不編譯node_modules中的文件,
        exclude:/node_modules/
      }
      
    ]
  },
  //插件
  plugins: [
    // new webpack.ProvidePlugin({
    //   $:'jquery'
    // }),
    // 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')),
    }),
    new webpack.BannerPlugin('jie的注釋'),
    // new webpack.optimize.CommonsChunkPlugin({
    //   name: 'jquery',
    //   filename: 'assets/js/jquery.min.js',
    //   minChunks:2
    // })
    new webpack.optimize.CommonsChunkPlugin({
      name: ['jquery','vue'],
      filename: 'assets/js/[name].js',
      minChunks:2
    }),
    new copyWebpackPlugin([{
      from: __dirname + '/src/public',
      to:'./public'
    }])
  ],
  //開(kāi)發(fā)服務(wù)
  devServer: {
    contentBase: path.resolve(__dirname, 'dist'),
    host: '192.168.1.9',
    compress: true, //服務(wù)端是否啟用壓縮
    port: 1717
  },
  watchOptions: {
    //檢測(cè)修改的時(shí)間,以毫秒為單位
    poll: 1000,
    //防止重復(fù)保存而發(fā)生重復(fù)編譯錯(cuò)誤。這里設(shè)置的500是半秒內(nèi)重復(fù)保存,不進(jìn)行打包操作
    aggregateTimeout: 500,
    //不監(jiān)聽(tīng)的目錄
    ignored:/node_modules/
  }
}

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

相關(guān)文章

  • JavaScript實(shí)現(xiàn)動(dòng)態(tài)表單生成

    JavaScript實(shí)現(xiàn)動(dòng)態(tài)表單生成

    這篇文章主要來(lái)和大家一起深入探討如何使用JavaScript實(shí)現(xiàn)一個(gè)動(dòng)態(tài)表單生成器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-01-01
  • 淺析javascript中的DOM

    淺析javascript中的DOM

    本文主要給大家簡(jiǎn)單介紹了是什么是DOM、動(dòng)態(tài)操作DOM元素的方法、使用jsjs操作樣式以及Form對(duì)象的簡(jiǎn)介,是個(gè)人對(duì)于javascript中的DOM的理解的總結(jié),推薦給小伙伴們。
    2015-03-03
  • js字符串類(lèi)型String常用操作實(shí)例總結(jié)

    js字符串類(lèi)型String常用操作實(shí)例總結(jié)

    這篇文章主要介紹了js字符串類(lèi)型String常用操作,結(jié)合實(shí)例形式總結(jié)分析了javascript字符串類(lèi)型String常用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • easyui tree帶checkbox實(shí)現(xiàn)單選的簡(jiǎn)單實(shí)例

    easyui tree帶checkbox實(shí)現(xiàn)單選的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇easyui tree帶checkbox實(shí)現(xiàn)單選的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • request請(qǐng)求獲取參數(shù)的實(shí)現(xiàn)方法(post和get兩種方式)

    request請(qǐng)求獲取參數(shù)的實(shí)現(xiàn)方法(post和get兩種方式)

    下面小編就為大家?guī)?lái)一篇request請(qǐng)求獲取參數(shù)的實(shí)現(xiàn)方法(post和get兩種方式)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • JS加密插件CryptoJS實(shí)現(xiàn)的Base64加密示例

    JS加密插件CryptoJS實(shí)現(xiàn)的Base64加密示例

    這篇文章主要介紹了JS加密插件CryptoJS實(shí)現(xiàn)的Base64加密,結(jié)合實(shí)例形式分析了CryptoJS進(jìn)行base64加密的簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • js導(dǎo)出格式化的excel 實(shí)例方法

    js導(dǎo)出格式化的excel 實(shí)例方法

    最常見(jiàn)的方式是使用js函數(shù)操作excle文件,這種方式可能因?yàn)g覽器不同,存在兼容性問(wèn)題。另一種簡(jiǎn)單方法就是導(dǎo)出一個(gè)excel能識(shí)別格式的xml文件,用excel打開(kāi)。
    2013-07-07
  • JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證功能(html5、canvas)

    JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證功能(html5、canvas)

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證(html5、canvas),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 簡(jiǎn)單聊聊JavaScript的事件循環(huán)機(jī)制

    簡(jiǎn)單聊聊JavaScript的事件循環(huán)機(jī)制

    前端開(kāi)發(fā)的童鞋應(yīng)該都知道,JavaScript是一門(mén)單線程的腳本語(yǔ)言,這就意味著JavaScript 代碼在執(zhí)行的時(shí)候,只有一個(gè)主線程來(lái)執(zhí)行所有的任務(wù),同一個(gè)時(shí)間只能做同一件事情,這篇文章主要給大家介紹了關(guān)于JavaScript事件循環(huán)機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 腳本div實(shí)現(xiàn)拖放功能(兩種)

    腳本div實(shí)現(xiàn)拖放功能(兩種)

    本文介紹了腳本div實(shí)現(xiàn)拖放功能的兩種方法:1.原生拖放實(shí)現(xiàn);2.jQuery UI draggable實(shí)現(xiàn)拖放。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02

最新評(píng)論