Sublime插件React-Native篇

作為一個(gè)秒開的編輯器匣屡,用了就不想換呀化焕,插件庫(kù)也很強(qiáng)大珊擂,稍作配置就可以用了

本體

Sublime免費(fèi)的射富,只是偶爾彈窗一下,所以別折騰什么破解版了
官網(wǎng)地址,根據(jù)你的系統(tǒng)選擇下載

Package Control

安裝插件之前要先裝下Package Control

自動(dòng)安裝

使用Ctrl+`快捷鍵或者通過(guò)View->Show Console菜單打開終端矢门,粘貼如下代碼:

import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310898eea76'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

如果終端安裝報(bào)錯(cuò)的話盆色,就改用手動(dòng)安裝

手動(dòng)安裝

  1. 點(diǎn)擊Preferences > Browse Packages菜單
  2. 進(jìn)入打開的目錄的上層目錄灰蛙,然后再進(jìn)入Installed Packages/目錄
  3. 下載Package Control.sublime-package并復(fù)制到Installed Packages/目錄
  4. 重啟Sublime Text

插件安裝

Babel

支持ES6, React.js, jsx代碼高亮隔躲,對(duì) JavaScript, jQuery 也有很好的擴(kuò)展

安裝

PC:Ctrl+shift+p
Mac:Cmd+shift+p
輸入:pci摩梧,選擇Package Control:install package
加載出插件列表后,輸入babel進(jìn)行安裝

配置

  1. 打開.js, .jsx 后綴的文件;
  2. 找到菜單欄的view -> Syntax -> Open all with current extension as… -> Babel -> JavaScript (Babel)宣旱,選擇babel為默認(rèn) javascript 打開syntax

React ES6 Snippets

為react語(yǔ)法提示仅父,sublime-react-es6支持es6語(yǔ)法, 另一個(gè)類似的插件ReactJS貌似是ES5的,敲出來(lái)的代碼塊方法都有function

安裝

PC:Ctrl+shift+p
Mac:Cmd+shift+p
輸入:pci浑吟,選擇Package Control:install package
加載出插件列表后笙纤,輸入React ES6 Snippets進(jìn)行安裝

支持的代碼片段

cdm→  componentDidMount: fn() { ... } 
cdup→  componentDidUpdate: fn(pp, ps) { ... } 
cs→  var cx = React.addons.classSet; 
cwm→  componentWillMount: fn() { ... } 
cwr→  componentWillReceiveProps: fn(np) { ... } 
cwu→  componentWillUpdate: fn(np, ns) { ... } 
cwun→  componentWillUnmount: fn() { ... } 
cx→  cx({ ... }) 
fdn→  React.findDOMNode(...) 
fup→  forceUpdate(...) 
gdp→  getDefaultProps: fn() { return {...} } 
gis→  getInitialState: fn() { return {...} } 
ism→  isMounted() 
props→  this.props. 
pt→  propTypes { ... } 
rcc→  component skeleton 
refs→  this.refs. 
ren→  render: fn() { return ... } 
scu→  shouldComponentUpdate: fn(np, ns) { ... } 
sst→  this.setState({ ... }) 
state→  this.state. 

jsfmt

格式化JS代碼,jsformat也支持jsx格式化组力,但是在import的地方老是換行挺煩

安裝

PC:Ctrl+shift+p
Mac:Cmd+shift+p
輸入:pci省容,選擇Package Control:install package
加載出插件列表后,輸入jsfmt進(jìn)行安裝

配置

  • 添加jsx的相關(guān)配置
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/jsfmt/
npm i esformatter@latest esformatter-jsx@latest
  • Preferences -> Package Settings -> Sublime JSFMT燎字,添加代碼
{
  // autoformat on save
  "autoformat": true,

  // array of extensions for autoformat
  "extensions": [
    "js",
    "jsx",
    "sublime-settings"
  ],

  // options for jsfmt
  "options": {
    "preset": "jquery",
    "indent": {
      "value": "    "
    },
    // plugins included
    "plugins": [
      "esformatter-jsx",
    ]
  },

  "jsx": {
    "formatJSX": true,
    // change these to your preferred values
    // refer to https://github.com/royriojas/esformatter-jsx#best-configuration for more options
    "attrsOnSameLineAsTag": false,
    "maxAttrsOnTag": 1,
    "firstAttributeOnSameLine": false,
    "alignWithFirstAttribute": true
  },
  // other esformatter options
  "options-JSON": {
    "plugins": [
      "esformatter-quotes"
    ],
    "quotes": {
      "type": "double"
    }
  },
  "alert-errors": true,
  // path to nodejs
  "node-path": "node",
  // if true it will format the whole file even if you have a selection active
  "ignore-selection": false
}

快捷鍵

打開 Preferences -> Key Bindings - User腥椒,添加代碼:
{"keys":["ctrl+q"],"command":"format_javascript"}

SublimeLinter-ESLint

ESLint 由 JavaScript 紅寶書 作者 Nicholas C. Zakas 編寫, 2013 年發(fā)布第一個(gè)版本候衍。 NCZ 的初衷不是重復(fù)造一個(gè)輪子寞酿,而是在實(shí)際需求得不到 JSHint 團(tuán)隊(duì)響應(yīng) 的情況下做出的選擇:以可擴(kuò)展、每條規(guī)則獨(dú)立脱柱、不內(nèi)置編碼風(fēng)格為理念編寫一個(gè) lint 工具

安裝eslint

終端輸入:

npm install -g eslint@latest 
npm install -g babel-eslint@latest 
npm install -g eslint-plugin-react 

驗(yàn)證是否安裝成功:
eslint -v

ESLint配置rules

在home目錄(windows下即為:c:\usrs\用戶名 )下新建 .eslintrc,添加代碼:

{
// I want to use babel-eslint for parsing!
"parser": "babel-eslint",
"env": {
 // I write for browser
 "browser": true,
 // in CommonJS
 "node": true
},
// To give you an idea how to override rule options:
"rules": {

    ////////////////
    // 可能的錯(cuò)誤  //
    ////////////////
    // 禁止條件表達(dá)式中出現(xiàn)賦值操作符
    "no-cond-assign": 2,
    // 禁用 console
    "no-console": 0,
    // 禁止在條件中使用常量表達(dá)式
    // if (false) {
    //     doSomethingUnfinished();
    // } //cuowu
    "no-constant-condition": 2,
    // 禁止在正則表達(dá)式中使用控制字符 :new RegExp("\x1f")
    "no-control-regex": 2,
    // 數(shù)組和對(duì)象鍵值對(duì)最后一個(gè)逗號(hào), never參數(shù):不能帶末尾的逗號(hào), always參數(shù):必須帶末尾的逗號(hào)拉馋,
    // always-multiline:多行模式必須帶逗號(hào)榨为,單行模式不能帶逗號(hào)
    //"comma-dangle": [1, "never"],
    // 禁用 debugger
    "no-debugger": 2,
    // 禁止 function 定義中出現(xiàn)重名參數(shù)
    "no-dupe-args": 2,
    // 禁止對(duì)象字面量中出現(xiàn)重復(fù)的 key
    "no-dupe-keys": 2,
    // 禁止重復(fù)的 case 標(biāo)簽
    "no-duplicate-case": 2,
    // 禁止空語(yǔ)句塊
    "no-empty": 2,
    // 禁止在正則表達(dá)式中使用空字符集 (/^abc[]/)
    "no-empty-character-class": 2,
    // 禁止對(duì) catch 子句的參數(shù)重新賦值
    "no-ex-assign": 2,
    // 禁止不必要的布爾轉(zhuǎn)換
    "no-extra-boolean-cast": 2,
    //  禁止不必要的括號(hào) //(a * b) + c;//報(bào)錯(cuò)
    "no-extra-parens": 0,
    // 禁止不必要的分號(hào)
    "no-extra-semi": 2,
    // 禁止對(duì) function 聲明重新賦值
    "no-func-assign": 2,
    //  禁止在嵌套的塊中出現(xiàn) function 或 var 聲明
    "no-inner-declarations": [2, "functions"],
    // 禁止 RegExp 構(gòu)造函數(shù)中無(wú)效的正則表達(dá)式字符串
    "no-invalid-regexp": 2,
    // 禁止在字符串和注釋之外不規(guī)則的空白
    "no-irregular-whitespace": 2,
    // 禁止在 in 表達(dá)式中出現(xiàn)否定的左操作數(shù)
    "no-negated-in-lhs": 2,
    //   禁止把全局對(duì)象 (Math 和 JSON) 作為函數(shù)調(diào)用  錯(cuò)誤:var math = Math();
    "no-obj-calls": 2,
    // 禁止直接使用 Object.prototypes 的內(nèi)置屬性
    "no-prototype-builtins":0,
    // 禁止正則表達(dá)式字面量中出現(xiàn)多個(gè)空格
    "no-regex-spaces": 2,
    // 禁用稀疏數(shù)組
    "no-sparse-arrays": 2,
    // 禁止出現(xiàn)令人困惑的多行表達(dá)式
    "no-unexpected-multiline": 2,
    // 禁止在return、throw煌茴、continue 和 break語(yǔ)句之后出現(xiàn)不可達(dá)代碼
    /*
        function foo() {
        return true;
        console.log("done");
        }//錯(cuò)誤
    */
    "no-unreachable": 2,
    // 要求使用 isNaN() 檢查 NaN
    "use-isnan": 2,
    // 強(qiáng)制使用有效的 JSDoc 注釋
    "valid-jsdoc": 1,
    // 強(qiáng)制 typeof 表達(dá)式與有效的字符串進(jìn)行比較
    // typeof foo === "undefimed" 錯(cuò)誤
    "valid-typeof": 2,

    //////////////
    // 風(fēng)格指南  //
    //////////////

     //"quotes": [2, "single"],
     "eol-last": [0],
     "no-mixed-requires": [0],
     "no-underscore-dangle": [0],

     //////////////
    // ES6.相關(guān) //
    //////////////

    //"arrow-spacing":[2,{ "before": true, "after": true }],
    // 強(qiáng)制在子類構(gòu)造函數(shù)中用super()調(diào)用父類構(gòu)造函數(shù)随闺,TypeScrip的編譯器也會(huì)提示
    "constructor-super": 0,
    // 強(qiáng)制 generator 函數(shù)中 * 號(hào)周圍使用一致的空格
    "generator-star-spacing": [2, { "before": true, "after": true }],
    // 禁止修改類聲明的變量
    "no-class-assign":2,
    // 不允許箭頭功能,在那里他們可以混淆的比較
    "no-confusing-arrow":0,
    // 禁止修改 const 聲明的變量
    "no-const-assign":2,
    // 禁止類成員中出現(xiàn)重復(fù)的名稱
    "no-dupe-class-members":2,
    // 不允許復(fù)制模塊的進(jìn)口
    "no-duplicate-imports":0,
    // 禁止 Symbol  的構(gòu)造函數(shù)
    "no-new-symbol":2,
    // 允許指定模塊加載時(shí)的進(jìn)口
    "no-restricted-imports":0,
    // 禁止在構(gòu)造函數(shù)中蔓腐,在調(diào)用 super() 之前使用 this 或 super
    "no-this-before-super": 2,
    // 禁止不必要的計(jì)算性能鍵對(duì)象的文字
    "no-useless-computed-key":0,
    // 要求使用 let 或 const 而不是 var
    "no-var": 0,
    // 要求或禁止對(duì)象字面量中方法和屬性使用簡(jiǎn)寫語(yǔ)法
    "object-shorthand": 0,
    // 要求使用箭頭函數(shù)作為回調(diào)
    "prefer-arrow-callback":0,
    // 要求使用 const 聲明那些聲明后不再被修改的變量
    "prefer-const": 0,
    // 要求在合適的地方使用 Reflect 方法
    "prefer-reflect":0,
    // 要求使用擴(kuò)展運(yùn)算符而非 .apply()
    "prefer-spread":0,
    // 要求使用模板字面量而非字符串連接
    "prefer-template":0,
    // Suggest using the rest parameters instead of arguments
    "prefer-rest-params":0,
    // 要求generator 函數(shù)內(nèi)有 yield
    "require-yield":0,
    // enforce spacing between rest and spread operators and their expressions
    "rest-spread-spacing":0,
    // 強(qiáng)制模塊內(nèi)的 import 排序
    "sort-imports":0,
    // 要求或禁止模板字符串中的嵌入表達(dá)式周圍空格的使用
    "template-curly-spacing":1,
    // 強(qiáng)制在 yield* 表達(dá)式中 * 周圍使用空格
    "yield-star-spacing":2

},
"plugins":[
"react"
]
}

Sublime配置

安裝插件
PC:Ctrl+shift+p
Mac:Cmd+shift+p
輸入:pci矩乐,選擇Package Control:install package
輸入SublimeLinter進(jìn)行安裝
輸入SublimeLinter-contrib-eslint進(jìn)行安裝

default path設(shè)置

Preferences -> Package Settings -> Sublime Linter.sublime-settings
,添加代碼:

"paths": { 
            "osx": [ 
                "/usr/local/lib" 
            ] 
        }, 
        "python_paths": { 
            "osx": [ 
                "/usr/local/lib" 
            ] 
        }, 

參考文章

Sublime Text3關(guān)于react的插件——react語(yǔ)法提示&代碼格式化

Sublime Text 3 搭建 React.js 開發(fā)環(huán)境

詳解 ESLint 規(guī)則回论,規(guī)范你的代碼

Sublime text3 jsx支持(eslint)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末散罕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子傀蓉,更是在濱河造成了極大的恐慌欧漱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葬燎,死亡現(xiàn)場(chǎng)離奇詭異误甚,居然都是意外死亡缚甩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門窑邦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)擅威,“玉大人,你說(shuō)我怎么就攤上這事冈钦〗即裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵派继,是天一觀的道長(zhǎng)宾袜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)驾窟,這世上最難降的妖魔是什么庆猫? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绅络,結(jié)果婚禮上月培,老公的妹妹穿的比我還像新娘。我一直安慰自己恩急,他們只是感情好杉畜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衷恭,像睡著了一般此叠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上随珠,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天灭袁,我揣著相機(jī)與錄音,去河邊找鬼窗看。 笑死茸歧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的显沈。 我是一名探鬼主播软瞎,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拉讯!你這毒婦竟也來(lái)了涤浇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魔慷,失蹤者是張志新(化名)和其女友劉穎芙代,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盖彭,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纹烹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年页滚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铺呵。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裹驰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出片挂,到底是詐尸還是另有隱情幻林,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布音念,位于F島的核電站沪饺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闷愤。R本人自食惡果不足惜整葡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讥脐。 院中可真熱鬧遭居,春花似錦、人聲如沸旬渠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)告丢。三九已至枪蘑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岖免,已是汗流浹背腥寇。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觅捆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓麻敌,卻偏偏與公主長(zhǎng)得像栅炒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子术羔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容