Giter Site home page Giter Site logo

terraform's Introduction

terraform

Terraform is the pre-processor engine for the Harp web server. Terraform does not write or serve files. It processes and provides a layout/partial paradigm.

Features

  • pre-processors
  • layouts
  • partials
  • metadata (via _data.json)
  • LRU cache (production mode)

Supported Pre-Processors

HTML – EJS, Jade, Markdown CSS – LESS, Stylus, Sass (SCSS) JavaScript – CoffeeScript

Install

npm install terraform

API

Step 1) require the library

var terraform = require('terraform')

Step 2) set the root

  • publicPath (String): path to public directory
  • globals (Object): global variables to be available to every template
var planet = terraform.root("path/to/public/dir", { "title": "Bitchin" })

Step 3) render a file

planet.render('index.jade', { "title": "Override the global title" }, function(error, body){
  console.log(body)
})

Tests

Please run the tests

npm install
npm test

License

Copyright © 2012–2014 Chloi Inc. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

terraform's People

Contributors

andrematheus avatar arhimedoffs avatar bluet avatar caillou avatar carlosrodriguez avatar djensen47 avatar dtrejo avatar echaozh avatar edrex avatar eventualbuddha avatar geelen avatar guifromrio avatar icarus-sullivan avatar jedfoster avatar johnboxall avatar julianduque avatar kennethormandy avatar logical-potato avatar lunelson avatar matsumos avatar misterhtmlcss avatar najamkhn avatar sehrope avatar sintaxi avatar spltfc avatar stephenway avatar vbwx avatar xzyfer avatar yajo avatar zeke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform's Issues

Support autoprefixer in pipeline

autoprefixer is becoming a standard part of CSS preprocessing workflow. Would it be possible to integrate it in to the Harp.js pipeline?

Also: currently the grunt-based node-sass and autoprefixer plugins preserve source maps; but the gulp-based ones do not. It seems it's an architectural issue. I wonder what the implications for this are in Harp?

Inlining Javascript/Stylesheets

Thanks for your great work on Harp and Terraform! We use it to run a number of sites in production and so far are very satisfied with the performance and ease-of-use.

Background

We are working on an experimental app which uses a frontend written with Polymer/Web Components and Jade/CoffeeScript/Stylus. Polymer takes a component-style approach to web development, in which one creates custom HTML tags endowed with their own functionality.

All our custom Polymer components therefore consist of 3 files: a Jade template, CoffeeScript code, and a Stylus stylesheet. The Jade template is the main file, and references the two other files, like this:

//- custom-element.jade
polymer-element(name='custom-element')
  template
    link(rel="stylesheet", href="custom-element.css")
    h1 Hi, I'm a custom element!
  script(type="text/javascript", src="custom-element.js")

We use Harp as development server/asset pipeline.

Proposal

In order to speed up load times in production, I would like to minimize requests to the server, by inlining the generated JavaScript and CSS code in the above example. Ideally, without adding an additional step after harp compile.

I'm perfectly willing to implement this myself and send you a pull request, but would need some pointers on how to attack this. Please let me know if this is possible.

Allow configuration of processors.

All processors are used in their default configuration right now. We'd like to configure each of them e.g. to alter the way Markdown is rendered.

It would be great if we can pass a configuration object per processor module, like

terraform.root(rootPath, globals, {
    processors: {
        marked: {
            breaks: true,
            renderer: myCustomRenderer
        },
        stylus: {
            imports: myStylusImports,
            globals: myStylusGlobals
        }
        // etc.
    }
});

If you ever desire an alternative to marked...

This is a bit of a troll issue, so just yell at me if you want it closed. I have been watching the marked project for some time and find that it does seem to lack leadership.

A bunch of Russian dudes who are obsessed with speed and efficiency have started to gut and rebuild it. They are being super diligent to ensure that it works really well. They also take cues from the "CommonMark" project when it does make sense. It is all under the leadership of the guy who runs assemble.io, he is a super awesome dude with infinite patience.

https://github.com/jonschlinkert/remarkable

...Something to think about :) It is still a work in progress... but maybe you already have some thoughts that you would like to drop in the bucket.

Support CSON.

Support for a CSON files seems to be right up the ally here. And with atom, and github pushing coffeescript and CSON I think we'll be seeing more and more of it.

Cheers.

Supporting ECT

ECT is similar EJS.
But ECT has a powerful template engine more than EJS.
I wanted to implement the ect, but I didn't go well.

Handle module’s console output

