2017-06-12 2 views
0

J'essaie d'obtenir des importations partielles de lodash pour fonctionner dans un environnement webpack/tapuscrit/réactif afin de réduire la taille du paquet. J'utilise [email protected] et [email protected]webpack & tapuscrit: importation de lodash partiel avec es5 comme cible ne fonctionnant pas

Je sais que je ne devrais pas importer lodash comme celui-ci, comme il importe toute bibliothèque lodash:

import * as lodash from 'lodash'; 
lodash.clone({}); 

J'ai donc essayé ceci:

import { clone, create } from 'lodash'; 

Mais encore continue d'importer toute la librairie et pas seulement les fonctions dont j'ai besoin (bundlesize ne change pas). Donc je lis un peu et vu ceci:

import clone = require('lodash/clone'); 

Cela a effectivement travaillé, seules les fonctions que je avais besoin obtenir importés et mon bundlesize est quelques centaines de Ko plus petit. Mais malheureusement tapuscrit me donne l'erreur suivante (erreur est affiché uniquement lors de la construction du faisceau, lorsque vous exécutez tout montre/Webdev-serveur est très bien):

Import assignment cannot be used when targeting ECMAScript 2015 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead. 

Est-ce parce que je suis "target":"es5" dans ma config dactylographiée? Et si oui, comment puis-je encore réaliser des importations partielles avec des modules es5 comme cible?

Ma config dactylographiée ressemble à ceci:

{ 
    "compilerOptions": { 
    "sourceMap": true, 
    "target": "es5", 
    "jsx": "react", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "declaration": false, 
    "noImplicitAny": false, 
    "noImplicitReturns": false, 
    "removeComments": true, 
    "strictNullChecks": false, 
    "outDir": "build", 
    "lib": [ 
     "es6", 
     "es7", 
     "dom" 
    ] 
    }, 
    "exclude": [ 
    "dist", 
    "build", 
    "node_modules", 
    "bower_components" 
    ] 
} 

Toutes les idées?

EDIT: Quand je fais juste un besoin régulier:

const clone = require('lodash/clone'); 

tout se compile sans erreurs (la montre et la construction). Est-ce la bonne façon d'importer la dernière version de lodash? Il semble mal

+0

Quelle version de lodash utilisez-vous? – Hitmands

+0

J'utilise 'lodash @ 4.17.4' –

Répondre

0

que j'Importons lodash

import { clone } from 'lodash/clone' 
+0

Hey merci, mais j'ai déjà eu des types installés pour lodash. Cela ne peut donc pas être le problème (je les ai également mis à jour). –

+0

Avez-vous essayé d'éteindre 'noImplicitAny'? C'est ma config et ça marche https://github.com/ematipico/typescript-sample/blob/master/tsconfig.json – Ematipico