Проблемы за выполнение Jekyll и задач через ESMJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы за выполнение Jekyll и задач через ESM

Сообщение Anonymous »

Я сталкиваюсь с странным поведением, управляющего Jekyll Build. Я начинаю сборку с помощью npm start из package.json
shrong>package.json

Код: Выделить всё

  "scripts": {
"start": "node index.mjs",
"test": "echo \"Error: no test specified\" && exit 1"
},
, которые выполняют необходимые задачи для создания сайта Jekyll через файл index.mjs .
import { exec } from "child_process";
import browserSync from "browser-sync";
import fs from "fs";
import postcss from "postcss";
import autoprefixer from "autoprefixer";
import { minify } from "terser";

const mainJsFile = "main.min.js";

function deleteSiteDirectory() {
const siteDir = "./_site";
const sassCacheDir = "./.sass-cache";

// Delete _site directory
fs.rm(siteDir, { recursive: true, force: true }, (err) => {
if (err) {
console.error(`Error deleting directory ${siteDir}: ${err}`);
} else {
console.log(`Directory ${siteDir} has been deleted`);
}
});

// Delete .sass-cache directory
fs.rm(sassCacheDir, { recursive: true, force: true }, (err) => {
if (err) {
console.error(`Error deleting directory ${sassCacheDir}: ${err}`);
} else {
console.log(`Directory ${sassCacheDir} has been deleted`);
}
});

// Delete main.min.js file
fs.rm(mainJsFile, { force: true }, (err) => {
if (err) {
console.error(`Error deleting file ${mainJsFile}: ${err}`);
} else {
console.log(`File ${mainJsFile} has been deleted`);
}
});
}

async function concatenateAndMinifyJsFiles() {
const jsDir = "./js/utils/";

try {
// Delete main.min.js file
await fs.promises.rm(mainJsFile, { force: true });
console.log(`File ${mainJsFile} has been deleted`);

// Concatenate and minify .js files
const files = await fs.promises.readdir(jsDir, { withFileTypes: true });
const jsFiles = files.filter((file) => file.isFile() && file.name.endsWith(".js"));
if (jsFiles.length === 0) {
console.log(`No .js files found in ${jsDir}`);
return;
}

const concatenatedJs = jsFiles.map((file) => fs.readFileSync(`${jsDir}${file.name}`, "utf8")).join("\n");
const result = await minify(concatenatedJs);
const minifiedJs = result.code;

const outputDir = "./js/";
const outputFile = `${outputDir}${mainJsFile}`;

await fs.promises.writeFile(outputFile, minifiedJs);
console.log(`File ${mainJsFile} has been created`);
} catch (err) {
console.error(`Error: ${err}`);
}
}

function runJekyllCommand() {
exec("jekyll serve --watch", (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);

// Start BrowserSync
browserSync.init({
server: {
baseDir: "_site/",
},
});

// Watch for changes in the source files and reload the browser
browserSync.watch("./_site/*.*").on("change", browserSync.reload);
});

// Initialize Browsersync
browserSync.init({
server: {
baseDir: "./_site/",
},
});

// Use Browsersync reload function as a listener to Jekyll build events
browserSync.watch("**/*.*").on("change", browserSync.reload);
}

function autoprefixCssFiles() {
const cssDir = "./_site/css/";
fs.readdir(cssDir, (err, files) => {
if (err) {
console.error(`Error reading directory ${cssDir}: ${err}`);
return;
}

files.forEach((file) => {
if (file.endsWith(".css")) {
const filePath = `${cssDir}${file}`;
fs.readFile(filePath, (err, css) => {
if (err) {
console.error(`Error reading file ${filePath}: ${err}`);
return;
}

postcss([autoprefixer({ overrideBrowserslist: [">1%"] })])
.process(css, { from: filePath, to: filePath })
.then((result) => {
fs.writeFile(filePath, result.css, (err) => {
if (err) console.error(`Error writing file ${filePath}: ${err}`);
});
});
});
}
});
});
}

if (process.env.NODE_ENV !== "production") {
deleteSiteDirectory();
concatenateAndMinifyJsFiles();
runJekyllCommand();
autoprefixCssFiles();

console.log("Running in development mode. Development tasks have been executed");
}
< /code>
Когда откроется браузер, я получаю невозможно получить /< /code> сообщение на экране и ничего больше. Вот скриншот. Если я обновлю браузер, сайт есть. Я не могу определить, почему это происходит.


Подробнее здесь: https://stackoverflow.com/questions/794 ... ks-via-esm
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Запуск Vue + Vite SPA на Android WebView API 29: проблема с загрузкой модулей ESM из локального хранилища
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Vite: не удалось объединить зависимость-зависимость в формате commonJS — преобразовано в ESM
    Anonymous » » в форуме Javascript
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • TSConfig/Linter для предотвращения названного импорта модуля CJS из ESM
    Anonymous » » в форуме Javascript
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Transformmixedesmodules, не работающие для смешанных модулей ESM/CommonJS
    Anonymous » » в форуме Javascript
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Установка активных ссылок в Jekyll не работает
    Гость » » в форуме CSS
    0 Ответы
    21 Просмотры
    Последнее сообщение Гость

Вернуться в «Javascript»