The latest version of Jade is outputting warnings to the console (it might have been before).

This might be part of Harp’s CLI interface eventually, but maybe we want to have some way of sharing these warnings without posting them so many times? On harp compile right now, I get /path/to/app, line 2: Implicit textOnly for script and style is deprecated. Use script. or style. instead. about ten times over when I run harp compile, and it takes three times as long (this could be because of the error rather than the message, I’m not sure).

node-sass problems

I wasn't able to npm install harp, node-sass wasn't able to build on my system. I updated the packages.json file to use node-sass v.0.9.3 and that fixed it for me, enabling me to harp init.

hasOwnProperty should be called directly from prototype

While trying out harp.js, I fell onto this issue:

sintaxi/harp#101

Since the message is pretty tell-tale, a google led me to this: http://www.2ality.com/2012/01/objects-as-maps.html

Without knowing too much about the terraform codebase, I modified isEmpty in terraform/lib/helpers/raw.js to be as follows:

var isEmpty = function(obj) {
  for(var prop in obj) {
    if(Object.prototype.hasOwnProperty.call(obj,prop))
      return false;
  }
  return true;
}

This caused the error to change into something more informative. The change I made should not have changed the behaviour, but my form is more resistant to problems, so I'm letting you guys know in case you want to correct it throughout your codebase.

Unable to find License details

You have released harp under MIT but could not find license details for this project in the readme or a separate license file.

Please see my pull request. I have updated the readme file to mention MIT license, if it is acceptable to you.

Optional minification & uglification

Related to #30, I think it would make sense to prevent minification of requested files in a development environment (and to always minify them in a production environment). That would make debugging a lot easier when building a site. Alternatively, Harp could offer a command line switch to disable this behavior.

Unmet dependency for running tests

This is what I get when I try to run npm install terraform with Node v0.10.18.

npm WARN unmet dependency /Users/kennethormandy/Desktop/node_modules/harp requires terraform@'kennethormandy/terraform#scss' but will load
npm WARN unmet dependency /Users/kennethormandy/Desktop/node_modules/terraform,
npm WARN unmet dependency which is version 0.5.3
[email protected] ../node_modules/terraform
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
└── [email protected] ([email protected])

And the npm test:

> [email protected] test /Users/kennethormandy/Desktop/node_modules/terraform
> ./node_modules/.bin/mocha --reporter spec

sh: ./node_modules/.bin/mocha: No such file or directory
npm ERR! weird error 127
npm ERR! not ok code 0

query `@supports` not supported

Write the following in a Less file:

// styles.less
@supports (color: green) {
  h1 { color: green; }
}

Run $ harp server and load a page with <link href="styles.css"/> in the head. The following error is received:

(node:63081) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): BrowserslistError: Unknown browser query `op_mini all`

See @supports for info.

This is not an issue with Less, as no error is received when compiling the Less file into CSS.

Update node-sass dep to 3.0.0-beta

Terraform currently depends on an old 3.0.0-alpha release. We've since release 5 new betas with a 6th about to drop. These betas bring a lot to users including a new release of Libsass, and broader runtime and os support.

I believe there may be some minor API changes but it should be a trivial update.

/cc @djensen47

Bump node-sass to latest version.

Hi. I'm having problems installing harp.js
harp installation fails when trying to install [email protected] which is dependency for terrafom.
[email protected] install correctly and wihout errors, and i suggest you need to update node-sass to latest version.

Windows 10 64-bit
Node.js 9.0.0

S D:\Documents\coop-homepage> npm install harp
npm WARN deprecated [email protected]: connect 2.x series is deprecated

> [email protected] install D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.5.3/win32-x64-59_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.5.3/win32-x64-59_binding.node":

HTTP error 404 Not Found

Hint: If github.com is not accessible in your location
      try setting a proxy via HTTP_PROXY, e.g.

      export HTTP_PROXY=http://example.com:1234

or configure npm proxy via

      npm config set proxy http://example.com:8080

> [email protected] postinstall D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass
> node scripts/build.js

