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

資訊專欄INFORMATION COLUMN

用TypeScript開發手勢庫 - (2)tsconfig.json & rollup.c

roundstones / 2874人閱讀

摘要:一個手勢庫往期目錄用開發手勢庫開發常用手勢有哪些用開發手勢庫統一化和事件不到行用實現一個標題有點長今天的標題有點長但不難講的都是工具配置和使用就個知識點如何配置如何配置使用運行項目所在的命令注為了閱讀體驗我把為什么不用放在的本文的最

any-touch 一個手勢庫

往期目錄

用 TypeScript 開發手勢庫 - (1)web開發常用手勢有哪些?

用TypeScript開發手勢庫 - (3)統一化Mouse和Touch事件

不到30行, 用any-touch實現一個drawer

標題有點長

今天的標題有點長, 但不難, 講的都是工具配置和使用, 就3個知識點:

如何配置tsconfig.json

如何配置rollup.config.js

使用npx運行項目所在node_modules的命令

rollup.config.js

: 為了閱讀體驗, 我把為什么不用webpack放在的本文的最后. 我對代碼做了注釋(如有不懂請留言):

// 為了讓rollup識別commonjs類型的包,默認只支持導入ES6
import commonjs from "rollup-plugin-commonjs";
// 為了支持import xx from "xxx"
import nodeResolve from "rollup-plugin-node-resolve";
// ts轉js的編譯器
import typescript from "rollup-plugin-typescript";
// 支持加載json文件
import json from "rollup-plugin-json";
// 支持字符串替換, 比如動態讀取package.json的version到代碼
import replace from "rollup-plugin-replace";
// 讀取package.json
import pkg from "./package.json";
// 代碼生成sourcemaps
import sourceMaps from "rollup-plugin-sourcemaps"

// 代碼頭
const banner =
    `/*!
 * AnyTouch.js v${pkg.version}
 * (c) 2018-${new Date().getFullYear()} Russell
 * https://github.com/383514580/any-touch
 * Released under the MIT License.
 */`

export default {
    input: "./src/main.ts",
    plugins: [
        // 代碼中的__VERSION__字符串會被package.json中的version字段所替代
        replace({
            __VERSION__: pkg.version
        }),

        typescript({
            exclude: "node_modules/**",
            typescript: require("typescript"),

        }),
        json(),
        nodeResolve({
            jsnext: true,
            main: true
        }),

        commonjs({
            include: "node_modules/**"
        }),

        sourceMaps()

    ],
    output: [{
            format: "cjs",
            // 生成的文件名和路徑
            // package.json的main字段, 也就是模塊的入口文件
            file: pkg.main, 
            banner,
            sourcemap: true
        },
        {
            format: "es",
            // rollup和webpack識別的入口文件, 如果沒有該字段, 那么會去讀取main字段
            file: pkg.module,
            banner,
            sourcemap: true
        },
        {
            format: "umd",
            name: "AnyTouch",
            file: pkg.browser,
            banner,
            sourcemap: true
        }
    ]
};

源碼

tsconfig.js
{
    "compilerOptions": {
        // 允許未執行的代碼不報錯
        "allowUnreachableCode": true,
        // 嚴格模式, 強烈建議開啟
        "strict": true,
        // 支持別名導入:
        // import * as React from "react"
        "esModuleInterop": true,
        // 目標js的版本
        "target": "es5",
        // 目標代碼的模塊結構版本
        "module": "es6",
        // 在表達式和聲明上有隱含的 any類型時報錯。
        "noImplicitAny": true,
        // 刪除注釋
        "removeComments": true,
        // 保留 const和 enum聲明
        "preserveConstEnums": false,
        // 生成sourceMap    
        "sourceMap": true,
        // 目標文件所在路徑
        "outDir": "./lib",
        // 編譯過程中需要引入的庫文件的列表
        "lib": [
            "dom",
            "es7"
        ],
        // 額外支持解構/forof等功能
        "downlevelIteration": true,
        // 是否生成聲明文件
        "declaration": true,
        // 聲明文件路徑
        "declarationDir": "./lib",
        // 此處設置為node,才能解析import xx from "xx"
        "moduleResolution": "node"
    },
    // 入口文件
    "include": [
        "src/main.ts"
    ]
}

