cnpm-registry
Private npm registry for Enterprise, base on eggjs
QuickStart
Database
- install mysql and create database
Require: MySQL 5.6.4+
DATETIME(6): Fractional seconds support with up to 6 digits of precision
brew install mysql # macOS
brew service start mysql
mysql -u root -e 'CREATE DATABASE IF NOT EXISTS `cnpm_registry_dev` DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;'
mysql -u root -e 'CREATE DATABASE IF NOT EXISTS `cnpm_registry_unittest` DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;'
What's the difference between utf8_general_ci and utf8_unicode_ci
- install dependencies
npm i
Init database with Migrations
# for local env
npm run db:migrate
# for unittest env
NODE_ENV=test npm run db:migrate
Development
$ npm i
$ npm run dev
$ open http://localhost:7001/
Deploy
$ npm start
$ npm stop
npm scripts
- Use
npm run lint
to check code style. - Use
npm test
to run unit test. - Use
npm run autod
to auto detect dependencies upgrade, see autod for more detail.
Migrations
See http://docs.sequelizejs.com/manual/tutorial/migrations.html
Generate a new migration
node_modules/.bin/sequelize migration:generate --name {name}
Running Migrations
node_modules/.bin/sequelize db:migrate
Undoing Migrations
node_modules/.bin/sequelize db:migrate:undo
FQA
- What's the package name string length limit to 214?
A: And npm allow package name up to 214 characters.
- Why use
CHARSET=ascii
on packagename
andversion
column?
A: MySQL max index length is 767 bytes, if we use
utf8mb4
charset by default, thename
+version
union index key(214 * 4 + 100 * 4 = 1256) will exceed the MySQL index length limit. And Thename
ends up being part of a URL, an argument on the command line, and a folder name. Therefore, thename
can't contain any non-URL-safe characters. So we can useascii
charset to storename
andversion
on MySQL. The max length is 314 bytes.
Development Helpful Documents
MySQL Character Set
Run below command to check all charset in your MySQL
mysql -u root -e 'show character set;';
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
+----------+---------------------------------+---------------------+--------+