Building: C:\Program Files\nodejs\node.exe D:\Documents\coop-homepage\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [ 'C:\\Program Files\\nodejs\\node.exe',
gyp verb cli   'D:\\Documents\\coop-homepage\\node_modules\\node-gyp\\bin\\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library=' ]
gyp info using [email protected]
gyp info using [email protected] | win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "C:\Users\me\.windows-build-tools\python27\python.exe" in the PATH
gyp verb `which` failed Error: not found: C:\Users\me\.windows-build-tools\python27\python.exe
gyp verb `which` failed     at getNotFoundError (D:\Documents\coop-homepage\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (D:\Documents\coop-homepage\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (D:\Documents\coop-homepage\node_modules\which\which.js:80:29)
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\which\which.js:89:16
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\isexe\index.js:42:5
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\isexe\windows.js:36:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:166:21)
gyp verb `which` failed  C:\Users\me\.windows-build-tools\python27\python.exe { Error: not found: C:\Users\me\.windows-build-tools\python27\python.exe
gyp verb `which` failed     at getNotFoundError (D:\Documents\coop-homepage\node_modules\which\which.js:13:12)
gyp verb `which` failed     at F (D:\Documents\coop-homepage\node_modules\which\which.js:68:19)
gyp verb `which` failed     at E (D:\Documents\coop-homepage\node_modules\which\which.js:80:29)
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\which\which.js:89:16
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\isexe\index.js:42:5
gyp verb `which` failed     at D:\Documents\coop-homepage\node_modules\isexe\windows.js:36:5
gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:166:21)
gyp verb `which` failed   stack: 'Error: not found: C:\\Users\\me\\.windows-build-tools\\python27\\python.exe\n    at getNotFoundError (D:\\Documents\\coop-homepage\\node_modules\\which\\which.js:13:12)\n    at F (D:\\Documents\\coop-homepage\\n
ode_modules\\which\\which.js:68:19)\n    at E (D:\\Documents\\coop-homepage\\node_modules\\which\\which.js:80:29)\n    at D:\\Documents\\coop-homepage\\node_modules\\which\\which.js:89:16\n    at D:\\Documents\\coop-homepage\\node_modules\\isexe
\\index.js:42:5\n    at D:\\Documents\\coop-homepage\\node_modules\\isexe\\windows.js:36:5\n    at FSReqWrap.oncomplete (fs.js:166:21)',
gyp verb `which` failed   code: 'ENOENT' }
gyp verb could not find "C:\Users\me\.windows-build-tools\python27\python.exe". checking python launcher
gyp verb could not find "C:\Users\me\.windows-build-tools\python27\python.exe". guessing location
gyp verb ensuring that file exists: C:\Python27\python.exe
gyp verb check python version `C:\Python27\python.exe -c "import platform; print(platform.python_version());"` returned: "2.7.14\r\n"
gyp verb get node dir no --target version specified, falling back to host node version: 9.0.0
gyp verb command install [ '9.0.0' ]
gyp verb install input version string "9.0.0"
gyp verb install installing version: 9.0.0
gyp verb install --ensure was passed, so won't reinstall if already installed
gyp verb install version is already installed, need to check "installVersion"
gyp verb got "installVersion" 9
gyp verb needs "installVersion" 9
gyp verb install version is good
gyp verb get node dir target node version installed: 9.0.0
gyp verb build dir attempting to create "build" dir: D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build
gyp verb build dir "build" dir needed to be created? D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build
gyp verb build/config.gypi creating config file
gyp verb build/config.gypi writing out config file: D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\config.gypi
gyp verb config.gypi checking for gypi file: D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\config.gypi
gyp verb common.gypi checking for gypi file: D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\common.gypi
gyp verb gyp gyp format was not specified; forcing "msvs"
gyp info spawn C:\Python27\python.exe
gyp info spawn args [ 'D:\\Documents\\coop-homepage\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=2015',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\Documents\\coop-homepage\\node_modules\\terraform\\node_modules\\node-sass\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\Documents\\coop-homepage\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\me\\.node-gyp\\9.0.0\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\me\\.node-gyp\\9.0.0',
gyp info spawn args   '-Dnode_gyp_dir=D:\\Documents\\coop-homepage\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\Users\\me\\.node-gyp\\9.0.0\\<(target_arch)\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=D:\\Documents\\coop-homepage\\node_modules\\terraform\\node_modules\\node-sass',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'D:\\Documents\\coop-homepage\\node_modules\\terraform\\node_modules\\node-sass\\build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp verb command build []
gyp verb build type Release
gyp verb architecture x64
gyp verb node dev dir C:\Users\me\.node-gyp\9.0.0
gyp verb found first Solution file build/binding.sln
gyp verb could not find "msbuild.exe" in PATH - finding location in registry
gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 11/14/2017 4:16:21 PM.
Project "D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Release|x64".
Project "D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.sln" (1) is building "D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj" (2) on node 1 (default targets
).
PrepareForBuild:
  Creating directory "Release\obj\binding\".
  Creating directory "Release\obj\binding\binding.tlog\".
InitializeBuildStatus:
  Creating "Release\obj\binding\binding.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
ClCompile:
  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\CL.exe /c /I"C:\Users\me\.node-gyp\9.0.0\include\node" /I"C:\Users\me\.node-gyp\9.0.0\src" /I"C:\Users\me\.node-gyp\9.0.0\deps\uv\include" /I"C:\Users\me\.node-gyp\9.0.0\deps\v8
  \include" /I..\..\..\..\nan /Zi /nologo /W3 /WX- /Ox /Ob2 /Oi /Ot /Oy /GL /D NODE_GYP_MODULE_NAME=binding /D USING_UV_SHARED=1 /D USING_V8_SHARED=1 /D V8_DEPRECATION_WARNINGS=1 /D WIN32 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
   /D _HAS_EXCEPTIONS=0 /D BUILDING_NODE_EXTENSION /D _WINDLL /GF /Gm- /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR- /Fo"Release\obj\binding\\" /Fd"Release\obj\binding\vc140.pdb" /Gd /TP /wd4267 /wd4351 /wd4355 /wd4800 /wd425
  1 /errorReport:queue /Zc:threadSafeInit- /MP ..\src\binding.cpp ..\src\create_string.cpp ..\src\custom_function_bridge.cpp ..\src\custom_importer_bridge.cpp ..\src\sass_context_wrapper.cpp ..\src\sass_types\boolean.cpp ..\src\sass_types\color
  .cpp ..\src\sass_types\error.cpp ..\src\sass_types\factory.cpp ..\src\sass_types\list.cpp ..\src\sass_types\map.cpp ..\src\sass_types\null.cpp ..\src\sass_types\number.cpp ..\src\sass_types\string.cpp "D:\Documents\coop-homepage\node_modules\
  node-gyp\src\win_delay_load_hook.cc"
  binding.cpp
  create_string.cpp
  custom_function_bridge.cpp
  custom_importer_bridge.cpp
  sass_context_wrapper.cpp
  boolean.cpp
  color.cpp
  error.cpp
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\custom_importer_bridge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\nod
e_modules\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\custom_importer_bridge.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\binding.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-
sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\binding.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\custom_function_bridge.cpp)d:\documents\coop-homepage\node_modules\nan\nan_maybe_4
3_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\error.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]

  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\error.cpp)c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object:
  :ForceSet' (compiling source file ..\src\custom_function_bridge.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\create_string.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules
