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

資訊專欄INFORMATION COLUMN

構(gòu)建常用npm包

lastSeries / 2785人閱讀

摘要:它適用于普通的,而你無需關(guān)心要為哪些瀏覽器加前綴,只需全新關(guān)注于實(shí)現(xiàn),并使用最新的規(guī)范。會調(diào)用所依賴的模塊對文件進(jìn)行編譯包括語法。

前言

最近看到一篇文章《迷茫時學(xué)習(xí)Node.js最好的方法》
一直以來對node的個人心理傾向于做前端工具,而不是web服務(wù)。所以一直以來都沒好好學(xué)node。

基礎(chǔ)配置 1.html-webpack-plugin

為html文件中引入的外部資源如script、link動態(tài)添加每次compile后的hash,防止引用緩存的外部文件問題

可以生成創(chuàng)建html入口文件,比如單頁面可以生成一個html文件入口,配置N個html-webpack-plugin可以生成N個頁面入口

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const CleanWebpackPlugin = require("clean-webpack-plugin");// 刪除目錄插件
const ManifestPlugin = require("webpack-manifest-plugin");// 輸出配置

module.exports = {
    entry: {
      app: "./src/index.js",
      vendor: ["lodash"]
    },
    // 雖然在 dist/ 文件夾我們已經(jīng)有 index.html 這個文件,然而 HtmlWebpackPlugin 還是會默認(rèn)生成 index.html 文件。
    // 這就是說,它會用新生成的 index.html 文件,把我們的原來的替換。
    plugins: [
      new ManifestPlugin({
          fileName: "my-manifest.json",
          basePath: "/app/",
          seed: {
            name: "My Manifest"
          }
      }),
      new CleanWebpackPlugin(["dist"]),  
      new HtmlWebpackPlugin({
        title: "output manger",
        filenameL: "index.html",
        template: "src/index.html"
      })
    ],
    output: {
      filename: "[name].bundle.js",
      path: path.resolve(__dirname, "dist")
    }
};
2. html-loader 3. autoprefixer-loade

Autoprefixer是一個后處理程序,你可以同Sass,Stylus或LESS等預(yù)處理器共通使用。它適用于普通的CSS,而你無需關(guān)心要為哪些瀏覽器加前綴,只需全新關(guān)注于實(shí)現(xiàn),并使用W3C最新的規(guī)范。

4. file-loader

file-loader的主要功能是:把源文件遷移到指定的目錄(可以簡單理解為從源文件目錄遷移到build目錄),并返回新文件的路徑(簡單拼接而成)。

5. url-loader

url-loader的主要功能是:將源文件轉(zhuǎn)換成DataUrl(聲明文件mimetype的base64編碼)。據(jù)我所知,在前端范疇里,圖片和字體文件的DataUrl都是可以被瀏覽器所識別的,因此可以把圖片和字體都轉(zhuǎn)化成DataUrl收納在HTML/CSS/JS文件里,以減少HTTP連接數(shù)。

圖片

 {
    // 圖片加載器,雷同file-loader,更適合圖片,可以將較小的圖片轉(zhuǎn)成base64,減少http請求
    // 如下配置,將小于8192byte的圖片轉(zhuǎn)成base64碼
    test: /.(png|jpg|gif)$/,
    loader: "url-loader?limit=8192&name=./static/img/[hash].[ext]",
 },

字體文件

 {
    // 專供iconfont方案使用的,后面會帶一串時間戳,需要特別匹配到
    test: /.(woff|woff2|svg|eot|ttf)??.*$/,
    loader: "file?name=./static/fonts/[name].[ext]",
 },
6. css-loader

針對css文件,我們需要使用css-loader來加載.css-loader的功能比較強(qiáng)大,一些新穎的特性比如Local Scope或是CSS Modules都是支持的。

7. less-loader

針對less文件,我們首先需要使用less-loader來加載。less-loader會調(diào)用所依賴的less模塊對less文件進(jìn)行編譯(包括@import語法)。至于說less-loader所接受的參數(shù),實(shí)質(zhì)上大部分是傳遞給less模塊使用的參數(shù),由于我本人應(yīng)用less的程度不深,因此沒有傳任何參數(shù)、直接就使用了。如果你之前對less模塊就已經(jīng)有了一套配置的話,請參考less-loader的文檔進(jìn)行配置。

另外,less-loader并不會針對url()語法做特別的轉(zhuǎn)換,因此,如果你想把url()語句里涉及到的文件(比如圖片、字體文件等)也一并用webpack打包的話,就必須利用管道交給css-loader做進(jìn)一步的處理。

8. ExtractTextWebpackPlugin
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  module: {
    rules: [
      {
        test: /.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin("styles.css"),
  ]
}

它會將所有的入口 chunk(entry chunks)中引用的 *.css,移動到獨(dú)立分離的 CSS 文件。因此,你的樣式將不再內(nèi)嵌到 JS bundle 中,而是會放到一個多帶帶的 CSS 文件(即 styles.css)當(dāng)中。 如果你的樣式文件大小較大,這會做更快提前加載,因?yàn)?CSS bundle 會跟 JS bundle 并行加載

http://array_huang.coding.me/webpack-book/chapter3/webpack-with-babel.html

9. babel相關(guān)

1.babel-core

babel的核心

2.babel-preset-es2015-loose
|| babel-preset-es2015

盡可能符合ECMAScript6語義的normal模式和提供更簡單ES5代碼的loose模式

3.babel-loader

babel轉(zhuǎn)化loader

    {
      test: /.js$/,
      exclude: /node_modules|vendor|bootstrap/,
      loader: "babel-loader?presets[]=es2015-loose&cacheDirectory&plugins[]=transform-runtime",
    },

