Compare commits

...

7 Commits
0.2.6 ... 0.2.8

Author SHA1 Message Date
fengmk2
ffcb0d669a Release 0.2.8 2014-01-14 10:14:56 +08:00
dead_horse
81ca81d578 Merge pull request #150 from cnpm/download-link
add download link for package page
2014-01-13 18:11:22 -08:00
fengmk2
803f6d42f8 dont show err stack on test env 2014-01-14 09:59:39 +08:00
fengmk2
5366f16bcb add download link for package page 2014-01-14 09:49:15 +08:00
fengmk2
ab18e49131 Release 0.2.7 2014-01-13 21:53:55 +08:00
fengmk2
3c874244a7 Merge pull request #149 from cnpm/issue148-shasum
add shasum when nfs.upload and hfs.uploadBuffer, fixed #148
2014-01-13 05:52:18 -08:00
dead_horse
d463b09c81 add shasum when nfs.upload and hfs.uploadBuffer, fixed #148 2014-01-13 21:50:22 +08:00
12 changed files with 61 additions and 18 deletions

View File

@@ -1,4 +1,15 @@
0.2.8 / 2014-01-14
==================
* dont show err stack on test env
* add download link for package page
0.2.7 / 2014-01-13
==================
* add shasum when nfs.upload and hfs.uploadBuffer, fixed #148
0.2.6 / 2014-01-13
==================

View File

