mirror of
https://github.com/GenderDysphoria/GenderDysphoria.fyi.git
synced 2025-11-25 12:32:42 +00:00
Compare commits
6 Commits
8052bec31a
...
631013931d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
631013931d | ||
|
|
b88c034133 | ||
|
|
eeea779088 | ||
|
|
cf8be19728 | ||
|
|
6eafb7d435 | ||
|
|
54c7b125d9 |
15
.github/workflows/build.yml
vendored
15
.github/workflows/build.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
build-site:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Install GraphicsMagick
|
||||
run: sudo apt install graphicsmagick
|
||||
@@ -18,13 +18,13 @@ jobs:
|
||||
sudo apt install ./google-chrome-stable_current_amd64.deb
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v2
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '14'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Restore node_modules cache
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: node_modules
|
||||
key: ${{ runner.os }}-node_modules-${{ hashFiles('**/package-lock.json') }}
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
${{ runner.os }}-node_modules
|
||||
|
||||
- name: Restore Asset Cache
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
key: if-cache
|
||||
path: |
|
||||
@@ -49,6 +49,11 @@ jobs:
|
||||
- name: Build site
|
||||
run: npm run build
|
||||
|
||||
- name: Spawn HTTP server
|
||||
uses: Eun/http-server-action@v1
|
||||
with:
|
||||
directory: dist
|
||||
|
||||
- name: (EN) Generate PDF from HTML
|
||||
run: |
|
||||
google-chrome --headless --print-to-pdf-no-header \
|
||||
@@ -101,7 +106,7 @@ jobs:
|
||||
run: ls -la ${{ github.workspace }}/dist
|
||||
|
||||
- name: Upload PDFs
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: site-pdfs
|
||||
path: |
|
||||
|
||||
@@ -38,6 +38,7 @@ const markdownEngines = {
|
||||
typographer: true,
|
||||
})
|
||||
.enable('image')
|
||||
.use(require('markdown-it-footnote'))
|
||||
.use(require('markdown-it-link-attributes'), {
|
||||
pattern: /^https?:/,
|
||||
attrs: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const { chunk, uniq, uniqBy, difference } = require('lodash');
|
||||
const { uniq, uniqBy, difference } = require('lodash');
|
||||
const fs = require('fs-extra');
|
||||
const { resolve } = require('./resolve');
|
||||
const log = require('fancy-log');
|
||||
@@ -32,6 +32,7 @@ function applyI18N (original_tweet, twitter_i18n) {
|
||||
}
|
||||
|
||||
module.exports = exports = async function tweets (pages) {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const [ twitter, twitterBackup, twitterCache ] = await Promise.all([
|
||||
fs.readJson(resolve('twitter-config.json')).catch(() => null)
|
||||
.then(getTwitterClient),
|
||||
|
||||
@@ -2,7 +2,7 @@ const glob = require('./lib/glob');
|
||||
const { ROOT, readFile, resolve } = require('./resolve');
|
||||
const actions = require('./actions');
|
||||
const File = require('./file');
|
||||
const sass = require('node-sass');
|
||||
const sass = require('sass');
|
||||
const Promise = require('bluebird');
|
||||
const postcss = require('postcss');
|
||||
const autoprefixer = require('autoprefixer');
|
||||
@@ -45,21 +45,14 @@ class Sass extends File {
|
||||
contents = contents.replace(match, insert);
|
||||
}
|
||||
|
||||
const sassOptions = {
|
||||
data: contents,
|
||||
file: resolve(this.input),
|
||||
includePaths: [
|
||||
let { css } = await sass.compileStringAsync(contents, {
|
||||
loadPaths: [
|
||||
resolve(this.cwd),
|
||||
resolve('node_modules'),
|
||||
],
|
||||
sourceMapEmbed: true,
|
||||
};
|
||||
|
||||
let { css } = await (new Promise((resolve, reject) => { // eslint-disable-line no-shadow
|
||||
sass.render(sassOptions, (err, result) => (
|
||||
err ? reject(err) : resolve(result)
|
||||
));
|
||||
}));
|
||||
silenceDeprecations: [ 'mixed-decls', 'color-functions', 'global-builtin', 'import' ],
|
||||
});
|
||||
|
||||
if (prod) {
|
||||
css = (await postcss([ autoprefixer ]).process(css, {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const fs = require('fs-extra');
|
||||
const { resolve } = require('./resolve');
|
||||
const { chunk, uniq, difference } = require('lodash');
|
||||
const { uniq, difference } = require('lodash');
|
||||
const Twitter = require('twitter-lite');
|
||||
const log = require('fancy-log');
|
||||
const tweetparse = require('./lib/tweetparse');
|
||||
|
||||
@@ -4,7 +4,7 @@ var Promise = require('bluebird');
|
||||
|
||||
var credentials;
|
||||
try {
|
||||
credentials = require('../aws.json');
|
||||
credentials = require('../aws.json'); // eslint-disable-line import/no-unresolved
|
||||
} catch (e) {
|
||||
credentials = null;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ const parallelize = require('concurrent-transform');
|
||||
|
||||
var credentials;
|
||||
try {
|
||||
credentials = require('../aws.json');
|
||||
credentials = require('../aws.json'); // eslint-disable-line import/no-unresolved
|
||||
} catch (e) {
|
||||
credentials = null;
|
||||
}
|
||||
|
||||
3352
package-lock.json
generated
3352
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -74,11 +74,11 @@
|
||||
"make-fetch-happen": "^11.0.2",
|
||||
"markdown-it": "^13.0.1",
|
||||
"markdown-it-anchor": "^8.6.6",
|
||||
"markdown-it-footnote": "^4.0.0",
|
||||
"markdown-it-link-attributes": "^4.0.1",
|
||||
"memoizepromise": "^2.0.0",
|
||||
"minimist": "^1.2.7",
|
||||
"morgan": "^1.10.0",
|
||||
"node-sass": "^9.0.0",
|
||||
"plugin-error": "^2.0.1",
|
||||
"png-to-ico": "^2.1.8",
|
||||
"popper.js": "^1.16.0",
|
||||
@@ -89,6 +89,7 @@
|
||||
"rollup": "^3.9.1",
|
||||
"rollup-plugin-react-svg": "^3.0.3",
|
||||
"rss": "^1.2.2",
|
||||
"sass": "^1.90.0",
|
||||
"serve-index": "^1.9.1",
|
||||
"string-strip-html": "^8.3.0",
|
||||
"svg-dimensions": "^1.0.2",
|
||||
|
||||
@@ -83,3 +83,5 @@ Finally, another very common coping mechanism is to find means of escape or ment
|
||||
- Obsessively cleaning one's living space.
|
||||
|
||||
- Sleeping. Lots and lots of sleeping.
|
||||
|
||||
- Drug and alcohol use.
|
||||
|
||||
@@ -142,7 +142,7 @@ lang: zh
|
||||
|
||||
### 请考虑:你的跨性别历程可能和主流说法不同
|
||||
|
||||
*译注:本节已做细微修改,更换不符合中文语境的文化专有项,如drug queen。*
|
||||
*译注:本节已做细微修改,更换不符合中文语境的文化专有项,如drag queen。*
|
||||
|
||||
主流文化认为只该讲述一种跨女的经历:她很年轻,小时候就明确了性别认同,从小喜欢洋娃娃、过家家。她穿姐姐的衣服,自己化妆。她天生长得就很女性化——面部柔和,身高较矮,身材苗条,看着很中性,即便青春期没吃糖,成年了也很pass。她天天穿小裙子,混女装圈。她喜欢男的,可能援交过。
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ tweets:
|
||||
|
||||
世界上充斥着对男女身材样貌的期待。我们被广告和媒体轰炸,从而制造了美与丑的常规标准:不要太胖,不要太瘦,不要太高,不要太矮,下巴不要太宽,鼻子不要太大,要化妆但不要太浓,出门要戴胸罩但不要露出来。社会对以性别划分外貌的期待永远存在。
|
||||
|
||||
每个人都会吸收这些信息,而跨儿会内化与性别认同有关的因素。跨性别女孩在成长过程中将女性标准映射到自己身上,跨性别男孩将男性标准映射到自己身上,而非二元性别往往将两性的羞耻感内化于心。因为没有*达到*某个性别的标准而感到羞耻。
|
||||
每个人都会吸收这些信息,而跨儿会内化认同的性别的外貌期待。那些认同女性气质的在成长过程中将女性标准映射到自己身上,那些认同男性气质的将男性标准映射到自己身上,而非二元性别者可能会将中性相关的羞耻感内化于心。这些还会叠加在无法达到指派性别的标准的羞耻感之上,雪上加霜。
|
||||
|
||||
*译注:从社会视角理解男性气质与女性气质能有效降低身体形象焦虑,能帮你认清自己追求的是什么。例如在 Connell 的男性气质框架下,一部分是理想男性气质(ideal manhood),又再细分为无人可及的评判标准和一系列规范性期待;另一部分是社会实践(social practice),又再细分为人际关系实践和主要社会制度的运行机制。*
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ body.post {
|
||||
|
||||
.post-link {
|
||||
flex: 1;
|
||||
flex-basis: $sidebarWidth / 2;
|
||||
flex-basis: div($sidebarWidth, 2);
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -268,7 +268,7 @@ body.post {
|
||||
position: relative;
|
||||
.post-tags {
|
||||
display: grid;
|
||||
grid-template-columns: repeat( auto-fill, minmax( $sidebarWidth / 2 - 15, 1fr ) );
|
||||
grid-template-columns: repeat( auto-fill, minmax( div($sidebarWidth, 2) - 15, 1fr ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user