cacheDirectory cacheDirectory參數(shù)默認(rèn)為false,若你設(shè)置為一個文件目錄路徑(表示把cache存到哪),或是保留為空(表示操作系統(tǒng)默認(rèn)的緩存目錄),則相當(dāng)于開啟cache。這里的cache指的是babel在編譯過程中某些可以緩存的步驟,具體是什么我也不太清楚,反正是只要開啟了cache就可以加快webpack整體編譯速度

4.babel-plugin-transform-runtime和5.babel-runtime

雖說一個preset已經(jīng)包括N個plugin了,但總有一些漏網(wǎng)之魚是要專門加載的。這里我只用到了transform-runtime,這個plugin的效果是:不用這plugin的話,babel會為每一個轉(zhuǎn)換后的文件(在webpack這就是每一個chunk了)都添加一些輔助的方法(僅在需要的情況下);而如果用了這個plugin,babel會把這些輔助的方法都集中到一個文件里統(tǒng)一加載統(tǒng)一管理,算是一個減少冗余,增強(qiáng)性能的優(yōu)化項(xiàng)吧,用不用也看自己需要了;如果不用的話,前面也不需要安裝babel-plugin-transform-runtime和babel-runtime了。

5.babel-preset-stage-3

js 提案語法第三階段

{
   "presets": ["es2015", "stage-3"],
   "plugins": ["transform-runtime"],
   "comments": false    
}

未來的babel
再見,babel-preset-2015

10. gulp相關(guān)
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.1",
"gulp-clean-css": "^2.0.13",
"gulp-less": "^3.3.2",
"gulp-rename": "^1.2.2"
工程 1. friendly-errors-webpack-plugin

錯誤信息提示插件

2. cross-env

跨操作系統(tǒng) 在ENV 前加 cross-env

"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
3. 配置文件

.babelrc

{
    "presets": ["es2015", "stage-3"], //轉(zhuǎn)化代碼版本
    "plugins": ["transform-runtime"],
    "comments": false
}

EditorConfig

root = true

charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

.attributes

src/styles/**/* linguist-vendored=false

.npmignore

.*
*.md
*.yml
build/
node_modules/
test/
gulpfile.js

.travis.yml

language: node_js
node_js:- "4"
script:- npm run test

優(yōu)化

dll

happypack多線程

...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89041.html

相關(guān)文章

  • 前端構(gòu)建工具(2) -- npm&yarn

    摘要:如果使用了代表代表,則跳過提問階段,直接生成一個新的文件。 前言 簡介:node的包管理器,它隨nodejs一起安裝,即你安裝了nodejs就可以用npm進(jìn)行包管理,通過npm可以從npm服務(wù)器下載別人上傳的第三方庫,下載并安裝別人上傳的命令行程序,上傳自己寫的第三方庫和命令行程序可用npm -v查看npm版本號確定npm是否可用,如果npm版本過低,可以使用npm -install ...

    zhangke3016 評論0 收藏0
  • 2018年第33周-javeer對nodejs體會

    摘要:流程源處理源代碼,例如過濾任何值。工藝類從編譯后處理生成的文件,例如對類進(jìn)行字節(jié)碼增強(qiáng)。整合后的測試執(zhí)行集成測試后執(zhí)行所需的操作。校驗(yàn)運(yùn)行任何檢查以驗(yàn)證包裝是否有效并符合質(zhì)量標(biāo)準(zhǔn)。 nodejs和es6 nodejs的語法和es6不一樣,如模塊系統(tǒng),一個是CommonJS的require、一個是es6的import,寫模塊也不一樣。 nodejs的npm 我來理解,nodejs類似與j...

    xiongzenghui 評論0 收藏0
  • 前端自動化解決方案

    摘要:前端工具查看本機(jī)安裝的的版本解析插件我們的任務(wù)是編寫一個一個插件,它能夠在源文件的頭部添加佛祖保佑,永無的字符畫。接下來使用以下的命令即可發(fā)布包到社區(qū)。關(guān)于和的選擇,我們要注意一點(diǎn)適合自己的才是最好的。還可以承載業(yè)務(wù)鉤子,識別前置后置。 Grunt前端工具 查看本機(jī)安裝的yeoman generator的版本: $ npm ls -g --depth=1 2>/dev/null | ...

    tangr206 評論0 收藏0
  • 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫

    摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關(guān)于項(xiàng)目工程化前端架構(gòu)前端構(gòu)建等方面的技術(shù),這次說說怎么寫一個完美的第三方庫。使用導(dǎo)出模塊,就可以在使用這個庫的項(xiàng)目中構(gòu)建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關(guān)于項(xiàng)目工程化、前端架構(gòu)、前端構(gòu)建等方面的技術(shù),這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規(guī)范來寫代碼 js 模塊化的發(fā)展大致有...

    rollback 評論0 收藏0
  • 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫

    摘要:從到完美,寫一個庫庫前端組件庫之前講了很多關(guān)于項(xiàng)目工程化前端架構(gòu)前端構(gòu)建等方面的技術(shù),這次說說怎么寫一個完美的第三方庫。使用導(dǎo)出模塊,就可以在使用這個庫的項(xiàng)目中構(gòu)建時使用功能。 從 1 到完美,寫一個 js 庫、node 庫、前端組件庫 之前講了很多關(guān)于項(xiàng)目工程化、前端架構(gòu)、前端構(gòu)建等方面的技術(shù),這次說說怎么寫一個完美的第三方庫。 1. 選擇合適的規(guī)范來寫代碼 js 模塊化的發(fā)展大致有...

    xiaolinbang 評論0 收藏0

發(fā)表評論

0條評論

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