@@ -9,12 +9,13 @@ cnpmjs.org
## What is this?
Private npm registry and web for Enterprise, base on MySQL and Simple File Store.
Private npm registry and web for Enterprise, base on MySQL and [Simple Store Service](https://github.com/cnpm/cnpmjs.org/wiki/NFS-Guide).
@[JacksonTian](https://github.com/JacksonTian/) had a talk about [private npm](https://speakerdeck.com/jacksontian/qi-ye-ji-node-dot-jskai-fa).
![cnpm](https://docs.google.com/drawings/d/12QeQfGalqjsB77mRnf5Iq5oSXHCIUTvZTwECMonqCmw/pub?w=480&h=360)
## Install
```bash

View File

@@ -71,6 +71,7 @@ var config = {
debug: false
},
registryHost: 'r.cnpmjs.org',
sourceNpmRegistry: 'http://registry.npmjs.org',
enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm
admins: {

View File

@@ -349,8 +349,13 @@ exports.upload = function (req, res, next) {
});
}
shasum = shasum.digest('hex');
var key = common.getCDNKey(name, filename);
nfs.upload(filepath, {key: key, size: length}, function (err, result) {
var options = {
key: common.getCDNKey(name, filename),
size: length,
shasum: shasum
};
nfs.upload(filepath, options, function (err, result) {
// remove tmp file whatever
fs.unlink(filepath, utility.noop);
if (err) {
@@ -518,9 +523,12 @@ exports.addPackageAndDist = function (req, res, next) {
shasum = crypto.createHash('sha1');
shasum.update(tarballBuffer);
shasum = shasum.digest('hex');
var key = common.getCDNKey(name, filename);
nfs.uploadBuffer(tarballBuffer, {key: key}, ep.done('upload'));
var options = {
key: common.getCDNKey(name, filename),
shasum: shasum
};
nfs.uploadBuffer(tarballBuffer, options, ep.done('upload'));
});
ep.on('upload', function (result) {

View File

@@ -20,10 +20,12 @@ var semver = require('semver');
var marked = require('marked');
var gravatar = require('gravatar');
var humanize = require('humanize-number');
var config = require('../../config');
var Module = require('../../proxy/module');
var down = require('../download');
var sync = require('../sync');
var Log = require('../../proxy/module_log');
var setDownloadURL = require('../../lib/common').setDownloadURL;
exports.display = function (req, res, next) {
var params = req.params;
@@ -81,6 +83,8 @@ exports.display = function (req, res, next) {
download[k] = humanize(download[k]);
}
setDownloadURL(pkg, req, config.registryHost);
res.render('package', {
title: 'Package - ' + pkg.name,
package: pkg,

View File

@@ -6,7 +6,7 @@
## What is this?
> Private npm registry and web for Enterprise, base on MySQL and Simple File Store.
> Private npm registry and web for Enterprise, base on MySQL and [Simple Store Service](https://github.com/cnpm/cnpmjs.org/wiki/NFS-Guide).
@[JacksonTian](https://github.com/JacksonTian/) had a talk about [private npm](https://speakerdeck.com/jacksontian/qi-ye-ji-node-dot-jskai-fa).
@@ -16,7 +16,7 @@
## Registry
* Our public registry: [registry.cnpmjs.org](http://registry.cnpmjs.org)
* Our public registry: [r.cnpmjs.org](http://r.cnpmjs.org), syncing from [registry.npmjs.org](http://registry.npmjs.org)
* Current [cnpmjs.org](/) version: <span id="app-version"></span>
<table class="downloads">
@@ -119,13 +119,13 @@ $(function () {
alias it:
```bash
alias cnpm="npm --registry=http://registry.cnpmjs.org \
alias cnpm="npm --registry=http://r.cnpmjs.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=http://dist.u.qiniudn.com \
--userconfig=$HOME/.cnpmrc"
#Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=http://registry.cnpmjs.org \
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=http://r.cnpmjs.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=http://dist.u.qiniudn.com \
--userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
@@ -139,7 +139,7 @@ $ npm install cnpm -g
### install
Install package from [registry.cnpmjs.org](http://registry.cnpmjs.org). When isntall a package or version not exist, it will try to install from official registry([registry.npmjs.org](http://registry.npmjs.org)), and sync this package to cnpm in the backend.
Install package from [r.cnpmjs.org](http://r.cnpmjs.org). When isntall a package or version not exist, it will try to install from official registry([registry.npmjs.org](http://registry.npmjs.org)), and sync this package to cnpm in the backend.
```
$ cnpm install [name]

View File

@@ -29,11 +29,12 @@ exports.getCDNKey = function (name, filename) {
return '/' + name + '/-/' + filename;
};
exports.setDownloadURL = function (pkg, req) {
exports.setDownloadURL = function (pkg, req, host) {
if (pkg.dist) {
host = host || req.headers.host;
pkg.dist.tarball = util.format('%s://%s/%s/download/%s-%s.tgz',
req.connection.encrypted ? 'https' : 'http',
req.headers.host, pkg.name, pkg.name, pkg.version);
host, pkg.name, pkg.name, pkg.version);
}
};

View File

@@ -1,7 +1,7 @@
{
"name": "cnpmjs.org",
"version": "0.2.6",
"description": "Private npm registry and web",
"version": "0.2.8",
"description": "Private npm registry and web for Enterprise, base on MySQL and Simple Store Service",
"main": "index.js",
"scripts": {
"test": "make test-all",

View File

@@ -422,8 +422,12 @@ SyncModuleWorker.prototype._syncOneVersion = function (versionIndex, sourcePacka
return ep.emit('error', err);
}
var key = common.getCDNKey(sourcePackage.name, filename);
nfs.upload(filepath, {key: key, size: dataSize}, ep.done('uploadResult'));
var options = {
key: common.getCDNKey(sourcePackage.name, filename),
size: dataSize,
shasum: shasum
};
nfs.upload(filepath, options, ep.done('uploadResult'));
});
}));

View File

@@ -65,9 +65,9 @@ app.use(function (req, res, next) {
app.use(function (err, req, res, next) {
err.url = err.url || req.url;
logger.error(err);
if (process.env.NODE_ENV !== 'test') {
console.error(err.stack);
logger.error(err);
}
if (config.debug) {
return next(err);

View File

@@ -81,8 +81,10 @@ app.use(urlrouter(routes));
app.use(function (err, req, res, next) {
err.url = err.url || req.url;
console.error(err.stack);
logger.error(err);
if (process.env.NODE_ENV !== 'test') {
console.error(err.stack);
}
if (config.debug) {
return next(err);
}

View File

@@ -192,6 +192,17 @@
</td>
</tr>
<% } %>
<% if (package.dist && package.dist.tarball) { %>
<tr>
<th>Download</th>
<td>
<a class="downloadlink" target="_blank" href="<%= package.dist.tarball %>">
<%= package.dist.tarball %>
</a>
</td>
</tr>
<% } %>
</table>
<div class="details">