javascriptangulartypescriptrollupng2-dragula

'DragulaModule' is not exported by node_modules\ng2-dragula\index.js


'DragulaModule' is not exported by node_modules\ng2-dragula\index.js
https://github.com/rollup/rollup/wiki/Troubleshooting#name-is-not-exported-by-module
app\app.module.js (13:9)
11: import { BrowserModule } from '@angular/platform-browser';
12: import { AppComponent } from './app.component';
13: import { DragulaModule } from 'ng2-dragula';
             ^
14: import { FileUploadModule } from "ng2-file-upload";

rollup.config.js

import rollup      from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs    from 'rollup-plugin-commonjs';
import uglify      from 'rollup-plugin-uglify';

export default {
  entry: 'app/main.js',
  dest: 'dist/build.js',
  sourceMap: false,
  format: 'iife',
  plugins: [
      nodeResolve({jsnext: true, module: true}),
      commonjs({
        include: 'node_modules/rxjs/**',
      }),
      uglify()
  ]
}

Using Rollup for tree-shaking and build gives me the above error after successfully generating files with aot. Any suggestion is highly appreciated.


Solution

  • Try add a named export in your rollup.config

    commonjs({
          include: 'node_modules/rxjs/**',
          namedExports: {
            'node_modules/ng2-dragula/ng2-dragula.js': [ 'DragulaModule', 'DragulaService' ]
          }
        })

    You can read more about custom named exports here: https://github.com/rollup/rollup-plugin-commonjs#custom-named-exports