源碼

運行命令

好了文件配置好了, 我們可以把我們的ts代碼轉成js, 就差在package.json中加一條命令了:

// package.json
{
    ...
    "script": {
        "build": "tsc && rollup -c"
    }
    ...
}

這里tsc是為了在lib目錄生產聲明文件, rollup -c會生成umd/es/commonjs三種模塊的代碼, "c"是config縮寫, 代表讀取rollup.config.js

源碼

彩蛋

其實npx并不是本文主角,但是如果你的tsc不是全局安裝的, 那么你在命令行運行tsc會提示找不到他, 但是如果你用npx tsc那么他就會運行你本地的node_modules中的tsc命令, 驚不驚喜.

補充說明

如果你了解webpack和rollup的不同下面內容可以跳過.

為什么不用webpack

一說到打包工具大家想到的肯定是webpack, 他有各種loader, 當然也有ts-loader, 但是他生成代碼有很多是非我們所寫的邏輯代碼, 比如一些他自有的模塊加載功能:

rollup更適合開發插件?

是的, rollup生成代碼只是把我們的代碼轉碼成目標js并無其他, 同使如果需要,他可以同時幫我們生成支持umd/commonjs/es的js代碼, vue / react /angular都在用他作為打包工具.

vue

react

angular

為什么還沒到寫代碼?

2期了都還沒有講到代碼, 估計大家都著急, 莫著急,下一期開始咱們就講代碼了, 平時上班工作實在是忙, 都是晚上更新文章, 這個周末我會多寫點, 如果實在迫不及待也可以先看看我寫好的代碼預熱下:

https://github.com/383514580/any-touch

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

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

相關文章

  • TypeScript開發手勢 - (2)tsconfig.json & rollup.c

    摘要:一個手勢庫往期目錄用開發手勢庫開發常用手勢有哪些用開發手勢庫統一化和事件不到行用實現一個標題有點長今天的標題有點長但不難講的都是工具配置和使用就個知識點如何配置如何配置使用運行項目所在的命令注為了閱讀體驗我把為什么不用放在的本文的最 showImg(https://segmentfault.com/img/remote/1460000018610388?w=800&h=210); an...

    cod7ce 評論0 收藏0
  • typescript開發手勢 - (1)web開發手勢有哪些?

    這只是個開頭 說在最前面,本文是一個系列文章的開頭, 這個系列里我會講如何用typescript開發一款支持pc和手機端的手勢庫any-touch, 以及通過jest讓你的代碼測試覆蓋率100%. showImg(https://segmentfault.com/img/bVbp3B0?w=936&h=246); 目錄 用TypeScript開發手勢庫 - (2)tsconfig.json & r...

    raise_yang 評論0 收藏0
  • 不到30行, any-touch實現一個drawer

    摘要:一個手勢庫預覽的基本邏輯添加個一個是當隱藏的時候打開隱藏的觸發開關一個是本身對把手和進行進行定位到界面的右側邊緣調整和把手的樣式這里把手主要是要設置背景色為透明具體樣式看下面代碼用分別給把手和添加拖拽手勢當隱藏時拖拽把手向右通過返回的每 showImg(https://segmentfault.com/img/remote/1460000018610388?w=800&h=210); ...

    source 評論0 收藏0
  • 介紹vue項目中jsconfig.json概念及使步驟

      先為大家介紹在vue項目中 jsconfig.json  官方說明:當您在工作空間中有一個定義項目上下文的jsconfig.json文件時,JavaScript體驗會得到改進?! 「攀觥 ∧夸浿写嬖趖sconfig.json文件表明該目錄是 TypeScript 項目的根目錄。該tsconfig.json文件指定編譯項目所需的根文件和編譯器選項?! avaScript 項目可以使用jscon...

    3403771864 評論0 收藏0

發表評論

0條評論

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