ビルドカスタム要素แบบ エントリーポイントด้วย Svelet 3
10747 ワード
การสร้าง 横柄なด้วย スベルトทำได้ง่ายมากอยู่แล้ว แล้วยัง 設定เพียงไม่กี่ขั้นตอน แต่มีสิ่งที่เราต้องการจัดการคือการ ビルドコンポーネントออกมาหลายๆ コンポーネントพร้อมๆกัน
เราเตรียม Webコンポーネント構造ตามภาพนะครับ มี テキストボックス、ボタン
เราอยากจะ ビルドコンポーネントให้ได้ตามโครงสร้างที่เราได้กำหนดไว้ใน
ก่อน ビルド
หลัง ビルド
เรียบร้อยแล้วครับ ได้โครงสร้าง コンポーネントตามที่เรา デザインไว้ที่ src แล้ว แล้วยังสามารถ ビルドコンポーネントพร้อมกันหลายไฟล์ได้ด้วย สบายเลยงานนี้
เราสามารถเข้า コンポーネントทั้งหมดภายใต้ WebHoundコンポーネント/インデックス.jsได้ทันที หรือจะเลือกใช้ コンポーネントที่ละตัวได้ ตามที่ต้องการ
การสร้างและ ビルドコンポーネントใน スベルトไม่ใช่เรื่องยากอีกต่อไป ท่านใดที่อ่านยังไม่เข้าใจสามมรถย้อนไปดูเรื่องการ สร้าง コンポーネントด้วย スベルトได้ ตาม リンクด้านล่างได้เลยครับ
สามารถเรียนรู้การใช้งาน スベルトแบบ 一歩一歩ได้ที่
Svelte: Framework Not Framework — (ตอนที่ 1) แรกรู้จัก
ขอบคุณทุกท่านที่อ่านมาถึงตรงนี้ ถ้าอ่านแล้วรู้มีประโยชน์ ฝากกด 購読するหรือ シェアリンクให้คนอื่นรับรู้ด้วยนะครับ ขอบคุณครับ
เราเตรียม Webコンポーネント構造ตามภาพนะครับ มี テキストボックス、ボタン
เราอยากจะ ビルドコンポーネントให้ได้ตามโครงสร้างที่เราได้กำหนดไว้ใน
src/web_components
เราจะ 設定ยังไงกัน มาดูครับ/** rollup.config.js */
import svelte from "rollup-plugin-svelte";
import path from "path";
import multiInput from "rollup-plugin-multi-input";
import fs from "fs";
จากนั้นกำหนด ベースパスของเราให้เรียบร้อยครัlet basePath = path.join(__dirname, "./src/web_components");
เริ่มอ่าน フォルダทั้งหมดจาก ベースパスที่เราได้กำหนดconst getAllFiles = (dir) =>
fs.readdirSync(dir).reduce((files, file) => {
...
}, []);
จากนั้นเอา フォルダและ ファイルมา 結合กันconst getAllFiles = (dir) =>
fs.readdirSync(dir).reduce((files, file) => {
const name = path.join(dir, file);
...
}, []);
ตรวจสอบว่าชื่อที่ได้มาเป็น ファイルหรือ フォルダconst getAllFiles = (dir) =>
fs.readdirSync(dir).reduce((files, file) => {
const name = path.join(dir, file);
const isDirectory = fs.statSync(name).isDirectory();
...
}, []);
ถ้าชื่อยังเป็น フォルダอยู่ก็ไปหาไฟล์มาใหม่ โดยใช้หลักการของ 再帰機能ถ้าเป็น ファイルแล้วก็ไป 合併するเข้ากับ ファイルแล้วก็ リターンชื่อไฟล์ทั้งหมดออกไป เป็น アレイconst getAllFiles = (dir) =>
fs.readdirSync(dir).reduce((files, file) => {
const name = path.join(dir, file);
const isDirectory = fs.statSync(name).isDirectory();
return isDirectory ? [...files, ...getAllFiles(name)] : [...files, name];
}, []);
เรียกใช้งานเพื่อเอาชื่อไฟล์ทั้งหมดออกมาเป็น アレイconst srcFiles = getAllFiles(basePath);
เรียกใช้งาน ソースファイルเข้าไปใน 設定ในช่อง 入力ซึ่ง 入力ของ ロールプสามารถรับค่าเป็น アレイได้ นั่นเลยทำเราสามารถส่ง エントリーポイントเข้าไปแบบ 複数エントリポイントได้export default {
input: srcFiles,
output: {
format: "es",
dir: "public/build",
},
plugins: [
svelte({
compilerOptions: {
customElement: true },
}),
multiInput({
relative: "src/",
transformOutputPath: (output) => {
return output;
},
})
]
};
พอ 設定เสร็จลองมา ビルドกันครับ yarn build / npm run build
ก่อน ビルド
หลัง ビルド
เรียบร้อยแล้วครับ ได้โครงสร้าง コンポーネントตามที่เรา デザインไว้ที่ src แล้ว แล้วยังสามารถ ビルドコンポーネントพร้อมกันหลายไฟล์ได้ด้วย สบายเลยงานนี้
เราสามารถเข้า コンポーネントทั้งหมดภายใต้ WebHoundコンポーネント/インデックス.jsได้ทันที หรือจะเลือกใช้ コンポーネントที่ละตัวได้ ตามที่ต้องการ
การสร้างและ ビルドコンポーネントใน スベルトไม่ใช่เรื่องยากอีกต่อไป ท่านใดที่อ่านยังไม่เข้าใจสามมรถย้อนไปดูเรื่องการ สร้าง コンポーネントด้วย スベルトได้ ตาม リンクด้านล่างได้เลยครับ
สามารถเรียนรู้การใช้งาน スベルトแบบ 一歩一歩ได้ที่
Svelte: Framework Not Framework — (ตอนที่ 1) แรกรู้จัก
ขอบคุณทุกท่านที่อ่านมาถึงตรงนี้ ถ้าอ่านแล้วรู้มีประโยชน์ ฝากกด 購読するหรือ シェアリンクให้คนอื่นรับรู้ด้วยนะครับ ขอบคุณครับ
Reference
この問題について(ビルドカスタム要素แบบ エントリーポイントด้วย Svelet 3), 我々は、より多くの情報をここで見つけました https://dev.to/sutin1234/build-customelement-entry-point-svelte3-1pbjテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol