- fix: should remove unpublished version on ModuleAbbreviated too (#1192)
- docs: Dockerized cnpmjs.org configuration with installation guide (#1191)
- fix: add missing publish_time property on package list api (#1185)
- feat: add globalHook on config (#1177)
- fix: TypeError caused by invalid engines property (#1151)
- test: add new test for application/vnd.npm.install-v1+json request
- fix: should auto sync missing deprecated property (#1167)
- fix: add missing deprecated on abbreviated meta (#1165)
- fix: only get from package_readme table
- chore: start 3.x
- fix: ignore sync npm registry status 502
- feat: remove readme from package
- feat: [BREAKING_CHANGE] support abbreviated meta
- feat: need to sync sourceNpmRegistry also (#1153)
- docs: change user.json to utf8mb4
- fix: should get package from orginal registry when package is unpublished (#1130)
- fix: should auto sync un-deprecate message (#1105)
- fix: try to use the best repository url (#1102)
- feat: keyword search with limit to support keywords > 100 (#1097)
- fix: support downloads total on scope package (#1088)
- fix: try to sync from official replicate (#1076)
- feat: add change password script (#1070)
- test: skip always fail tests
- test: add node v7
- feat: show more sync info
- fix: ignore long package name on unpublished sync (#1067)
- fix: add publish_time for private packages (#1061)
- feat: make snyk.io url configable (#1058)
- fix: try to use config.registryHost first on setDownloadURL (#1044)
- refactor: refine publishable's code (#1022)
- feat: admin can do everything (#1021)
- feat: return dist-tag on package registry (#1020)
- chore(package): update supertest to version 2.0.0 (#1004)
- feat: enable maxrequests middleware (#1003)
- fix: getModuleByRange don't list all packages (#990)
- fix: should show new version package count (#984)
- fix: make sure chagnes stream destroy (#982)
- chore(package): update semver to version 5.2.0 (#978)
- deps: use ^ instead of ~ (#976)
- chore(package): update mini-logger to version 1.1.1 (#973)
- fix: logger seperator should be one EOL (#972)
- feat: add security check badge for public package (#971)
- fix: should sync missing public scoped package on install (#946)
- chore(package): update bytes to version 2.4.0 (#943)
- userService (#926)
- chore(package): update should to version 8.4.0 (#928)
- chore(package): update humanize-ms to version 1.2.0 (#927)
- chore(package): update kcors to version 1.2.1 (#918)
- chore(package): update urllib to version 2.9.0 (#898)
- feat: show tarball url on package page (#894)
- chore(package): update koa-mock to version 1.6.1 (#891)
- fix: change logo url to a better https source
- fix: http://cnpmjs.org/package/fms pre style (#739)
- fix: don't sync constructor package on exists mode (#883)
- Update utility to version 1.7.0 🚀
- chore: update sponsor link
- fix: use better diff time to check sync status
- Update sequelize to version 3.21.0 🚀
- chore(package): update agentkeepalive to version 2.1.0
- chore(package): update pg to version 4.5.2
- fix: override antd for ul & ol list number & icon.
- refactor: add more ua info on syncer
- feat: only admin can unpublish
- chore(package): update gravatar to version 1.5.0
- chore(package): update sequelize to version 3.20.0
- fix: fix save download count unqiue constraint error
- chore(package): update moment to version 2.12.0
- fix: only send warning email if no any sync data after 24h
- chore(package): update kcors to version 1.1.0
- chore(package): update koa to version 1.2.0
- chore(package): update urllib to version 2.8.0
- fix: convert
*
to latest tag - deps: upgrade deps and remove node 2.0.0 support
- doc: update sponsors on readme
- fix: update copyright year
- doc: fix disturl typo
- deps: [email protected]
- fix(semver): when have invalid version(#817)
- test: fix all test cases
- test: fix unpublish
- test: add complex range test case
- feat: support semver(#816)
- feat: list & show support jsonp
- chore(package): update urllib to version 2.7.0
- Delete install.md
- fix: source registry is not cnpm, ignore check status
- feat(sync): monitor sync status
- chore(package): update agentkeepalive to version 2.0.3
- fix SequelizeDatabaseError: ER_NO_SUCH_TABLE: Table 'qnpm.total' doesn't exist\nreproduce this bug:\nthe first startup of cnpmjs.org
- chore(package): update moment to version 2.11.0
- chore(package): update xss to version 0.2.10
- chore(package): update pg-hstore to version 2.3.2
- chore(package): update mini-logger to version 1.1.0
- chore(package): update urllib to version 2.6.0
- fix: row.package will json parse error
- remove bluebird
- chore(package): update utility to version 1.6.0
- chore(package): update bluebird to version 3.0.6
- fix: SequelizeDatabaseError
- fix(dist_tag): disable delete latest tag
- feat: count total private pkgs
- fix: use isoweek. a week start from monday
- chore(package): update xss to version 0.2.8
- chore(package): update semver to version 5.1.0
- test: add node v5
- feat(sync): sync deleted user
- Update show.js
- chore(package): update bytes to version 2.2.0
- do not sync inner username
- gzip static file
- chore(package): update bytes to version 2.1.0
- chore(package): update is-type-of to version 1.0.0
- Update static.js
- chore(package): update cfork to version 1.4.0
- chore(package): update bluebird to version 3.0.5
- fix: improve registry index page performance with cache
- Configable badge URL prefix.
- chore(package): update koa-mock to version 1.5.0
- chore(package): update urllib to version 2.5.0
- chore(package): update co to version 4.6.0
- chore(package): update semver to version 5.0.3
- feat(registry): add package's dependents api
- fix: show package's dependents
- chore(package): update utility to version 1.5.0
- chore(package): update bluebird to version 2.10.2
- refactor: remove gnode
- deps: upgrade giturl
- Some fixes
- Add dev dependencies.
- Package page fix.
- refactor: add more sync log
- Add mock data.
- refactor: add more sync log
- Fix sidebar overflow.
- Merge pull request #680 from ibigbug/ant-design
- Clean code.
- Indent.
- chore(package): update debug to version 2.2.0
- chore(package): update should to version 7.1.0
- chore(package): update koa to version 1.1.0
- Remove default adBanner.
- Package pages.
- Common styles.
- search page.
- Sync page.
- Profile page antd style.
- Unpublished pkg page style.
- Add page title for unpubed pkg.
- Index page style use antd.
- chore(package): update pg to version 4.4.2
- chore(package): update cfork to version 1.3.1
- chore(package): update moment to version 2.10.6
- feat(badge): Use qiniu cdn
- test: use istanbul
- pref: move out try/catch block
- fix: support nfs.url is generator
- feat: list packages by username
- test: use codecov
- feat(badge): support custom subject
- fix(sync): add recover logic
- feat(sync): add sync scripts
- fix: only sync update packages
- fix: support new array and old map format both
- fix: /-/all/since had been redirect to /-/all/static/today.json
- fix(list): let koa-etag to caculate the etag
- fix: sync public scope package download url is wrong
- fix: default registry change to taobao registry
- fix(syncer): sync worker pkg null bug
- feat(web): add downloads badge
- fix: fix private scope package detect
- fix: dont sync if upstream is npm registry
- fix(sync): support sync public scope package
- test: fix fails tests
- fix: ignore 503 server error
- fix: ignore sync 503 server error
- feat(web): search support jsonp
- fix function name
- fix: real download as stream
- add custom ad banner config
- add sponsors: ucloud.cn
- fix small typo
- feat(urllib): support http_proxy
- force using https links
- fix(markdown): filter xss after markdown render
- feat(database): support PostgreSQL
- feat: support always-auth
- fix mysql select args = [] bug
- fix #597 sequelize raw query.
- fix(markdown): hotfix markdown-it cpu problem
- feat: upgrade to co4
- use kcors fixes #594
- docs: Deploy a private npm registry in 5 minutes
- refactor(config): move application data to ~/.cnpmjs.org/
- fix(sync): make get popular pakcage faster
- feat(sync): web page also redirect to npm www
- refactor(config): make syncModel to none by default
- test: fix admin can not publish non-scoped package test cases
- docs: add chinese mirror link
- fix: admin can not publish non scoped package on "none" sync model
- feat(sync): enable none syncModel proxy all public packages
- fix: ignore username start with " or '
- fix(bin): fix stop not work on iojs
- feat(syncer): add hostname ua
- fix(web): remove pkg.contributors logic
- fix xss tests
- fix(markdown): revert marky-markdown
- feat(middleware): CORS headers for GET and HEAD requests
- fix(readme): fix index page markdown
- feat(markdown): use npm same markdown parser
- feat(download): support download redirect to nfs
- feat(syncer): request npm registry with gzip
- change(sync): remove dist syncer
- feat(registry): add dist tag api
- refactor(common): remove redis store
- hotfix reame render error, pin xss
- fix registry user auth api
- fix(markdown): readme.md allow scripts
- fix(style) flexbox compatibility for both chrome and firefox (@afc163)
- feat(sync): default sync exist packages
- install sync dont check
enablePrivate
- fix(markdown): filter xss readme before markdown render
- fix(markdown): use markdown-it
- add userService options on config
- add upload to nfs sync info log
- fix(markdown): use marked instead of remarkable
- fix(package): pkg.readme is not a string, dont remarkable it
- feat(sync): sync user profile
- refactor(download): try to use nsf.url() first
- use all for full downloads
- refactor(download_total): optimize download total
- fix sqlite raw sql return datetime is string format
- fix(download_total): change column date to DateTime
- fix(services/download_total): fix download_total slow sql on
date >= $start and date <= $end
- fix(markdown): replace marked use remarkable
- fix(services): need to detect instance isDirty or not before save()
- add download API, closes #529
- fix missing home page title (@rockdai)
- Fix typo in view/web/package.html (@LoicMahieu)
- fix xss on title
- feat(badge): support badge image url with tag
- hotfix package.html typo. Closes #521
- Add editorconfig
- fix(web/package): package name to long cause style problem fix
- fix(css): use github-markdown-css for markdown body
- feat(mock): use koa-mock for front end dev
- fix(registry): add missing /-/short api
- zoom sync link
- new design for package page
- image max width, fixed #505
- feat(middleware): block Ruby user-agent
- fix(sync): should not sync package when maintainers sort change
- fix(package): detect package is private or not
- fix(maintainer): fix missing maintainers
- fix(sync): add missing syncUpstreamFirst argument
- refactor(sync_worker): only sync request need to sync upstream first
- fix(sync_worker): make sure end event will emit
- fix: mv readme.md script to public/js/readme.js
- fix(sync): hotfix co uncaughtException
- feat(sync): sync python dist
- pin autod@1
- remove useless comment
- refactor models/_module_maintainer_class_methods.js
- ungrade koa-markdown to use remarkable, close #482
- fix(module_log): limit module sync log size to 1MB
- refactor(config): remove adaptScope config key
- chore(Makefile): $ make install-production
- fix(sequelize): show warnning message when using old config.js
- docs(readme): Migrating from 1.x to 2.x
- feat(sync): add min sync interval time detect
- refactor(dispatch): remove unused codes
- use sequelize to connect database
- fix typo in sync popular, fix #477
- Merge pull request #475 from KidkArolis/configurable-short-registry-url
- If sourceNpmRegistry is cnpm - use it in getShort
- Merge pull request #472 from cnpm/issue468-upon
- fix test label
- add sync popular modules, close #468
- add sendmail test script
- make test on travis faster
- ensure not sync user also has his own package names
- add v1.6.x-upgrade.sql
- save npm original package maintainers to npm_module_maintainer table. fixed #464
- use simple 404
- list user all packages api. fixed #462
- add node-dev: $ make dev
- always start sync worker
- update node mailer
- update autod
- fix sync in web
- sync upstream only the first package. make sync devDependencies optionsal, default is false
- add some comment, default sourceNpmRegistryIsCNpm to true
- format sync log
- support sync upstream first. fixed #451
- support im url on user profile page; update bootstrap to 3.2.0
- search support case insensitive, close #450
- add config._syncInWeb, close #448
- show maintainers when publish 403. fixed #430
- no attachment for html
- dist sync document too. fixed #420
- badge version support 1.0.0-beta1. fixed #440
- alias /:name/-/:file to /:name/download/:file. fixed #439
- change default source registry to taobao's registry
- Merge pull request #435 from cnpm/bluebird
- add bluebird
- bump fs-cnpm
- Merge pull request #434 from cnpm/agent-stat
- show agent sockets stat. fixed #433
- update readme
- remove pic in readme
- fix login error status
- different version, different color badge, add version badge. fixed #427
- add download and node version badge
- remove unused eventproxy
- add custom config in tools/sync_not_exist.js
- add sync not exist tools, close #424
- use gittip instand of alipay. close #425
- update registry api doc
- ignore config/config.js
- Merge pull request #421 from cnpm/qn-cnpm
- fix test case
- use fs-cnpm
- fix test
- use qn-cnpm
- bump cfork
- bump koa
- deprecated bug fix and support undeprecate
- show deprecated message
- Sync deprecated field if it missing
- Support $ cnpm deprecate [pkgname]@[version] "message". fixed #415
- Add user to maintainers when publish. fixed #395
- List all npm registry api. close #413
- limit list since
- change deps by "~"
- use cfork to make sure worker fork and restart
- handle master uncaughtException. fixed #403
- WTF [email protected] missing
- unpublish pkg@version bug hotfix. fixed #400
- hotfix #399 use not exists
- add maintaining packages in user page
_fix auth error response message
- Merge pull request #398 from cnpm/fix-auth
- hot fix auth error
- add private package list
- hotfix save custom user bug
- Handle user service auth throw custom error message
- add test for config private packages
- add config.privatePackages
- add more comments in config/index.js
- scopes init mv to services/user.js
- show user more profile
- registry show user support custom user service
- support custom user service for user auth
- remove session middleware
- add DefaultUserService
- check scopes in module.getAdapt
- test public mode, fix some logic, close #382
- move scope.js into publishable.js, add forcePublishWithScope
- config.scopes not exist, means do not support scope
- add assert scope middleware
- fix unpublished info missing maintainers cause TypeError
- show unpublished info on web package page. fixes #381
- Only private package support default scoped. fixed #378
- adapt default scpoe in /@:scope/:name/:version
- hot fix download
- fix default scope detect
- add more test cases
- support default @org. close #376
- hotfix redis init error
- support "scoped" packages. close #352
- use safe jsonp
- Stop support old publish flow. fix #368
- update SQLs
- use sync_info and sync_error categories
- add categories to loggers. fix #370
- fix get latest tag always not exists bug
- support
npm publish --tag beta
. fix #366 - use mini-logger and error-formater
- use module_maintainers on GET /pakcage/:name page
- use new module_maintainers on GET /:name
- admin user should never publish to other user's packages. fix #363
- Add a new table for module-maintainers.
- gravatar use https
- support https
- hot fix removeTagsByNames()
- fix _rev not exists
- sync unpublished on GET /sync/:name
- fix sync response 204
- add links in History.md
- bump koa
- fix test-cov
- bump koa and should
- fix attack on /-/all/since?stale=update_after&startkey=2 close #336
- bump thunkify-wrap
- bump koa-middlewares
- remove outputError
- bump dependencies
- use svg badge
- add package/notfound page
- add dist mirror link to home page
- fix sync listdiff and add more test cases
- filter /nightlies/*
- use koa setter instead of set()
- add more info on error email
- add sync dist to sync/index.js
- show dist page
- sync dist file and save it to database
- disable gzip before #335 has fix
- Merge pull request #334 from cnpm/fix-permission
- add permission check to /:name/:tag
- Merge pull request #333 from cnpm/issue332-tag
- fix space
- add put /:name/:tag, close #332
- sync interval config
- fix fav ico and show pkg size on pkg info page. fix #318
- sync work sync one done must wait for a defer.setImmediate. fix #328
- bump dep versions
- if download tarball 404, throw err better than ignore it. fixed #325
- refator sync
- hotfix, close #321
- hotfix, close #319
- support custom web home page
- npm get short only can read from cnpm now
- if using reverted proxy like nginx, only binding on local host
- fix redis detect logic
- fix sync status code error
- fix test cases to run on local machine
- add contribute guidelines
- use local mysql for dev env. fix #308
- use copy to
- use koa-compress and koa-conditional-get
- maintainers is string, fix #301
- fix npm adduser update 409 bug
- fix multiline coverage
- show package engines. fixed #280
- dont sync local package field. fix #295
- fix result.successes not exist error
- fix search list
- add simple request for listall
- only return package name in /-/all and /-/all/since, fixed #291
- refine docs foloder
- use module gmt_modified as etag. fix #288
- fix typo, remove unused config in package.json
- web page only list cnpm registry related info
- use generator in qnfs
- use common.isMaintainer, fixed #283
- update dependencies
- use co-mocha for test, fixed #279
- update thunkify-wrap, breaking change in thunkify-wrap
- refactor SQLs by using multiline
- use multiline to refactor sqls
- ignore contributors
- Only /_session request send the authSession. fixed #223
- sync npm user info when maintainers and contributors not exists. fixed #82
- save npm user to mysql
- password salt always be randoms
- remove session access in /name and /name/version, fixed #274
- fix update maintainer session error
- update koa-middlewares
- fix test, fix sync_by_install
- use defer session
- Support npm owner|author add [name] [pkg]. fixed #271
- custom user-agent
- use co-urllib instead of thunkify urllib; fix mock http.request test cases
- request limit custom message
- add config.redis check
- add koa-limit, fixed #267
- update middlewares, fixed missing charset bug #264
- show worker die date time
- update to [email protected]
- hotfix for star user
- fix yield gather, sync missing deps even no missing versions
- fix return versions
- fix makefile, remove eventproxy
- refactor sync_module_worker
- add make test-dev, fixed #259
- change npm.js to generator
- update urllib, proxy/npm.js use generator
- sync_all and sync_exist to generator
- change function to generator
- need node >= v0.11.9
- install missing package should sync it from source npm. fixed #252
- npm publish dont contains .jshint*
- npm test run jshint
- Add jshint check: $ make jshint
- use
yield next
instead ofyield next
- replace dist.u.qiniudn.com with cnpmjs.org/dist
- redirect /dist/xxx.tgz => http://dist.u.qiniudn.com/xxx.tgz fixed #249
- redirect /name to /package/name when /name is 404. fixed #245
- Add missing properies and sync missing star users. fixed #235
- add cov
- use istanbul run test coverage
- gzip support. fix #241
- readme spelling patch (@stanzheng)
- default readme to null, fixed #233
- remove readme in versions
- Merge pull request #232 from cnpm/host-hotfix
- get request host from request.headers
- Merge pull request #231 from cnpm/bug-fix
- fix deps display bug#230 and nsf.url TypeError#229
- update koa-sess and koa-redis
- fix sync all test
- remove nfs.downloadStream first, fix tmppath error
- fix fengmk2/giturl#1 bug
- add etag fixed #224
- travis ci install on source npm
- fix typo and dont sync not exists pkgs
- use koa-middlewares
- fix signed cookie not work on [email protected]; node --harmony-generators
- fix opensearch test case
- update koa bodyparser
- logger.error(err) should send err stack email notice
- json body parse limit and bug fix.
- fix sync 404 reason not clear
- all controllers to koa
- controller/web/user.js to koa
- change web connect to koa
- use outputError
- use yield exports.addPackageAndDist.call(this, next);
- add end() when ws write end
- fix yield coWrite
- fix all the test of registry module.test.js
- convert registry/module.js to koa type
- fix auth middleware
- finish registry user controller koa and update mm to support thunkify. fixed #196
- change controllers/user.js to koa
- thunkify all proxy
- convert all middlewares to koa type
- change regsitry sync to koa
- addd koa-jsonp, koa-bodyparser, fix / controller
- first koa run registry home page /
- Merge pull request #212 from cnpm/fix-sync-404
- return friendly 404 reason
- Merge pull request #211 from cnpm/bug-fix
- override json limit to default 10mb. fixed #209
- fix #210 addPackageAndDist package version detect bug
- support json result in search, fixed #189
- npm publish also need to add deps
- max handle number of package.json
dependencies
property - Dependents support. fixed #190
- fix if delete all the versions
- refactor remove module, fixed #186
- system admin can add, publish, remove the packages. fixed #176
- add keyword and search support keyword. #181
- refactor code styles on package.html
- nav-tabs e.preventDefault
- Show registry server error response. fixed #178
- nav-tabs for package.html (@4simple)
- hotfix sync missing dependencies and readmes
- fix sync readme error, fixed #174
- add updateReadme in module
- npm install no need to check authorization header. fixed #171
- Support gitlab git url to display and click. fixed #160
- fix redis crash
- custom logo url
- hotfix layout bug
- fix publish-time bug
- add publish_time to debug
- add make autod
- update publish_time, fixed #163
- markdown tmpl not support footer, need to wrap on app start
- add footer and npm client name customable
- package page contributor link to search, default is true
- fix #155 Content-Disposition wrong.
- support startkey=c and startkey="c"
- support couch db search api. fixed #153
- fix fork me image link
- support sync by query.name
- dont show err stack on test env
- add download link for package page
- add shasum when nfs.upload and hfs.uploadBuffer, fixed #148
- support custom session store, fixed #146
- add download timeout and unit test
- use downloadStream() first
- nfs download to a writeable stream.
- set main script to index.js, fixed #142
- Dont show sync button on private package
- Sync package as publish with no deps. fixed #138
- keep compatibility
- qnfs upload only callback a url
- compat remove package
- set tarball url
- new npm publish in one request, add _publish_in_cnpm
- support unsure name ufs
- contributors maybe a object
- Object # has no method 'forEach' fixed #134
- support custom config as a module, fixed issue #132
- support npm new publish flow. fixed #129
- add toString and constructor to test admin
- fix #119 hasOwnProperty check admin bug.
- remove to lower case
- fix #127 execSync and execsync.
- add contributors list on package page
- mv blanket to config
- sync typeerror fix #statusCode
- add disturl
- fix #122 admin security bug
- fixed #121, let pkg 404 as success
- fix sql insert error
- fix typos
- add favicon
- Fix auth middleware bug (@alsotang)
- make sure all packages name are lower case
- select ids from tag
- fix nodejsctl
- fix #112 missing versions and time no sync
- remove restart command
- fix sync missing packages error
- fix web/readme.md, add install
- fix #109 pkg no times and no versions bug.
- fix times not exists canot sync bug. fixed #101
- support npm run command
- remove before_install and install in travis, fixed #102
- split all sub queries, fixed #104
- fix doc, fixed #103
- fix search too slow.
- dont email sync log level info
- only sync missing packages at first time
- update dependencies
- sync all will sync all the missing packages, fixed #97
- add sync title
- add favicon. fixed #69
- refine sync page, fiexd #70
- add app version
- add test for sync
- refine sync page
- registry and web all use controllers/sync.js
- sync from web, fixed #58
- saving missing descriptions
- add package download info. fixed #63
- add avatar
- use dependecies, fixed #issue62
- support open search, fixed #60
- make sure publish_time and author is same to source npm registry. fixed #56
- add test for search
- add a simple search by mysql like
- fix This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery. fixed #54
- update install doc, use nodejsctl to start
- must add limit on list by author sql
- fix sql, change test to fit my local database, fixed #46
- use registry.cnpmjs.org
- add install document and total package info on home page. fix #42
- add module_id to tag table. #46
- skip error version. fixed #43
- sync may make a user do not exist in database, but have modules in registry
- add user page
- fix set license
- ignore 404 on sync. fixed #39
- fix module page, add test
- update urllib to 0.5.5
- version and tag
- add module page
- fix download url
- first get tag, then try version
- support sync triggle by install, finish #31
- addTag error return 500
- just one download field
- add download total info on home page
- add download count
- versions empty and also check missing tags
- remove tags on unpublish
- add module tag. fix #6
- add [done] flag to check sync done on client
- get sync log #29
- fix test in module
- rm tmp file on down request error
- add time for debug str
- fix pkg not exists null bug
- use sync module woker to handle sync process. fixed #19
- if private mode enable, only admin can publish module
- add alias in readme
- fix sql, add sort by name
- fix sql
- add api to support npm search and auto completion
- add npm and cnpm image
- add registry total info on home page
- fix mods bug in module.removeAll, change module.update => module.removeWithVersions
- add test, fix bug. fixed #18
- spoort unpublish
- add web page index readme
- switchable nfs #21
- change file path to match npm file path
- use qn cdn to store tarball file fixed #16
- add GET /:name/:version, fixed #3
- add module controller test cases; fix next module not exists logic bug.
- publish module flow finish #11
- add test for controllers/registry/user.js
- add test for middleware/auth
- add test for proxy/user
- remove index.js
- fix typo
- add redis as session store
- fix nodejsctl mod
- add start time
- add home page
- remove session controller
- adduser() finish fixed #5
- rm app.js and routes.js
- Mock npm adduser server response, fixing #5
- adjust project dir, separate registry and web server
- Init rest frame for cnpmjs.org
- init