babel-plugin-specify-imports
A Babel plugin that allows you to specify your imports based off a config file.
Last updated 3 months ago by ianband .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install babel-plugin-specify-imports 
SYNC missed versions from official npm registry.

Specify Imports

A Babel plugin that allows you to specify your imports based off a config file.

A good use case for this plugin would be a project that will be built many different times, and each build requires a different set of components. Instead of inculding each component for every different build, you can use Specify Imports to import only the required modules for that build.

Installation

$ npm install babel-specify-imports

Usage

In your .babelrc, or wherever your plugins are defined, specify the imports by defining moduleListPath. This path is relative to process.cwd().

{
    plugins: [
        ["specify-imports", {
            "moduleListPath": "path/to/settings.js",
            "extensions" : 'js',
            }
        ]
    ]
}

settings.js should export the list of module names that you want to use

module.exports = {
    moduleList: [
        "myModule",
        "aCustomModule",
        "awesomeComponent"
    ]
}

However, a more useful way to export the module list would be something like this

const settings = {
    views: [
        {
            moduleName: "myModule",
            viewSettings: {}
        },
        {
            moduleName: "aCustomModule",
            viewSettings: {}
        },
        {
            moduleName: "awesomeComponent",
            viewSettings: {}
        }
    ]
}
module.exports = {
    settings: settings, // to be used elsewhere in the project
    moduleList: settings.views.map(view => view.moduleName) // used by specify-import
}

In the file that you want to import your modules into, indicate that you will be using Specify Imports by using the "[list]" identifier and a relative path. Specify Imports will not modify any other import statements.

import myModules from './modules/[list]'; 

This will cause the above import statement to transpile into:

const myModules = {};
import  myThirdModule2 from "./modules/myThirdModule.js";
myModules["myThirdModule"] =  myThirdModule2;
import  myOtherModule1 from "./modules/myOtherModule.js";
myModules["myOtherModule"] =  myOtherModule1;
import  myModule0 from "./modules/myModule.js";
myModules["myModule"] =  myModule0;

The modules can be referenced like any object member

myModules.myOtherModule1.doSomething();

But its typically most useful to iterate through the parent object with a for...in loop, or another method.

for(const myModule in myModules){
    // do something with each imported module
}

Other Features

Specify Imports checks for the existance of a file before including it.

Future Features

  • Allow for granular specification of file types, or, let users associate module names with file extensions
  • Support multiple list identifiers. eg: [list1], [list2]

References

Current Tags

  • 1.1.1                                ...           latest (3 months ago)

3 Versions

  • 1.1.1                                ...           3 months ago
  • 1.1.0                                ...           3 months ago
  • 1.0.0                                ...           4 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (362)
Dev Dependencies (4)
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |