export default()

in packages/plugin-less/src/index.ts [18:78]


export default (api: PluginAPI, config: ILessOption) => {

  api.registerAPI('less', async (opts: ILessOption) => {
    const option = {
      ...config,
      ...opts
    };
    if (!fs.existsSync(option.src)) {
      return;
    }
    const lessText = await fs.readFile(option.src, 'UTF-8');
    const css = await api.dispatch<string, string>('lessRender', lessText);
    const result = postcss([
      autoprefixer(
        {
          browsers: [
            '> 0%',
            'not ie <= 9',
          ],
        }
      )
    ])
      .process(css, {
        from: option.src,
        to: option.dest
      });

    if (option.sourceMap && result.map) {
      await fs.writeFile(`${option.dest}.map`, result.map);
    }

    if (result.css) {
      await fs.writeFile(`${option.dest}`, result.css);
    }
  });

  api.registerAPI('lessRender', async (source: string) => {
    return new Promise((resolve, reject) => {
      less.render(source, (error, output) => {
        if (!error) {
          resolve(output?.css);
        } else {
          reject(error);
        }
      });
    });
  });

  api.on('onBabelBuildEnd', async () => {
    // if (!fs.existsSync(config.src)) {
    //   return;
    // }
    copydir.sync(config.src, config.lib, 
      (stat: string, filepath: string, filename: string) => {
        if(stat === 'file' && extname(filepath) === '.less') {
          return true;
        }
        return false;
      });
  });
};