EmberJS: Настройка сборки Ember CLI

Я хочу преобразовать файл и поместить его в другой каталог как часть процессов сборки dev и prod. Как я могу этого добиться?


person karthikaruna    schedule 03.10.2018    source источник
comment
Что за трансформация?   -  person NullVoxPopuli    schedule 03.10.2018
comment
У меня есть файл JSON во вложенном формате. Что-то вроде { level1: { level2: "Hello" } }, которое я хочу сгладить до { "level1.level2": "Hello" } во время сборки и поместить в ту же папку.   -  person karthikaruna    schedule 03.10.2018
comment
Знаете ли вы, существует ли существующее преобразование Babel, которое делает это? Я знаю часть брокколи, но я не знаю, существует ли уже такое преобразование или нам нужно будет закодировать его самостоятельно.   -  person NullVoxPopuli    schedule 03.10.2018
comment
Я понял код для выполнения преобразования. Я просто хочу знать, как связать это с процессом сборки.   -  person karthikaruna    schedule 03.10.2018


Ответы (1)


Я думаю, чтение всего этого поможет: http://www.oligriffiths.com/broccolijs/

Это учебник о том, как работает брокколи и как он преобразует деревья файлов.

В вашей конкретной ситуации будет интересна эта страница: http://www.oligriffiths.com/broccolijs/05-es6-transpilation.html

конкретно это:

const funnel = require('broccoli-funnel');
const merge = require('broccoli-merge-trees');
const compileSass = require('broccoli-sass-source-maps')(require('sass'));
const babel = require('broccoli-babel-transpiler');

const appRoot = 'app';

// Copy HTML file from app root to destination
const html = funnel(appRoot, {
  files: ["index.html"],
  annotation: "Index file",
});

// Copy JS file into assets
let js = funnel(appRoot, {
  files: ["app.js"],
  destDir: "/assets",
  annotation: "JS files",
});

// Transpile JS files to ES5
js = babel(js, {
  browserPolyfill: true,
  sourceMap: 'inline',
});

// Copy CSS file into assets
const css = compileSass(
  [appRoot],
  'styles/app.scss',
  'assets/app.css',
  {
    sourceMap: true,
    sourceMapContents: true,
    annotation: "Sass files"
  }
);

// Copy public files into destination
const public = funnel('public', {
  annotation: "Public files",
});

module.exports = merge([html, js, css, public], {annotation: "Final output"});

надеюсь, что это поможет / даст вам достаточно информации для достижения того, что вам нужно

person NullVoxPopuli    schedule 03.10.2018
comment
Спасибо, это помогло, но я создал in-repo-addon, который служил моей цели. Кстати, есть идеи, как отключить просмотр определенных файлов после сборки? - person karthikaruna; 03.10.2018
comment
Я не знаю, как отключить просмотр определенных файлов. Может быть, лучше открыть еще один вопрос для этого :) - person NullVoxPopuli; 03.10.2018