Refactor website with new design & structure
@@ -1,45 +1,36 @@
|
||||
###
|
||||
# Crafting Guide - Gruntfile.coffee
|
||||
#
|
||||
# Copyright (c) 2014 by Redwood Labs
|
||||
# Copyright © 2015 by Redwood Labs
|
||||
# All rights reserved.
|
||||
###
|
||||
#
|
||||
|
||||
fs = require 'fs'
|
||||
util = require 'util'
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
LIBRARY_ALIAS_MAPPING = [
|
||||
'./node_modules/backbone/backbone.js:backbone'
|
||||
'./node_modules/jade/runtime.js:jade'
|
||||
'./node_modules/jquery/dist/jquery.js:jquery'
|
||||
'./node_modules/underscore/underscore.js:underscore'
|
||||
'./node_modules/when/when.js:when'
|
||||
EXTERNAL_LIBS = [
|
||||
'backbone'
|
||||
'jquery'
|
||||
'marked'
|
||||
'underscore'
|
||||
'underscore.inflections'
|
||||
'when'
|
||||
'./vendor/email.js:emailjs'
|
||||
]
|
||||
|
||||
LIBRARIES = (s.substring(0, s.indexOf(':')) for s in LIBRARY_ALIAS_MAPPING)
|
||||
ALIASES = (s.substring(s.indexOf(':') + 1) for s in LIBRARY_ALIAS_MAPPING)
|
||||
########################################################################################################################
|
||||
|
||||
module.exports = (grunt)->
|
||||
|
||||
grunt.loadTasks tasks for tasks in grunt.file.expand './node_modules/grunt-*/tasks'
|
||||
|
||||
grunt.config.init
|
||||
browserify:
|
||||
dev:
|
||||
|
||||
compress:
|
||||
static:
|
||||
options:
|
||||
browserifyOptions:
|
||||
debug: true
|
||||
extensions: ['.coffee']
|
||||
transform: ['coffeeify']
|
||||
files: './dist/js/main.js': ['./src/coffee/main.coffee']
|
||||
prod:
|
||||
options:
|
||||
browserifyOptions:
|
||||
extensions: ['.coffee']
|
||||
transform: ['coffeeify']
|
||||
files: './dist/js/main.js': ['./src/coffee/main.coffee']
|
||||
mode: 'gzip'
|
||||
files: [
|
||||
{expand: true, cwd:'./build/static', src:'**/*.css', dest:'./dist/'}
|
||||
{expand: true, cwd:'./build/static', src:'**/*.html', dest:'./dist/'}
|
||||
{expand: true, cwd:'./build/static', src:'**/*.js', dest:'./dist/'}
|
||||
{expand: true, cwd:'./build/static', src:'**/*.json', dest:'./dist/'}
|
||||
]
|
||||
|
||||
coffee:
|
||||
dev:
|
||||
@@ -47,16 +38,30 @@ module.exports = (grunt)->
|
||||
sourceMap: true
|
||||
files: [expand:true, cwd:'./src/coffee', src:'**/*.coffee', dest:'./dist', ext:'.js']
|
||||
|
||||
clean:
|
||||
dist: ['./dist']
|
||||
|
||||
copy:
|
||||
styles:
|
||||
files: [expand:true, cwd:'./src/css', src:'**/*.scss', dest:'./dist/src/css']
|
||||
server_source:
|
||||
files: [
|
||||
{expand:true, cwd:'./src/server', src:'**/*.coffee', dest:'./build/', ext:'.coffee'}
|
||||
]
|
||||
common_source:
|
||||
files: [
|
||||
{expand:true, cwd:'./src/common', src:'**/*.coffee', dest:'./build/', ext:'.coffee'}
|
||||
]
|
||||
assets_build:
|
||||
files: [
|
||||
{expand:true, cwd:'./assets/', src:'**/*', dest:'./build/static/'}
|
||||
]
|
||||
assets_dist:
|
||||
files: [
|
||||
{expand:true, cwd:'./assets/', src:'**/*.mp3', dest:'./dist/'}
|
||||
{expand:true, cwd:'./assets/', src:'**/*.png', dest:'./dist/'}
|
||||
]
|
||||
|
||||
exorcise:
|
||||
dev:
|
||||
files: './dist/js/main.js.map': ['./dist/js/main.js']
|
||||
clean:
|
||||
assets: ['./build/static/data', './build/static/images']
|
||||
build: ['./build']
|
||||
dist: ['./dist']
|
||||
templates: ['./src/client/site/templates.js']
|
||||
|
||||
jade:
|
||||
pages:
|
||||
@@ -64,23 +69,26 @@ module.exports = (grunt)->
|
||||
pretty: true
|
||||
files: [
|
||||
expand: true
|
||||
cwd: './src/jade'
|
||||
src: '*.jade'
|
||||
dest: './dist'
|
||||
cwd: './src/client/site'
|
||||
src: '**/index.jade'
|
||||
dest: './build/static'
|
||||
ext: '.html'
|
||||
]
|
||||
|
||||
templates:
|
||||
options:
|
||||
client: true
|
||||
node: true
|
||||
processName: (f)->
|
||||
f = f.replace './src/jade/templates/', ''
|
||||
f = f.replace '.jade', ''
|
||||
f = f.replace /\//g, '_'
|
||||
return f
|
||||
processName: (path)->
|
||||
pathElements = path.split '\/'
|
||||
while true
|
||||
element = pathElements.shift()
|
||||
break if element is 'site'
|
||||
pathElements.pop()
|
||||
name = pathElements.join '/'
|
||||
name = name.replace '.jade', ''
|
||||
return name
|
||||
files:
|
||||
'./src/coffee/views.js': ['./src/jade/templates/**/*.jade']
|
||||
'./src/client/site/templates.js': ['./src/client/site/**/!(index)*.jade']
|
||||
|
||||
mochaTest:
|
||||
options:
|
||||
@@ -89,28 +97,23 @@ module.exports = (grunt)->
|
||||
reporter: 'dot'
|
||||
require: [
|
||||
'coffee-script/register'
|
||||
'./test/test_helper.coffee'
|
||||
'./src/test_helper.coffee'
|
||||
]
|
||||
verbose: true
|
||||
src: ['./test/**/*.test.coffee']
|
||||
|
||||
rsync:
|
||||
static:
|
||||
options:
|
||||
src: './static/'
|
||||
dest: './dist/'
|
||||
recursive: true
|
||||
src: ['./src/**/*.test.coffee']
|
||||
|
||||
sass:
|
||||
build:
|
||||
all:
|
||||
files:
|
||||
'./dist/css/main.css': ['./src/scss/main.scss']
|
||||
dist:
|
||||
options:
|
||||
sourcemap: 'none'
|
||||
style: 'compressed'
|
||||
'./build/static/main.css': [ './build/imports.scss' ]
|
||||
|
||||
sass_globbing:
|
||||
all:
|
||||
files:
|
||||
'./dist/css/main.css': ['./src/scss/main.scss']
|
||||
'./build/imports.scss': [
|
||||
'./src/client/styles/main.scss'
|
||||
'./src/client/site/**/*.scss'
|
||||
]
|
||||
|
||||
uglify:
|
||||
scripts:
|
||||
@@ -118,46 +121,114 @@ module.exports = (grunt)->
|
||||
maxLineLen: 20
|
||||
files: [
|
||||
expand: true
|
||||
cwd: './dist/js'
|
||||
cwd: './build/static'
|
||||
src: '**/*.js'
|
||||
dest: './dist/js'
|
||||
dest: './build/static'
|
||||
]
|
||||
|
||||
watch:
|
||||
static:
|
||||
files: ['./static/**/*']
|
||||
tasks: ['rsync:static']
|
||||
coffee:
|
||||
files: ['./src/**/*.coffee', './src/**/*.js']
|
||||
tasks: ['browserify:dev', 'exorcise']
|
||||
jade:
|
||||
files: ['./src/**/*.jade']
|
||||
tasks: ['jade:pages', 'jade:templates']
|
||||
assets:
|
||||
files: ['./assets/**/*']
|
||||
tasks: ['copy:assets_build']
|
||||
client_source:
|
||||
files: ['./src/{client,common}/**/*.coffee']
|
||||
tasks: ['browserify:internal']
|
||||
server_source:
|
||||
files: ['./src/{common,server}/**/*.coffee']
|
||||
tasks: ['copy:server_source']
|
||||
jade_pages:
|
||||
files: ['./src/**/index.jade']
|
||||
tasks: ['jade:pages']
|
||||
jade_templates:
|
||||
files: ['./src/**/!(index).jade']
|
||||
tasks: ['jade:templates', 'browserify:internal']
|
||||
sass:
|
||||
files: ['./src/**/*.scss']
|
||||
tasks: ['sass', 'copy:styles']
|
||||
tasks: ['sass']
|
||||
test:
|
||||
files: ['./src/**/*.coffee', './src/**/*.js', './test/**/*.coffee']
|
||||
tasks: ['test']
|
||||
|
||||
grunt.registerTask 'default', 'build'
|
||||
# Compound Tasks ###################################################################################################
|
||||
|
||||
grunt.registerTask 'build', ['rsync', 'sass:build', 'jade', 'copy', 'browserify:dev', 'exorcise']
|
||||
grunt.registerTask 'build', ['jade', 'copy', 'css', 'browserify:external', 'browserify:internal']
|
||||
|
||||
grunt.registerTask 'dist', ['rsync', 'sass:dist', 'jade', 'copy', 'browserify:prod', 'uglify']
|
||||
grunt.registerTask 'css', ['sass_globbing', 'sass']
|
||||
|
||||
grunt.registerTask 'default', ['clean', 'start']
|
||||
|
||||
grunt.registerTask 'deploy:prod', ['build', 'uglify', 'compress', 'copy:assets_dist', 'script:deploy:prod']
|
||||
|
||||
grunt.registerTask 'prepublish', ['clean', 'coffee']
|
||||
|
||||
grunt.registerTask 'start', ['build', 'script:start']
|
||||
|
||||
grunt.registerTask 'test', ['mochaTest']
|
||||
|
||||
# Code Tasks #######################################################################################################
|
||||
|
||||
grunt.registerTask 'browserify:external', "Bundle 3rd-party libraries used in the app", ->
|
||||
grunt.file.mkdir './build/static'
|
||||
done = this.async()
|
||||
|
||||
args = [].concat ("--require=#{lib}" for lib in EXTERNAL_LIBS), [
|
||||
'--outfile=./build/static/external.js'
|
||||
]
|
||||
|
||||
options = cmd:'browserify', args:args
|
||||
grunt.util.spawn options, (error)->
|
||||
console.log error if error?
|
||||
done()
|
||||
|
||||
grunt.registerTask 'browserify:internal', "Bundle source files needed in the browser", ->
|
||||
grunt.file.mkdir './build/static'
|
||||
done = this.async()
|
||||
|
||||
libs = []
|
||||
for lib in EXTERNAL_LIBS
|
||||
parts = lib.split ':'
|
||||
libs.push parts[parts.length-1]
|
||||
|
||||
args = [].concat ("--external=#{lib}" for lib in libs), [
|
||||
'--extension=.coffee'
|
||||
'--outfile=./build/static/internal.js'
|
||||
'--transform=coffeeify'
|
||||
'./src/client/client.coffee'
|
||||
]
|
||||
|
||||
options = cmd:'browserify', args:args
|
||||
grunt.util.spawn options, (error)->
|
||||
console.log error if error?
|
||||
done()
|
||||
|
||||
grunt.registerTask 'use-local-deps', ->
|
||||
grunt.file.mkdir './node_modules'
|
||||
grunt.file.delete './node_modules/crafting-guide-common', force:true
|
||||
fs.symlinkSync '../../crafting-guide-common/', './node_modules/crafting-guide-common'
|
||||
|
||||
grunt.registerTask 'test', ['mochaTest']
|
||||
# Script Tasks #####################################################################################################
|
||||
|
||||
grunt.registerTask 'watch-dev', ['clean', 'build', 'watch']
|
||||
grunt.registerTask 'script:deploy:prod', "deploy code by copying to the production branch", ->
|
||||
done = this.async()
|
||||
grunt.util.spawn cmd:'./scripts/deploy', args:['--production'], opts:{stdio:'inherit'}, -> done()
|
||||
|
||||
grunt.registerTask 'watch-test', ['clean', 'build', 'watch:test']
|
||||
grunt.registerTask 'script:deploy:staging', "deploy code by copying to the staging branch", ->
|
||||
done = this.async()
|
||||
grunt.util.spawn cmd:'./scripts/deploy', args:['--staging'], opts:{stdio:'inherit'}, -> done()
|
||||
|
||||
grunt.registerTask 'publish', 'publishes this package to NPM', ->
|
||||
done = this.async()
|
||||
grunt.util.spawn cmd:'./scripts/publish', opts:{stdio:'inherit'}, -> done()
|
||||
|
||||
grunt.registerTask 'script:s3_upload', 'uploads all static content to S3', ->
|
||||
done = this.async()
|
||||
grunt.util.spawn cmd:'./scripts/s3_upload', opts:{stdio:'inherit'}, -> done()
|
||||
|
||||
grunt.registerTask 'script:start', "start the server at port 8080", ->
|
||||
done = this.async()
|
||||
grunt.util.spawn cmd:'./scripts/start', opts:{stdio:'inherit'}, -> done()
|
||||
|
||||
# Command-Line Argument Processing #################################################################################
|
||||
|
||||
args = process.argv[..]
|
||||
while args.length > 0
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 253 B |
|
After Width: | Height: | Size: 335 B |
|
After Width: | Height: | Size: 957 B |
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 68 B After Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 206 B After Width: | Height: | Size: 206 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 801 B After Width: | Height: | Size: 801 B |
|
Before Width: | Height: | Size: 860 B After Width: | Height: | Size: 860 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 253 B |
|
Before Width: | Height: | Size: 227 B |
|
Before Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 860 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 460 B |
|
Before Width: | Height: | Size: 232 B |
|
Before Width: | Height: | Size: 630 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 38 KiB |
@@ -1,114 +0,0 @@
|
||||
Title:
|
||||
|
||||
MAJOR UPDATE! Crafting Guide—Ultimate step-by-step guide to make anything
|
||||
|
||||
Body:
|
||||
|
||||
Have you ever wanted to figure out how much of what materials you need to craft something? Ever notice that certain
|
||||
recipes are pretty easy... until you account for all the machines you need? Ever wonder how much stuff you'll need to
|
||||
make a [Quarry](http://crafting-guide.com/item/quarry) or an entire
|
||||
[QuantumSuit](http://crafting-guide.com/quantumsuit_bodyarmor)?
|
||||
|
||||
Crafting Guide will help. Choose what you want to make and how many of each, and it will automatically figure out:
|
||||
|
||||
* How many of what resources do you need?
|
||||
* What tools / machines do you need?
|
||||
* How many of what resource do you need for the tools?
|
||||
* What items do you need to craft in what order?
|
||||
|
||||
I've just launched a brand-new version with support for vanilla, Buildcraft, and IndustrialCraft2 (classic) recipes.
|
||||
It's all open-source, so anyone can help expand it to cover missing recipes, other mods, or add new features. Check out
|
||||
the [GitHub project](https://github.com/andrewminer/crafting-guide) if you'd like to get involved!
|
||||
|
||||
If you've seen it before, go look again. There's a whole new site now, which supports a lot more than the old one did:
|
||||
|
||||
* All items have matching icons
|
||||
* All recipes show the proper layout on the crafting grid
|
||||
* You now get step-by-step instructions
|
||||
* You can now make many different items at once (e.g., a whole NanoSuit)
|
||||
|
||||
[crafting-guide.com](http://crafting-guide.com)
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
A few more updates to report! First, now your preferences for which mods are active and whether tools are included
|
||||
will be remembered between visits. Second, I've finished adding support for Thermal Expansion 4. The crafting algorithm
|
||||
doesn't yet taken into account the ore-doubling/tripling machinery, but all the recipes for the entire mod are present
|
||||
and functional. I'll work on using the machines in a future update. Next up: IC2 Experimental!
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
I've just finished adding support for the latest version of Industrial Craft (2.2.663 on the experimental branch). I've
|
||||
also updated the site to let you select the version you're using.
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
I just pushed up a big new feature! Now, each Mod has a dedicated page of its own which lists all the items available
|
||||
in that mod. Clicking on an item will take you to the crafting guide for that item. It's super fast to switch back and
|
||||
forth to explore the items in any given mod. This is the first of many steps for the new mod pages, so keep an eye out
|
||||
for more to come!
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
|
||||
I've been working on a project to make it easier to deal with complex recipes, and I recently finished adding all the
|
||||
core Minecraft recipes. The gist of the site is that you tell it what item(s) you want to make, and it will figure out
|
||||
all the raw ingredients you need along with step-by-step instructions for any number of whatever items you like. For
|
||||
example, [http://crafting-guide.com/crafting/16.potion_of_fire_resistance_8_00:16.potion_of_healing_ii here's how you
|
||||
make] 16 potions of healing II and fire resistance (with extended duration).
|
||||
|
||||
The maintainers of many of the mods I've added (e.g., BuildCraft / Applied Energistics) have found it useful to include
|
||||
links to Crafting Guide in their official documentation, and I was hoping you would think it a good idea to add links
|
||||
from this wiki to CraftingGuide as well. I'd be happy to do the work of adding the links myself, but I'd like to make
|
||||
sure there are no objections first!
|
||||
|
||||
Thanks!
|
||||
~~~~
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
Crafting Guide—the ultimate step-by-step guide for Minecraft—Now with item detail pages!
|
||||
|
||||
I just pushed up another big update! This one adds detail pages for each item from each mod. These detail pages show:
|
||||
|
||||
* the item's basic information (name, icon, ...)
|
||||
* a link to the item's full crafting plan
|
||||
* the list of all recipes for that item
|
||||
* the list of all items it can be used to make
|
||||
* the list of all similar items
|
||||
|
||||
All of this gives you an extensive reference of related items and recipes. Check it out by seeing what you can do with
|
||||
a [Diamond](http://crafting-guide.com/item/diamond)!
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
I just released another exciting update for Crafting Guide! This update adds a lot of small tweaks and adjustments to
|
||||
the site's animations and some performance enhancements, but the big news is an enhanced crafting algorithm and
|
||||
Railcraft support!
|
||||
|
||||
The new crafting algorithm, instead of using the first available recipe for any given item, will now choose the recipe
|
||||
which is most effecient at producing that item. In other words, if you have a Macerator, it will be smart enough to use
|
||||
it. It is also smart about using machines like the Block Cutting Machine to make plates. And, as an extra bonus, it's
|
||||
about twice as fast as the old algorithm.
|
||||
|
||||
With Railcraft support not only comes the huge richness of that mod, but the first multi-block structures in Crafting
|
||||
Guide. For example, check out how to make a [url=http://crafting-guide.com/crafting/blast_furnace]Blast Furnace[/url]!
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
Another big release for Crafting Guide! This time, I've been working on the navigation of the site itself. You'll now
|
||||
see a small navigation bar at the top of each page which both tells you where you are as well as letting you jump to
|
||||
another location. This make the whole item/mod-browsing part of the site much more visible, and simplifies the crafting
|
||||
page a bit. There's even a real home page with a change log!
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
It's been a while, but I just posted some new stuff for Crafting Guide. First, a volunteer took on the rather daunting
|
||||
task of adding Forestry support! It's all there in all its glorious plethora of species. Major kudos to Sheldon Griffin
|
||||
for making it happen.
|
||||
|
||||
Second, I've just finished the coding to majorly improve the item pages. Now, its possible to add a markdown description
|
||||
of the item (including images) as well as videos for each item. Of course, actually filling in the content is a whole
|
||||
different kettle of fish. The Buildcraft guys have generously given me permission to copy in their content, so I'm
|
||||
going to be busy doing that for a while. However, you can see the finished product for the
|
||||
[url=http://crafting-guide.com/browse/buildcraft/advanced_crafting_table/]Advanced Crafting Table[/url]. More to come!
|
||||
@@ -1,51 +1,49 @@
|
||||
{
|
||||
"name": "crafting-guide",
|
||||
"version": "1.15.1",
|
||||
"description": "Source code for http://crafting-guide.com",
|
||||
"version": "1.0.0",
|
||||
"description": "A guide for building anything in Minecraft or its many mods",
|
||||
"main": "./dist/index.js",
|
||||
"repository": "http://github.com/andrewminer/crafting-guide",
|
||||
"scripts": {
|
||||
"build": "grunt build",
|
||||
"prepublish": "grunt prepublish",
|
||||
"start": "./scripts/server",
|
||||
"start": "grunt start",
|
||||
"test": "grunt test"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/andrewminer/crafting-guide.git"
|
||||
},
|
||||
"author": "Andrew Miner",
|
||||
"bugs": {
|
||||
"url": "https://github.com/andrewminer/crafting-guide/issues"
|
||||
},
|
||||
"homepage": "https://github.com/andrewminer/crafting-guide",
|
||||
"license": "none",
|
||||
"devDependencies": {
|
||||
"chai": "^1.10.0",
|
||||
"coffee-script": "^1.9.1",
|
||||
"coffee-script": "^1.9.3",
|
||||
"coffeeify": "^1.1.0",
|
||||
"express": "^4.10.6",
|
||||
"grunt": "^0.4.5",
|
||||
"grunt-browserify": "^3.2.1",
|
||||
"grunt-contrib-clean": "^0.6.0",
|
||||
"grunt-contrib-coffee": "^0.13.0",
|
||||
"grunt-contrib-copy": "^0.7.0",
|
||||
"grunt-contrib-jade": "^0.13.0",
|
||||
"grunt-contrib-sass": "^0.8.1",
|
||||
"grunt-contrib-uglify": "^0.7.0",
|
||||
"grunt-contrib-compress": "^0.14.0",
|
||||
"grunt-contrib-copy": "^0.8.2",
|
||||
"grunt-contrib-jade": "^0.15.0",
|
||||
"grunt-contrib-sass": "^0.9.2",
|
||||
"grunt-contrib-uglify": "^0.11.0",
|
||||
"grunt-contrib-watch": "^0.6.1",
|
||||
"grunt-exorcise": "^1.0.1",
|
||||
"grunt-mocha-test": "^0.12.7",
|
||||
"grunt-rename": "^0.1.4",
|
||||
"grunt-rsync": "^0.6.2",
|
||||
"mocha": "^2.2.1",
|
||||
"grunt-sass-globbing": "^1.4.0",
|
||||
"mocha": "^2.4.5",
|
||||
"sass": "^0.5.0",
|
||||
"sinon": "^1.14.1",
|
||||
"sinon-chai": "^2.7.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"backbone": "^1.1.2",
|
||||
"crafting-guide-common": "^1.0.0",
|
||||
"jade": "^1.8.2",
|
||||
"jquery": "^2.1.3",
|
||||
"marked": "^0.3.3",
|
||||
"underscore": "^1.7.0",
|
||||
"when": "^3.6.4"
|
||||
"backbone": "^1.2.3",
|
||||
"body-parser": "^1.13.3",
|
||||
"client-sessions": "^0.7.0",
|
||||
"cookie-parser": "^1.3.5",
|
||||
"crafting-guide-common": "^1.5.1",
|
||||
"express": "^4.13.3",
|
||||
"express-session": "^1.11.3",
|
||||
"jade": "^1.11.0",
|
||||
"jquery": "^2.1.4",
|
||||
"marked": "^0.3.5",
|
||||
"underscore": "^1.8.3",
|
||||
"underscore.inflections": "^0.2.1",
|
||||
"when": "^3.7.3"
|
||||
}
|
||||
}
|
||||
|
||||