Compare commits
5 Commits
@advdomini
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
7a39d520dd
|
|||
|
e4d9075ebe
|
|||
|
b8286098ff
|
|||
|
27a16018f3
|
|||
|
5c773895cb
|
@@ -1,70 +0,0 @@
|
|||||||
# babel-plugin-nunjucks
|
|
||||||
|
|
||||||
Плагин для [babel-loader](https://github.com/babel/babel-loader), позволяющий использовать шаблонизатор [Nunjucks](https://mozilla.github.io/nunjucks/) внутри JS-файлов.
|
|
||||||
|
|
||||||
## Установка
|
|
||||||
|
|
||||||
```bash
|
|
||||||
yarn add -D @advdominion/babel-plugin-nunjucks
|
|
||||||
```
|
|
||||||
|
|
||||||
## Использование
|
|
||||||
|
|
||||||
Используются [Tagged templates](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) с тегом `njk`:
|
|
||||||
|
|
||||||
```js
|
|
||||||
njk`
|
|
||||||
{% from "./item.njk" import item as item %}
|
|
||||||
|
|
||||||
<div class="items">
|
|
||||||
{% for n in range(0, 10) %}
|
|
||||||
{{item()}}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
```
|
|
||||||
|
|
||||||
Пример конфигурации Webpack:
|
|
||||||
|
|
||||||
```js
|
|
||||||
[
|
|
||||||
{
|
|
||||||
test: /\.js$/,
|
|
||||||
exclude: [/mocks\.js$/],
|
|
||||||
use: [
|
|
||||||
{
|
|
||||||
loader: 'babel-loader',
|
|
||||||
options: {
|
|
||||||
cacheDirectory: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /mocks\.js$/,
|
|
||||||
use: [
|
|
||||||
{
|
|
||||||
loader: 'babel-loader',
|
|
||||||
options: {
|
|
||||||
compact: false,
|
|
||||||
plugins: [
|
|
||||||
[
|
|
||||||
'@advdominion/babel-plugin-nunjucks',
|
|
||||||
{
|
|
||||||
templatesFolder: 'src/templates/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
## Опции
|
|
||||||
|
|
||||||
- `templatesFolder` - строка, обязательный параметр. Путь до папки с файлами шаблонов
|
|
||||||
- `globals` - массив, необязательный параметр. Глобальные переменные для Nunjucks (например, `[{name: "message", value: "Hello, world!"}]`)
|
|
||||||
|
|
||||||
**Важно:** Параметр `cacheDirectory` в опциях babel-loader должен быть отключён.
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import nunjucks from 'nunjucks';
|
|
||||||
|
|
||||||
const babelPluginNunjucks = ({ types: t }) => {
|
|
||||||
return {
|
|
||||||
pre(state) {
|
|
||||||
const options = state.opts.plugins[0].options;
|
|
||||||
this.njkenv = new nunjucks.Environment(new nunjucks.FileSystemLoader(options.templatesFolder));
|
|
||||||
if (options.globals) {
|
|
||||||
for (const { name, value } of options.globals) {
|
|
||||||
this.njkenv.addGlobal(name, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
visitor: {
|
|
||||||
TaggedTemplateExpression(path) {
|
|
||||||
if (path.get('tag').isIdentifier({ name: 'njk' })) {
|
|
||||||
const render = this.njkenv.renderString(path.node.quasi.quasis[0].value.raw);
|
|
||||||
path.replaceWith(t.stringLiteral(render));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export default babelPluginNunjucks;
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@advdominion/babel-plugin-nunjucks",
|
|
||||||
"version": "4.0.0",
|
|
||||||
"type": "module",
|
|
||||||
"main": "index.js",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitea.optiweb.ru/public/frontend.git"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/core": "^8.0.0",
|
|
||||||
"nunjucks": "^3.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# @advdominion/browserslist-to-targets
|
# @advdominion/browserslist-to-targets
|
||||||
|
|
||||||
Преобразует конфиг [browserslist](https://github.com/browserslist/browserslist) в массив target-строк, совместимый с [esbuild](https://esbuild.github.io) и [Oxc](https://oxc-project.github.io).
|
Преобразует конфиг [browserslist](https://github.com/browserslist/browserslist) в массив target-строк, совместимый с [esbuild](https://esbuild.github.io) и [Oxc](https://oxc.rs).
|
||||||
|
|
||||||
## Зачем
|
## Зачем
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@advdominion/browserslist-to-targets",
|
"name": "@advdominion/browserslist-to-targets",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
# lightningcss-loader
|
|
||||||
|
|
||||||
[Lightning CSS](https://lightningcss.dev) loader for [Webpack](https://webpack.js.org)
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { transform } from 'lightningcss';
|
|
||||||
|
|
||||||
return {
|
|
||||||
...,
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.css$/,
|
|
||||||
use: [
|
|
||||||
{
|
|
||||||
loader: '@advdominion/lightningcss-loader',
|
|
||||||
options: {
|
|
||||||
implementation: transform,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
### Passing options to Lightning CSS
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { transform } from 'lightningcss';
|
|
||||||
|
|
||||||
return {
|
|
||||||
...,
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.css$/,
|
|
||||||
use: [
|
|
||||||
{
|
|
||||||
loader: '@advdominion/lightningcss-loader',
|
|
||||||
options: {
|
|
||||||
implementation: transform,
|
|
||||||
drafts: {
|
|
||||||
customMedia: true,
|
|
||||||
},
|
|
||||||
minify: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
```
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
const lightningcssLoader = function (source, sourceMap) {
|
|
||||||
const { implementation, ...options } = this.getOptions();
|
|
||||||
const callback = this.async();
|
|
||||||
|
|
||||||
if (typeof implementation !== 'function') {
|
|
||||||
throw new TypeError(
|
|
||||||
`[lightningcss-loader]: The "implementation" option is required and must provide "transform" function of the LightningCSS`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const { code, map } = implementation({
|
|
||||||
filename: this.resourcePath,
|
|
||||||
code: Buffer.from(source),
|
|
||||||
sourceMap: this.sourceMap,
|
|
||||||
inputSourceMap: this.sourceMap && sourceMap ? JSON.stringify(sourceMap) : undefined,
|
|
||||||
...options,
|
|
||||||
});
|
|
||||||
|
|
||||||
callback(undefined, code.toString(), map && JSON.parse(map.toString()));
|
|
||||||
};
|
|
||||||
|
|
||||||
export default lightningcssLoader;
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@advdominion/lightningcss-loader",
|
|
||||||
"version": "1.0.2",
|
|
||||||
"type": "module",
|
|
||||||
"main": "index.js",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://gitea.optiweb.ru/public/frontend.git"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -23,6 +23,7 @@ yarn add -D @advdominion/sass-importer
|
|||||||
## Использование
|
## Использование
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { createRequire } from 'node:module';
|
||||||
import { createImporter } from '@advdominion/sass-importer';
|
import { createImporter } from '@advdominion/sass-importer';
|
||||||
|
|
||||||
const require = createRequire(import.meta.url);
|
const require = createRequire(import.meta.url);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@advdominion/sass-importer",
|
"name": "@advdominion/sass-importer",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export default {
|
|||||||
'block-no-empty': null,
|
'block-no-empty': null,
|
||||||
'no-invalid-double-slash-comments': null,
|
'no-invalid-double-slash-comments': null,
|
||||||
'no-invalid-position-declaration': [true, { ignoreAtRules: ['media'] }],
|
'no-invalid-position-declaration': [true, { ignoreAtRules: ['media'] }],
|
||||||
|
'length-zero-no-unit': true,
|
||||||
'property-disallowed-list': [
|
'property-disallowed-list': [
|
||||||
['animation', 'background', 'border', 'flex', 'font', 'grid', 'margin', 'padding', 'transition'],
|
['animation', 'background', 'border', 'flex', 'font', 'grid', 'margin', 'padding', 'transition'],
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@advdominion/stylelint-config",
|
"name": "@advdominion/stylelint-config",
|
||||||
"version": "2.0.1",
|
"version": "2.1.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
21
yarn.lock
21
yarn.lock
@@ -5,15 +5,6 @@ __metadata:
|
|||||||
version: 10
|
version: 10
|
||||||
cacheKey: 10c0
|
cacheKey: 10c0
|
||||||
|
|
||||||
"@advdominion/babel-plugin-nunjucks@workspace:packages/babel-plugin-nunjucks":
|
|
||||||
version: 0.0.0-use.local
|
|
||||||
resolution: "@advdominion/babel-plugin-nunjucks@workspace:packages/babel-plugin-nunjucks"
|
|
||||||
peerDependencies:
|
|
||||||
"@babel/core": ^8.0.0
|
|
||||||
nunjucks: ^3.0.0
|
|
||||||
languageName: unknown
|
|
||||||
linkType: soft
|
|
||||||
|
|
||||||
"@advdominion/browserslist-to-targets@workspace:packages/browserslist-to-targets":
|
"@advdominion/browserslist-to-targets@workspace:packages/browserslist-to-targets":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@advdominion/browserslist-to-targets@workspace:packages/browserslist-to-targets"
|
resolution: "@advdominion/browserslist-to-targets@workspace:packages/browserslist-to-targets"
|
||||||
@@ -42,18 +33,18 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
"@advdominion/lightningcss-loader@workspace:packages/lightningcss-loader":
|
|
||||||
version: 0.0.0-use.local
|
|
||||||
resolution: "@advdominion/lightningcss-loader@workspace:packages/lightningcss-loader"
|
|
||||||
languageName: unknown
|
|
||||||
linkType: soft
|
|
||||||
|
|
||||||
"@advdominion/pluralize@workspace:packages/pluralize":
|
"@advdominion/pluralize@workspace:packages/pluralize":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@advdominion/pluralize@workspace:packages/pluralize"
|
resolution: "@advdominion/pluralize@workspace:packages/pluralize"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@advdominion/sass-importer@workspace:packages/sass-importer":
|
||||||
|
version: 0.0.0-use.local
|
||||||
|
resolution: "@advdominion/sass-importer@workspace:packages/sass-importer"
|
||||||
|
languageName: unknown
|
||||||
|
linkType: soft
|
||||||
|
|
||||||
"@advdominion/scroll-to@workspace:packages/scroll-to":
|
"@advdominion/scroll-to@workspace:packages/scroll-to":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@advdominion/scroll-to@workspace:packages/scroll-to"
|
resolution: "@advdominion/scroll-to@workspace:packages/scroll-to"
|
||||||
|
|||||||
Reference in New Issue
Block a user