\node-sass\build\binding.vcxproj]

  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\create_string.cpp)d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Obje
  ct::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\boolean.cpp)
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\boolean.cpp)

d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\color.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modu
les\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\color.cpp)
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\custom_importer_bridge.h(5): fatal error C1083: Cannot open include file: 'sass/functions.h': No such file or directory (compiling source file ..\src\custom_importer_b
ridge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  factory.cpp
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_context_wrapper.h(8): fatal error C1083: Cannot open include file: 'sass/context.h': No such file or directory (compiling source file ..\src\binding.cpp) [D:\Docu
ments\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\custom_function_bridge.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\custom_function_brid
ge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\error.cpp) [D:\
Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\boolean.cpp) [D
:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  list.cpp
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\color.cpp) [D:\
Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  map.cpp
  null.cpp
  number.cpp
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_context_wrapper.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_
modules\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_context_wrapper.cpp)
  string.cpp
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_context_wrapper.h(8): fatal error C1083: Cannot open include file: 'sass/context.h': No such file or directory (compiling source file ..\src\sass_context_wrapper.
cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  win_delay_load_hook.cc
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\factory.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mo
dules\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\factory.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\number.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mod
ules\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\number.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\list.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modul
es\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\list.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\map.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_module
s\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\map.cpp)
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\string.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mod
ules\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\string.cpp)
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\factory.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\factory.cpp)
[D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\null.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modul
es\node-sass\build\binding.vcxproj]
  c:\users\me\.node-gyp\9.0.0\include\node\v8.h(3117): note: see declaration of 'v8::Object::ForceSet' (compiling source file ..\src\sass_types\null.cpp)
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\number.cpp) [D:
\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\list.cpp) [D:\D
ocuments\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\map.cpp) [D:\Do
cuments\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\string.cpp) [D:
\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\null.cpp) [D:\D
ocuments\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
Done Building Project "D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj" (default targets) -- FAILED.

Done Building Project "D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.sln" (default targets) -- FAILED.


Build FAILED.

"D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.sln" (default target) (1) ->
"D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj" (default target) (2) ->
(ClCompile target) ->
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\custom_importer_bridge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\n
ode_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\binding.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\nod
e-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\custom_function_bridge.cpp)d:\documents\coop-homepage\node_modules\nan\nan_maybe
_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\error.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\create_string.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modul
es\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\color.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mo
dules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_context_wrapper.cpp) [D:\Documents\coop-homepage\node_modules\terraform\nod
e_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\factory.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_
modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\number.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_m
odules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\list.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mod
ules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\map.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modu
les\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\string.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_m
odules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\nan\nan_maybe_43_inl.h(112): warning C4996: 'v8::Object::ForceSet': was declared deprecated (compiling source file ..\src\sass_types\null.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_mod
ules\node-sass\build\binding.vcxproj]


"D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.sln" (default target) (1) ->
"D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj" (default target) (2) ->
(ClCompile target) ->
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\custom_importer_bridge.h(5): fatal error C1083: Cannot open include file: 'sass/functions.h': No such file or directory (compiling source file ..\src\custom_importer
_bridge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_context_wrapper.h(8): fatal error C1083: Cannot open include file: 'sass/context.h': No such file or directory (compiling source file ..\src\binding.cpp) [D:\Do
cuments\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\custom_function_bridge.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\custom_function_br
idge.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\error.cpp) [D
:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\boolean.cpp)
[D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\color.cpp) [D
:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_context_wrapper.h(8): fatal error C1083: Cannot open include file: 'sass/context.h': No such file or directory (compiling source file ..\src\sass_context_wrappe
r.cpp) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\factory.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\factory.cpp
) [D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\number.cpp) [
D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\list.cpp) [D:
\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\map.cpp) [D:\
Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\string.cpp) [
D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]
  d:\documents\coop-homepage\node_modules\terraform\node_modules\node-sass\src\sass_types\value.h(5): fatal error C1083: Cannot open include file: 'sass/values.h': No such file or directory (compiling source file ..\src\sass_types\null.cpp) [D:
\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass\build\binding.vcxproj]

    12 Warning(s)
    13 Error(s)

Time Elapsed 00:00:03.45
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (D:\Documents\coop-homepage\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack     at emitTwo (events.js:135:13)
gyp ERR! stack     at ChildProcess.emit (events.js:224:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\Documents\\coop-homepage\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd D:\Documents\coop-homepage\node_modules\terraform\node_modules\node-sass
gyp ERR! node -v v9.0.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Build failed with error code: 1
npm WARN Error: EPERM: operation not permitted, scandir 'D:\Documents\coop-homepage\node_modules\terraform\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'D:\Documents\coop-homepage\node_modules\terraform\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'D:\\Documents\\coop-homepage\\node_modules\\terraform\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'D:\\Documents\\coop-homepage\\node_modules\\terraform\\node_modules' }
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\me\AppData\Roaming\npm-cache\_logs\2017-11-14T13_16_26_308Z-debug.log

helpers.dataTree *very* slow

Just thought it was worth raising this issue.
For me it adds about 350ms to each request for a compiled file (some pages have 10 or more compiled files) on an i7 SSD Macbook Pro.

There are a couple of synchronous IO function calls in there too.

I'm not using dataTree so I just commented out the function call and the page loads are much faster now.

Supporting Source Maps

I think this line of code should change:
https://github.com/sintaxi/terraform/blob/master/lib/javascript/processors/coffee.js#L7

From: 
var script = cs.compile(fileContents.toString(), { bare: true })
To:
var useMaps = process.env.coffee_map || process.env.NODE_ENV=="dev"?true:false;
var script = cs.compile(fileContents.toString(), { bare: true , map : useMaps })

I have not tested this, but I think then we can do something like

coffee_map=true harp server app.js
//or maybe
NODE_ENV=dev harp server app.js

I wanted to make the change, but not sure, I should at this point in time. Any thoughts, or am I completely getting this wrong?

Unable to install it on windows 8

Unable to install it with windows8. I have this error

D:\github\blaguesexy>npm install -g terraform
npm http GET https://registry.npmjs.org/terraform
npm http 200 https://registry.npmjs.org/terraform
npm http GET https://registry.npmjs.org/lru-cache/2.5.0
npm http GET https://registry.npmjs.org/jade/0.35.0
npm http GET https://registry.npmjs.org/coffee-script/1.7.1
npm http GET https://registry.npmjs.org/ejs/1.0.0
npm http GET https://registry.npmjs.org/node-sass/0.9.3
npm http GET https://registry.npmjs.org/marked/0.2.9
npm http GET https://registry.npmjs.org/less/1.7.4
npm http GET https://registry.npmjs.org/stylus/0.47.3
npm http GET https://registry.npmjs.org/autoprefixer
npm http 304 https://registry.npmjs.org/coffee-script/1.7.1
npm http 304 https://registry.npmjs.org/node-sass/0.9.3
npm http 304 https://registry.npmjs.org/marked/0.2.9
npm http 304 https://registry.npmjs.org/jade/0.35.0
npm http 304 https://registry.npmjs.org/ejs/1.0.0
npm http 304 https://registry.npmjs.org/autoprefixer
npm http 304 https://registry.npmjs.org/lru-cache/2.5.0
npm http 304 https://registry.npmjs.org/stylus/0.47.3
npm http 304 https://registry.npmjs.org/less/1.7.4
npm http GET https://registry.npmjs.org/caniuse-db
npm http GET https://registry.npmjs.org/fs-extra
npm http GET https://registry.npmjs.org/postcss
npm http GET https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/caniuse-db
npm http 304 https://registry.npmjs.org/fs-extra
npm http 304 https://registry.npmjs.org/postcss
npm http 304 https://registry.npmjs.org/mkdirp
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\mouni_000\AppData
Roaming\npm\node_modules\terraform\node_modules\less\dist'
npm ERR! error rolling back [email protected] { [Error: ENOTEMPTY, rmdir 'C:\User
s\mouni_000\AppData\Roaming\npm\node_modules\terraform\node_modules\less\dist']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: 'C:\Users\mouni_000\AppData\Roaming\npm
\node_modules\terraform\node_modules\less\dist' }
npm ERR! Error: No compatible version found: caniuse-db@'^1.0.20140727'
npm ERR! Valid install targets:
npm ERR! ["1.0.20140224","1.0.20140225","1.0.20140226","1.0.20140301","1.0.20140
302","1.0.20140303","1.0.20140304","1.0.20140306","1.0.20140311","1.0.20140313",
"1.0.20140316","1.0.20140318","1.0.20140319","1.0.20140325","1.0.20140326","1.0.
20140330","1.0.20140331","1.0.20140401","1.0.20140403","1.0.20140409","1.0.20140
412","1.0.20140416","1.0.20140422","1.0.20140428","1.0.20140429","1.0.20140502",
"1.0.20140504","1.0.20140505","1.0.20140506","1.0.20140507","1.0.20140511","1.0.
20140516","1.0.20140519","1.0.20140520","1.0.20140521","1.0.20140523","1.0.20140
526","1.0.20140529","1.0.20140601","1.0.20140602","1.0.20140603","1.0.20140606",
"1.0.20140608","1.0.20140609","1.0.20140610","1.0.20140611","1.0.20140616","1.0.
20140617","1.0.20140618","1.0.20140619","1.0.20140622","1.0.20140623","1.0.20140
626","1.0.20140628","1.0.20140702","1.0.20140710","1.0.20140715","1.0.20140716",
"1.0.20140717","1.0.20140721","1.0.20140722","1.0.20140724","1.0.20140726","1.0.
20140727","1.0.20140728","1.0.20140729","1.0.20140730","1.0.20140731","1.0.20140
801","1.0.20140804","1.0.20140810","1.0.20140811","1.0.20140812","1.0.20140814",
"1.0.20140815","1.0.20140816","1.0.20140820","1.0.20140821","1.0.20140826","1.0.
20140827","1.0.20140902","1.0.20140903","1.0.20140906","1.0.20140908","1.0.20140
909","1.0.20140910","1.0.20140911","1.0.20140915","1.0.20140916","1.0.20140918",
"1.0.20140922","1.0.20140924","1.0.20140928","1.0.20140929","1.0.20141001","1.0.
20141006","1.0.20141007","1.0.20141008","1.0.30000001","1.0.30000002","1.0.30000
003","1.0.30000004","1.0.30000005","1.0.30000006","1.0.30000007","1.0.30000008",
"1.0.30000009","1.0.30000010","1.0.30000011","1.0.30000012","1.0.30000013","1.0.
30000014","1.0.30000015","1.0.30000016","1.0.30000017","1.0.30000018","1.0.30000
019","1.0.30000020","1.0.30000021","1.0.30000022","1.0.30000023","1.0.30000024",
"1.0.30000025","1.0.30000026","1.0.30000027","1.0.30000028","1.0.30000029","1.0.
30000030","1.0.30000031","1.0.30000032","1.0.30000033","1.0.30000034","1.0.30000
035","1.0.30000036","1.0.30000037","1.0.30000038","1.0.30000039","1.0.30000040",
"1.0.30000041","1.0.30000042","1.0.30000043","1.0.30000044","1.0.30000045","1.0.
30000046","1.0.30000047","1.0.30000048","1.0.30000049","1.0.30000050","1.0.30000
051","1.0.30000052","1.0.30000053","1.0.30000054","1.0.30000055","1.0.30000056",
"1.0.30000057","1.0.30000058","1.0.30000059"]
npm ERR! at installTargetsError (C:\Program Files\nodejs\node_modules\npm\li
b\cache.js:685:10)
npm ERR! at C:\Program Files\nodejs\node_modules\npm\lib\cache.js:607:10
npm ERR! at saved (C:\Program Files\nodejs\node_modules\npm\node_modules\npm
-registry-client\lib\get.js:138:7)
npm ERR! at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "terraform"
npm ERR! cwd D:\github\blaguesexy
npm ERR! node -v v0.10.3
npm ERR! npm -v 1.2.17
npm ERR! Error: ENOENT, lstat 'C:\Users\mouni_000\AppData\Roaming\npm\node_modul
es\terraform\node_modules\coffee-script\node_modules\mkdirp\package.json'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "terraform"
npm ERR! cwd D:\github\blaguesexy
npm ERR! node -v v0.10.3
npm ERR! npm -v 1.2.17
npm ERR! path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraform\node
_modules\coffee-script\node_modules\mkdirp\package.json
npm ERR! fstream_path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraf
orm\node_modules\coffee-script\node_modules\mkdirp\package.json
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat 'C:\Users\mouni_000\AppData\Roaming\npm\node_modul
es\terraform\node_modules\jade\lib\nodes\literal.js'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "terraform"
npm ERR! cwd D:\github\blaguesexy
npm ERR! node -v v0.10.3
npm ERR! npm -v 1.2.17
npm ERR! path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraform\node
_modules\jade\lib\nodes\literal.js
npm ERR! fstream_path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraf
orm\node_modules\jade\lib\nodes\literal.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat 'C:\Users\mouni_000\AppData\Roaming\npm\node_modul
es\terraform\node_modules\less\dist\less-1.6.0.js'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "terraform"
npm ERR! cwd D:\github\blaguesexy
npm ERR! node -v v0.10.3
npm ERR! npm -v 1.2.17
npm ERR! path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraform\node
_modules\less\dist\less-1.6.0.js
npm ERR! fstream_path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraf
orm\node_modules\less\dist\less-1.6.0.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! Error: ENOENT, lstat 'C:\Users\mouni_000\AppData\Roaming\npm\node_modul
es\terraform\node_modules\node-sass\libsass\prelexer.cpp'
npm ERR! If you need help, you may report this log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! [email protected]

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nod
ejs\node_modules\npm\bin\npm-cli.js" "install" "-g" "terraform"
npm ERR! cwd D:\github\blaguesexy
npm ERR! node -v v0.10.3
npm ERR! npm -v 1.2.17
npm ERR! path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraform\node
_modules\node-sass\libsass\prelexer.cpp
npm ERR! fstream_path C:\Users\mouni_000\AppData\Roaming\npm\node_modules\terraf
orm\node_modules\node-sass\libsass\prelexer.cpp
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! D:\github\blaguesexy\npm-debug.log
npm ERR! not ok code 0

I already tried to clean the repository but no way.

It was the same when i tried to install harp.

Can write plugins?

Hi there,

I love harp.js, and I use it for all my static sites, including my blog. I recently got into a distributed file system called IPFS, and I am experimenting with distributing my site on their platform as well. This would (unfortunately) require that all the links on my site be relative.

I would like to write a plugin for Terraform (I think this is the appropriate spot?) to automatically convert all internal links to relative. Is this kind of thing supported?

Thanks,
Isaac

CoffeeScript is out of date.

The coffeescript version of terraform is out of date, and becuase of the new coffescript register function, will affect projects using harp/terraform as a dependency.

What I mean to say is, if you require a coffeescript file after including terraform in a project, the terraform version of coffeescript takes over parsing that file since by default it registers the .coffee extension. So any code I've written using the features in 1.7 doesn't work after using harp.

For anyone else having this issue, you can work around this issue by re-requiring coffeescript after including terraform.

harp = require 'harp' #harp includes terraform
require 'coffee-script/register'
###
Requiring coffee-script/register after harp re-registers the the project
or global version of coffee-script to the `.coffee` extension.
###

Less 1.4.2

Any plans to upgrade to less 1.4.2 module?

I think there are some backwards incompatible changes, but it's not very clear what they are. In any case we should find a way to upgrade.

I'm personally after the new feature where @import (less) some.css should bundle that css file into the same output css file. This way harp will be able to bundle in @imported css files and not just @imported less files.

I can make a PR if you agree this should be done.

Upgrade EJS, Stylus, and Marked

I can do this later, just a reminder for myself.

New, minor version of EJS: https://github.com/visionmedia/ejs/blob/master/History.md#085--2013-11-21

New, major version of Stylus: https://github.com/LearnBoost/stylus/blob/master/History.md#0410--2013-11-30
It adds the first version of {block}, which was probably Stylus’ most glaring omission next to Sass, which has @contents.

New, minor version of Marked: markedjs/marked@v0.2.9...master
Might want to review this. You can have ## My Header generate <h2 id="my-header">My Header</h2> instead of <h2>My Header</h2>, which is cool, but we probably don’t want to do it. I couldn’t tell if it was opt-in or opt-out.

Bump autoprefixer dependency. Also, an option to configure and/or disable it?

With reference to this issue I filed on the harp project, it appears that terraform is using an outdated version of the autoprefixer module. With the web running at the blazing speed that it does, running something from July may already be old news in October. Certainly the browser world is moving very fast.

While we're at it, would it perhaps be possible to let the user configure the autoprefixer behavior via a _data.json setting, or, if necessary, completely disable it?

I'd be happy to prepare a pull request for this if that would help things out.

Update *less* and *marked* dependencies

See https://nodesecurity.io/advisories/qs_dos_extended_event_loop_blocking, https://nodesecurity.io/advisories/qs_dos_memory_exhaustion, and https://nodesecurity.io/advisories/marked_multiple_content_injection_vulnerabilities.

Steps to reproduce:

$ git clone https://github.com/sintaxi/terraform.git .

$ npm install

$ npm shrinkwrap --dev
wrote npm-shrinkwrap.json

$ # sudo npm i nsp -g
$ nsp audit-shrinkwrap
Name    Installed  Patched  Vulnerable Dependency
qs        0.6.6     >= 1.x  terraform > less > request
marked    0.2.9    >=0.3.1  terraform

$ npm outdated --depth 0
Package        Current  Wanted     Latest  Location
autoprefixer     2.2.0   2.2.0      3.1.0  autoprefixer
coffee-script    1.7.1   1.7.1      1.8.0  coffee-script
jade            0.35.0  0.35.0      1.7.0  jade
less             1.7.4   1.7.4      1.7.5  less
marked           0.2.9   0.2.9      0.3.2  marked
mocha            1.8.2   1.8.2     1.21.4  mocha
node-sass        0.9.3   0.9.3  0.9.5-rc1  node-sass
should           1.2.2   1.2.2      4.0.4  should
stylus          0.47.3  0.47.3     0.49.1  stylus

$ travis-lint # http://lint.travis-ci.org/sintaxi/terraform

$ # sudo npm i pjv -g
$ pjv -wr
{ valid: true,
  warnings:
   [ 'Missing recommended field: keywords',
     'Missing recommended field: bugs' ],
  recommendations:
   [ 'Missing optional field: homepage',
     'Missing optional field: engines' ] }

Remove dependency on node-sass

node-sass has been notoriously unstable due to it's dependency on libsass. In particular, it has never really worked on SmartOS/Solaris. PRs have been submitted but the fixes have never made it to the production version of node-sass. It's very frustrating.

Would it be possible to make it an optional dependency? That way, when you try to install on an unsupported libsass platform, you can still use harp? Or possibly use the slower Sass.js?

Sass Library Support

I don't see any way to tap into the Sass options that are passed to node-sass. Without this, many sass extensions that have javascript functions, custom importers, will not work.

A simple, out of the box solution to this will be to integrate eyeglass into harp, then any sass extension can added to the project with a simple npm install -- eyeglass will discover the extensions and hook them into node-sass automatically (Here's a list of eyeglass compatible sass extensions that already exist)

Are you open to accepting a pull request that add eyeglass as a dependency so that sass modules can be added to projects?

If not, are you open to a pull request to terraform that makes it easier to customize the Sass options (that's all eyeglass needs in order to work)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.