SassAndCoffee компилирует CoffeeScript с параметром «голый». Могу ли я это контролировать?

#coffeescript

#coffeescript

Вопрос:

Если я установлю SassAndCoffee.Основной пакет из NuGet, а затем попросите SassAndCoffee скомпилировать какой-нибудь CoffeeScript, похоже, он передает «голую» опцию компилятору CoffeeScript — т. Е. Он не оборачивает мой скрипт в обычные (function() { и }).call(this); форзацы CoffeeScript.

Есть ли способ заставить SassAndCoffee не использовать «голую» опцию?

Примечание: это в настольном приложении, и я явно вызываю код SassAndCoffee — это не волшебное переписывание, которое происходит в ASP.NET сайт.

Подробнее: Вот мой код для компиляции CoffeeScript с использованием SassAndCoffee.

 var sassCompiler = new CoffeeScriptCompiler();
var js = sassCompiler.Compile("alert 'Hello World'");
 

что приводит к следующему (голому) выводу в js переменной:

 alert('Hello World');
 

Но если я напишу какой-нибудь простой JavaScript, который вызывает официальный компилятор CoffeeScript с параметрами по умолчанию, например, этот HTML-файл (drop coffee-script.js в тот же каталог):

 <script src="coffee-script.js"></script>
<script>
document.write("<pre>")
document.write(CoffeeScript.compile("alert 'Hello World'"))
document.write("</pre>")
</script>
 

Я получаю ожидаемый, завернутый вывод JavaScript:

 (function() {
  alert('Hello World');
}).call(this);
 

Похоже, что SassAndCoffee вызывает CoffeeScript.compile(input, {bare: true}) вместо just CoffeeScript.compile(input) .

Я бы хотел использовать SassAndCoffee.Core для его поддержки версии 8, но я хочу иметь возможность выбирать между выводом по умолчанию и голым выводом. Если не считать переписывания компилятора CoffeeScript от SassAndCoffee (что в некотором роде лишило бы смысла использовать SassAndCoffee) или ручного добавления и добавления кода-оболочки (я бы чувствовал себя грязным, дублируя работу, которую должен выполнять компилятор), есть ли какой-нибудь способ заставить SassAndCoffee выводить не голый JavaScript?

Ответ №1:

Если я правильно это понимаю, то, похоже, это явное решение разработчиков:

https://github.com/xpaulbettsx/SassAndCoffee/blob/43300b7805db8b3dccf20cc71d1282ecfd8c76e1/SassAndCoffee.Core/CoffeeScript/coffee-script.js

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

В качестве альтернативы, на случай, если вы застряли, я использую Mindscape Web Workbench в качестве плагина Visual Studio, который, похоже, выполняет большую часть того, что, по-видимому, выполняет SassAndCoffee за вас.

Комментарии:

1. Я действительно хочу скомпилировать CoffeeScript во время выполнения, а не в IDE, и не похоже, что Mindscape Web Workbench позволяет мне это сделать. Тем не менее, окончательный ответ здесь, похоже, «Нет, (в настоящее время) нет способа заставить SassAndCoffee выводить не-голый JavaScript», что соответствует тому, что я слышал от автора.