This allows for sharing node_modules directory across
deployment releases.
type='string',
default='npm',
help='Path to npm binary'),
type='string',
default='npm',
help='Path to npm binary'),
+ make_option('--editor-npm-env',
+ action='store',
+ dest='editor_npm_env',
+ type='string',
+ default=None,
+ help='Destination path of npm environment, defaults to ./node_modules'),
)
def handle(self, **options):
)
def handle(self, **options):
build_dir = os.path.join(wiki_base_dir, 'build')
self.stdout.write('Installing editor dependencies')
build_dir = os.path.join(wiki_base_dir, 'build')
self.stdout.write('Installing editor dependencies')
+ if options['editor_npm_env']:
+ npm_env = os.path.join(rng_base_dir, options['editor_npm_env'])
+ if not os.path.exists(npm_env):
+ os.makedirs(npm_env)
+ assert os.path.isdir(npm_env)
+ os.symlink(npm_env, os.path.join(rng_base_dir, 'node_modules'))
try:
call([options['npm_bin'], 'install'], cwd = rng_base_dir)
except OSError:
try:
call([options['npm_bin'], 'install'], cwd = rng_base_dir)
except OSError:
-from fabric.api import env
+import os
+
+from fabric.api import env, require
from fabric.tasks import Task
from fnpdjango.deploy import Command
from fabric.tasks import Task
from fnpdjango.deploy import Command
for k,v in self.env_vars.items():
env[k] = v
for k,v in self.env_vars.items():
env[k] = v
- build_cmd = '../../ve/bin/python manage.py build --npm-bin=%s' % self.npm_bin
+ require('app_path')
+
+ build_cmd = '../../ve/bin/python manage.py build --npm-bin=%s --editor-npm-env=%s' \
+ % (self.npm_bin, os.path.join(env['app_path'], 'npm_env'))
if 'node_bin_path' in self.env_vars:
build_cmd += ' --node-bin-path=%s' % self.env_vars['node_bin_path']
if 'node_bin_path' in self.env_vars:
build_cmd += ' --node-bin-path=%s' % self.env_vars['node_bin_path']