10

OS

Mac OSX El Capitan

Versions

angular-cli: 1.0.0-beta.8 , node: 6.2.0, os: darwin x64

Description

I tried to add lodash library in angular-cli project:

  • npm install --save lodash
  • typings install lodash --global --save

Successfully installed in node_modules. 👍

system-config.ts:

/** Map relative paths to URLs. */
const map: any = {
  'lodash': 'vendor/lodash',
};

/** User packages configuration. */
const packages: any = {
  'lodash': {
    format: 'cjs',
    defaultExtension: 'js',
    main: 'core.js'
  }
};

angular-cli-build.js

var Angular2App = require('angular-cli/lib/broccoli/angular2-app');

module.exports = function(defaults) {
  return new Angular2App(defaults, {
    vendorNpmFiles: [
      'systemjs/dist/system-polyfills.js',
      'systemjs/dist/system.src.js',
      'zone.js/dist/**/*.+(js|js.map)',
      'es6-shim/es6-shim.js',
      'reflect-metadata/**/*.+(ts|js|js.map)',
      'rxjs/**/*.+(js|js.map)',
      '@angular/**/*.+(js|js.map)',
      'lodash/**/*.+(js|js.map)'
    ]
  });
};

And then I tried to import in a service in different ways:

  1. import { chunk, intersection, zip } from 'lodash';

    Error: Cannot find module 'lodash'
    
  2. declare var _; const {chunk, intersection, zip} = _;

     Error: Cannot find name 'chunk'
            Cannot find name 'intersection'
            Cannot find name 'zip'
    

I don't found the way to use lodash...

I did something wrong? I miss something? Is there an issue?

Thank you very much,

Aral.


Similar questions (but don't answer my question):

Official docs:

1

2 Answers 2

8

Change system-config.ts to:

const map: any = {
  'lodash': 'vendor/lodash',
};

const packages: any = {
  'lodash': {
    format: 'cjs',
    defaultExtension: 'js',
    main: 'index.js'
  }
};

And then import it as:

import 'lodash';
declare var _;

Finally use it as:

_.chunk();
Sign up to request clarification or add additional context in comments.

3 Comments

import 'lodash'; declare var _; This worked for me - did not even set format in packages. The import * as _ from 'lodash'; syntax worked perfectly on Plunker... any explanation?
@ootwch Plunkr link?
Here you go - this plunker is not designed to demonstrate this, this is just one of my experiments. plnkr.co/edit/kAcaV16mlXrso8jWpq8C?p=preview
1

@codef0rmer answer is good, but if you want specific lodash dependencies and not the whole library, here is an answer with example on how to do that: https://stackoverflow.com/a/38317093/1426570

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.