Socket
Book a DemoInstallSign in
Socket

component2duo

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

component2duo

convert your component project into a duo project

latest
Source
npmnpm
Version
0.0.10
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

compoonent2duo

convert your component app into duo app

Duo doesn't have any concept of local components. This tool rewrites your require paths for local components by analyzing your root component and all your locals and scripts which are listed in your component.json files.

Limitation / not implemented yet

  • root component should have only one element in the paths array
  • lookup paths of local components will be ignore, only the root component paths is used
  • only files which are listed in the .scripts property of your component.json files are analyzed

install

npm install component2duo

usage

var Converter = require('component2duo');
var c = new Converter('rootComponentPath', Converter.ABSOLUTE, {simulate:true});
var result = c.start();
console.log(result);

API

Converter(path, mode, opt)

  • path to the root component.json
  • mode Converter.ABSOLUTE or Converter.RELATIVE
  • opt options object
    • simulate - boolean, if true: don't rewrite changes to filesystem, return the changes as result of start(), default false
    • debug - boolean, if true: print each require path transformation to stdout
    • localManifest filename of the local components manifest, default component.json

Mode

Converter.ABSOLUTE will rewrite require paths relative to the root component with a leading slash, for instance: /lib/local.

Converter.RELATIVE will rewrite require paths relative to each local component, for instance: ../local.

CLI

node_modules/.bin/component2duo ~/myApp/component.json 0 true
  • first argument: path to root component
  • second argument: mode; 0 = ABSOLUTE, 1 = RELATIVE
  • third argument (optional): simulate and print require transformation to stdout

example

Assume you have this directory structure

myApp
├── component.json
└── lib
    ├── bar
    │   ├── component.json
    │   ├── index.js
    │   └── qux.js
    └── foo
        ├── component.json
        ├── index.js
        ├── script.js
        └── sub
            └── baz.js

Your root component is located at myApp/component.json with this content:

{
    "name": "myApp",
    "paths": ["lib"],
    "locals": ["foo"]
}

myApp/foo/component.json:

{
    "locals": ["bar"],
    "scripts": [
        "index.js",
        "script.js",
        "sub/baz.js"
    ],
    "main": "index.js"
}

With component you can write require('bar') in the scripts of foo. With this tool you can choose if you want to rewrite it into an absolute require('/lib/bar') or relative require('../bar') path.

example CLI output

If you checkout this project (and make a npm install) you can run:

$ ./bin/cli test/fixtures/simple/component.json 0 true

then you get this result:

lib/foo/script.js: 'bar' -> '/lib/bar'
lib/foo/script.js: 'bar/qux' -> '/lib/bar/qux'

Development

git clone https://github.com/timaschew/component2duo.git
cd component2duo
npm install
npm test

Currently I'm not using any generator functions, but I will, so currently just ignore the build-generator directory. If you don't want use CoffeeScript you can use the build/index.js.

FAQs

Package last updated on 02 Sep 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts