stealjs / steal

Gets JavaScript
https://stealjs.com
MIT License
1.36k stars 522 forks source link

Tree-shaking removes exports when there is a side-effectual import #1486

Closed phillipskevin closed 5 years ago

phillipskevin commented 5 years ago

This code:

import { Component, DefineMap, DefineList } from "can";

import "component-tree/component-tree";
import "panel/panel.less";

export default Component.extend({
    tag: "components-panel",
    ViewModel: {
      // ...
    },
    view: `
      ...
    `
});

export { Component, DefineMap, DefineList };

becomes:

import { Component, DefineMap, DefineList } from "can";

import "component-tree/component-tree";
import "panel/panel.less";

export default Component.extend({
    tag: "components-panel",
    ViewModel: {
      // ...
    },
    view: `
      ...
    `
});

...in the browser or after the file is built.

Without these lines, it works correctly:

import "component-tree/component-tree";
import "panel/panel.less";