Node JS World
Node JS World
Environment
tested on Ubuntu
Install nvm/node/npm/yarn
- nvm : node version manager
- node: node js
- npm: node package manager
# goto the nvm office website and find the latest version, e.g. 0.34.0
# install nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# list remote versions
nvm ls-remote
# install the latest on
nvm install v11.8.0
# use the version
nvm use v11.8.0
# always default to the latest available node version on a shell
nvm alias default node
- yarn: a faster node package manager
# configure repository
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
# install yarn
sudo apt-get update && sudo apt-get install yarn
Yarn
# add a package global
yarn global add create-react-app
# add a package local and save to dependencies
yarn add prismjs
# add a package local and save to devDependencies
yarn add gulp --dev
# add a package local and save to peerDependencies
yarn add prismjs --peer
# add a package local and save to optionalDependencies
yarn add prismjs --optional
React
- installation
# install create-react-app
yard global add create-react-app
# create a react application
npx create-react-app my-app
Development
dependencies vs devDependencies vs peerDependencies vs bundleDependencies
npm install
will get:- dependencies: installed
- devDependencies: installed
- bundelDependencies: indirectly installed via the packed way
- peerDependencies: a warning message
npm install --production
will get:- dependencies: installed
- bundelDependencies: indirectly installed via the packed way
- peerDependencies: a warning message
npm pack
will pack bundelDependencies
when to use devDependencies
- you do not want the package will be installed on the production environment, e.g. testing/utility packages.
when to use bundelDependencies
- you modified a dependency, so you do not want to use the one from npm registry
- you own projects
when to use peerDependencies
- you know there would be multiple incompatible versions, and need customers to solve the dependency manually.
Development Tools
npx: node package runner
babel: a JavaScript compiler.
put in next-gen JavaScript -> Get browser-compatible JavaScript outgulp: a task management
office website- install and start
## Install the gulp command line utility
npm install gulp-cli -g
## Install the gulp package in your devDependencies
## cd <project folder>
npm install gulp --save-dev
## Verify your gulp versions
gulp --help
## new a gulp task file
touch gulpfile.js
ESLint
The pluggable linting utility for JavaScript and JSX
- install and start
# install the eslint package in your devDependencies
yarn add eslint --dev
yarn add eslint-config-react-app --dev
yarn add eslint-plugin-import --dev
yarn add eslint-plugin-flowtype --dev
yarn add eslint-plugin-jsx-a11y --dev
yarn add eslint-plugin-react --dev
yarn add flow-bin --dev
## check version
npm run lint -v
## or ./node_modules/eslint/bin/eslint.js -v
yarn flaw version
- configure eslint
new a project root file: .eslintrc
{
"extends": [
"react-app",
"eslint:recommended",
"plugin:react/recommended"
],
"plugins": [
"react"
],
"settings": {
"react": {
"createClass": "createReactClass",
"pragma": "React",
"version": "detect",
"flowVersion": "0.53"
},
"propWrapperFunctions": [
"forbidExtraProps",
{
"property": "freeze",
"object": "Object"
},
{
"property": "myFavoriteWrapper"
}
],
"linkComponents": [
"Hyperlink",
{
"name": "Link",
"linkAttribute": "to"
}
]
},
"parserOptions": {
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"no-console": "off"
}
}
- disable a rule for a line
// eslint-disable-next-line no-console
- disable a rule for a file
/* eslint-disable no-console */
- disable a rule for the project via package.json
"rules": {
"no-console": "off"
}
- configure flow
# crete .flowconfig
yarn flaw init
edit .flowconfig
[ignore]
.*/node_modules/config-chain/.*
[include]
[libs]
[lints]
all=warn
[options]
[strict]
nonstrict-import
unclear-type
untyped-import
untyped-type-import
unsafe-getters-setters
sketchy-null
- check rules
yarn lint
yarn flaw
- To fix formatting errors, run the following:
yarn lint -- --fix
husky
Git hooks made easy - Husky can prevent bad git commit
, git push
and more
Node JS World的更多相关文章
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Node.js:进程、子进程与cluster多核处理模块
1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...
- Node.js:理解stream
Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...
- Node.js:Buffer浅谈
Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
- Node.js入门(一)
一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- Node.js入门
开始之前,安利一本正在看的书<站在两个世界的边缘>,作者程浩,上帝丢给他太多理想,却忘了给他完成理想的时间.OK,有兴趣的可以看一看. node.js如标题一样,我也是刚开始接触,大家一起 ...
随机推荐
- 【译文】MySQL InnoDB 使用的锁分析
InnoDB 使用的 锁类型 共享锁和排它锁 意向锁 记录锁 间隙锁 Next-key 锁 插入意向锁 AUTO-INC 锁 共享锁和排他锁 InnoDB实现了俩个标准的行级锁,共享锁和排它锁. 共享 ...
- (转)em重建全过程
该问题遇到N次,被郁闷N次,特此记录以备不时之需 由于n久不用em,而本机在公司使用dhcp自动获取ip,导致ip变化,而使em启动报出ora-12514 DBD ERROR: OCIServerAt ...
- 【转】 Android xml中 @和?区别,style和attr小结
引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用? style="?android:attr/progressBarStyleHorizontal" ...
- virtualbox+vagrant学习-2(command cli)-2-vagrant cloud命令--有问题
Cloud https://www.vagrantup.com/docs/cli/cloud.html 命令: vagrant cloud 这是用来管理与vagrant相关的任何东西的命令. 该命令的 ...
- JAVA构造MAP并初始化MAP
第一种方法:static块初始化 public class Demo{ private static final Map<String, String> myMap; static { m ...
- Algorithms: Design and Analysis, Part 1 - Problem Set 1 - Question 5
最后一个图像,用画图软件绘制了一下,自己的直接主观判断还是有些小问题的 注意:最后的灰色的线条会超过橙色的线条
- Spring整合MyBatis(五)MapperScannerConfigurer
摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 目录 一.processPropertyPlaceHolders属性的 ...
- 强连通分量算法·$tarjan$初探
嗯,今天好不容易把鸽了好久的缩点给弄完了--感觉好像--很简单? 算法的目的,其实就是在有向图上,把一个强连通分量缩成一个点--然后我们再对此搞搞事情,\(over\) 哦对,时间复杂度很显然是\(\ ...
- C++中关于配置文件的问题
眼下本人考虑到部门配置文件较多,所以想写个配置文件检測程序. 眼下大致的思路例如以下三部分; 1, 读取配置文件的内容(*.ini). 查找配置文件,代码例如以下 void CDataBaseDlg: ...
- MapReduce -- 好友推荐
MapReduce实现好友推荐: 张三的好友有王五.小红.赵六; 同样王五.小红.赵六的共同好友是张三; 在王五和小红不认识的前提下,可以通过张三互相认识,给王五推荐的好友为小红, 给小红推荐的好友是 ...